def f(): p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, test.g1a) assert p == test.p1a p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, test.g1b) assert p == test.p1b p = llop.get_group_member(lltype.Ptr(test.S2), grpptr, test.g2a) assert p == test.p2a p = llop.get_group_member(lltype.Ptr(test.S2), grpptr, test.g2b) assert p == test.p2b # p = llop.get_next_group_member(lltype.Ptr(test.S2), grpptr, test.g1a, llmemory.sizeof(test.S1)) assert p == test.p2a p = llop.get_next_group_member(lltype.Ptr(test.S2), grpptr, test.g2a, llmemory.sizeof(test.S2)) assert p == test.p2b p = llop.get_next_group_member(lltype.Ptr(test.S1), grpptr, test.g2b, llmemory.sizeof(test.S2)) assert p == test.p1b # expected = [123, 456] for i in range(2): p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, g1x[i]) assert p.x == expected[i] # for i in range(2): s = llop.extract_ushort(HALFWORD, cslist[i]) p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, s) assert p == test.p1b assert cslist[0] & ~MASK == 0x45 << HALFSHIFT assert cslist[1] & ~MASK == 0x41 << HALFSHIFT assert cslist[0] >> HALFSHIFT == 0x45 assert cslist[1] >> (HALFSHIFT + 1) == 0x41 >> 1 # return 42
def f(): p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, test.g1a) assert p == test.p1a p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, test.g1b) assert p == test.p1b p = llop.get_group_member(lltype.Ptr(test.S2), grpptr, test.g2a) assert p == test.p2a p = llop.get_group_member(lltype.Ptr(test.S2), grpptr, test.g2b) assert p == test.p2b # p = llop.get_next_group_member(lltype.Ptr(test.S2), grpptr, test.g1a, llmemory.sizeof(test.S1)) assert p == test.p2a p = llop.get_next_group_member(lltype.Ptr(test.S2), grpptr, test.g2a, llmemory.sizeof(test.S2)) assert p == test.p2b p = llop.get_next_group_member(lltype.Ptr(test.S1), grpptr, test.g2b, llmemory.sizeof(test.S2)) assert p == test.p1b # expected = [123, 456] for i in range(2): p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, g1x[i]) assert p.x == expected[i] # for i in range(2): s = llop.extract_ushort(HALFWORD, cslist[i]) p = llop.get_group_member(lltype.Ptr(test.S1), grpptr, s) assert p == test.p1b assert cslist[0] & ~MASK == 0x45 << HALFSHIFT assert cslist[1] & ~MASK == 0x41 << HALFSHIFT assert cslist[0] >> HALFSHIFT == 0x45 assert cslist[1] >> (HALFSHIFT+1) == 0x41 >> 1 # return 42
def test_layout_builder_with_vtable(): from rpython.rtyper.lltypesystem.lloperation import llop vtable = lltype.malloc(rclass.OBJECT_VTABLE, immortal=True) layoutbuilder = test_layout_builder({GC_S: vtable}) tid1 = layoutbuilder.get_type_id(GC_S) tid2 = layoutbuilder.get_type_id(GC_S2) tid3 = layoutbuilder.get_type_id(GC_S3) group = layoutbuilder.type_info_group vt = llop.get_next_group_member(rclass.CLASSTYPE, group._as_ptr(), tid1, layoutbuilder.size_of_fixed_type_info) assert vt == vtable for tid in [tid2, tid3]: py.test.raises((lltype.InvalidCast, AssertionError), llop.get_next_group_member, rclass.CLASSTYPE, group._as_ptr(), tid, layoutbuilder.size_of_fixed_type_info)