[pypy-commit] pypy gc-incminimark-pinning: create a new AddressStack only if needed
groggi
noreply at buildbot.pypy.org
Mon Aug 18 09:55:18 CEST 2014
Author: Gregor Wegberg <code at gregorwegberg.com>
Branch: gc-incminimark-pinning
Changeset: r72866:e9322b528a2c
Date: 2014-08-18 09:54 +0200
http://bitbucket.org/pypy/pypy/changeset/e9322b528a2c/
Log: create a new AddressStack only if needed
diff --git a/rpython/memory/gc/incminimark.py b/rpython/memory/gc/incminimark.py
--- a/rpython/memory/gc/incminimark.py
+++ b/rpython/memory/gc/incminimark.py
@@ -2124,12 +2124,13 @@
#
# get rid of objects pointing to pinned objects that were not
# visited
- new_old_objects_pointing_to_pinned = self.AddressStack()
- self.old_objects_pointing_to_pinned.foreach(
- self._sweep_old_objects_pointing_to_pinned,
- new_old_objects_pointing_to_pinned)
- self.old_objects_pointing_to_pinned.delete()
- self.old_objects_pointing_to_pinned = new_old_objects_pointing_to_pinned
+ if self.old_objects_pointing_to_pinned.non_empty():
+ new_old_objects_pointing_to_pinned = self.AddressStack()
+ self.old_objects_pointing_to_pinned.foreach(
+ self._sweep_old_objects_pointing_to_pinned,
+ new_old_objects_pointing_to_pinned)
+ self.old_objects_pointing_to_pinned.delete()
+ self.old_objects_pointing_to_pinned = new_old_objects_pointing_to_pinned
self.gc_state = STATE_SWEEPING
#END MARKING
elif self.gc_state == STATE_SWEEPING:
More information about the pypy-commit
mailing list