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

Reply via email to