Author: Gregor Wegberg <[email protected]>
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:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit