Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
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)
Esempio n. 4
0
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)