[pypy-commit] pypy gc-incminimark-pinning: generalize previously added test and use it to get two tests
groggi
noreply at buildbot.pypy.org
Sat Jul 26 16:47:51 CEST 2014
Author: Gregor Wegberg <code at gregorwegberg.com>
Branch: gc-incminimark-pinning
Changeset: r72525:4aa9c7ae56dd
Date: 2014-07-13 13:13 +0200
http://bitbucket.org/pypy/pypy/changeset/4aa9c7ae56dd/
Log: generalize previously added test and use it to get two tests
previouse test added in 513744aa7a905300b7389cd1c3724c0150762ee4
diff --git a/rpython/memory/gc/test/test_object_pinning.py b/rpython/memory/gc/test/test_object_pinning.py
--- a/rpython/memory/gc/test/test_object_pinning.py
+++ b/rpython/memory/gc/test/test_object_pinning.py
@@ -149,22 +149,25 @@
self.gc.collect()
assert self.stackroots[0].next.someInt == 100
- def test_old_and_stackroots_point_to_pinned(self):
+ def not_pinned_and_stackroots_point_to_pinned(self, make_old):
# In this test case we point to a pinned object from an old object
# *and* from the stackroots
- old_ptr = self.malloc(S)
- old_ptr.someInt = 999
- self.stackroots.append(old_ptr)
- self.gc.collect() # old_ptr is now old
- old_ptr = self.stackroots[0]
- assert not self.gc.is_in_nursery(llmemory.cast_ptr_to_adr(old_ptr))
+ obj_ptr = self.malloc(S)
+ obj_ptr.someInt = 999
+ self.stackroots.append(obj_ptr)
+ if make_old:
+ self.gc.collect() # old_ptr is now old
+ obj_ptr = self.stackroots[0]
+ assert not self.gc.is_in_nursery(llmemory.cast_ptr_to_adr(obj_ptr))
+ else:
+ assert self.gc.is_in_nursery(llmemory.cast_ptr_to_adr(obj_ptr))
pinned_ptr = self.malloc(S)
pinned_ptr.someInt = 111
assert self.gc.pin(llmemory.cast_ptr_to_adr(pinned_ptr))
self.stackroots.append(pinned_ptr)
- self.write(old_ptr, 'next', pinned_ptr)
+ self.write(obj_ptr, 'next', pinned_ptr)
self.gc.collect()
# done with preparation. do some basic checks
@@ -172,6 +175,12 @@
assert pinned_ptr.someInt == 111
assert self.stackroots[0].next == pinned_ptr
+ def test_old_and_stackroots_point_to_pinned(self):
+ self.not_pinned_and_stackroots_point_to_pinned(make_old=True)
+
+ def test_young_and_stackroots_point_to_pinned(self):
+ self.not_pinned_and_stackroots_point_to_pinned(make_old=False)
+
def test_pin_old(self):
ptr = self.malloc(S)
ptr.someInt = 100
More information about the pypy-commit
mailing list