[pypy-commit] pypy gc-incminimark-pinning: add test with two pinned objects and a non-pinned in between
groggi
noreply at buildbot.pypy.org
Mon Jun 30 16:11:08 CEST 2014
Author: Gregor Wegberg <code at gregorwegberg.com>
Branch: gc-incminimark-pinning
Changeset: r72288:719bf1e31183
Date: 2014-06-25 18:41 +0200
http://bitbucket.org/pypy/pypy/changeset/719bf1e31183/
Log: add test with two pinned objects and a non-pinned in between
diff --git a/rpython/jit/backend/llsupport/test/test_object_pinning_rewrite.py b/rpython/jit/backend/llsupport/test/test_object_pinning_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_object_pinning_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_object_pinning_rewrite.py
@@ -40,6 +40,11 @@
pinned_obj_gcref = lltype.cast_opaque_ptr(llmemory.GCREF, pinned_obj_ptr)
assert rgc.pin(pinned_obj_gcref)
#
+ notpinned_obj_type = lltype.GcStruct('NOT_PINNED_STRUCT', ('my_int', lltype.Signed))
+ notpinned_obj_my_int_descr = get_field_descr(self.gc_ll_descr, notpinned_obj_type, 'my_int')
+ notpinned_obj_ptr = lltype.malloc(notpinned_obj_type)
+ notpinned_obj_gcref = lltype.cast_opaque_ptr(llmemory.GCREF, notpinned_obj_ptr)
+ #
ref_array_descr = self.cpu.arraydescrof(PinnedObjectTracker._ref_array_type)
#
vtable_descr = self.gc_ll_descr.fielddescr_vtable
@@ -125,3 +130,18 @@
p1 = getarrayitem_gc(ConstPtr(ref_array_gcref), 0, descr=ref_array_descr)
i0 = getfield_gc(p1, descr=pinned_obj_my_int_descr)
""")
+
+ def test_simple_getfield_twice(self):
+ self.check_rewrite("""
+ []
+ i0 = getfield_gc(ConstPtr(pinned_obj_gcref), descr=pinned_obj_my_int_descr)
+ i1 = getfield_gc(ConstPtr(notpinned_obj_gcref), descr=notpinned_obj_my_int_descr)
+ i2 = getfield_gc(ConstPtr(pinned_obj_gcref), descr=pinned_obj_my_int_descr)
+ """, """
+ []
+ p1 = getarrayitem_gc(ConstPtr(ref_array_gcref), 0, descr=ref_array_descr)
+ i0 = getfield_gc(p1, descr=pinned_obj_my_int_descr)
+ i1 = getfield_gc(ConstPtr(notpinned_obj_gcref), descr=notpinned_obj_my_int_descr)
+ p2 = getarrayitem_gc(ConstPtr(ref_array_gcref), 1, descr=ref_array_descr)
+ i2 = getfield_gc(p2, descr=pinned_obj_my_int_descr)
+ """)
More information about the pypy-commit
mailing list