[pypy-commit] pypy default: Give the walk_roots operation during a nursery collection its own

arigo noreply at buildbot.pypy.org
Tue Oct 18 20:04:09 CEST 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r48213:5fcf5ac416dc
Date: 2011-10-18 20:03 +0200
http://bitbucket.org/pypy/pypy/changeset/5fcf5ac416dc/

Log:	Give the walk_roots operation during a nursery collection its own
	starting/ending subtime. When running "translate.py --annotate", it
	is found to take 15% of the time of nursery collections (not really
	enough to care). For reference, the times are:

	 12.4% gc-minor including 1.9% gc-minor-walkroots 6.5%
	gc-collect (i.e. major collections)

diff --git a/pypy/rpython/memory/gc/minimark.py b/pypy/rpython/memory/gc/minimark.py
--- a/pypy/rpython/memory/gc/minimark.py
+++ b/pypy/rpython/memory/gc/minimark.py
@@ -1292,10 +1292,12 @@
         # if a prebuilt GcStruct contains a pointer to a young object,
         # then the write_barrier must have ensured that the prebuilt
         # GcStruct is in the list self.old_objects_pointing_to_young.
+        debug_start("gc-minor-walkroots")
         self.root_walker.walk_roots(
             MiniMarkGC._trace_drag_out1,  # stack roots
             MiniMarkGC._trace_drag_out1,  # static in prebuilt non-gc
             None)                         # static in prebuilt gc
+        debug_stop("gc-minor-walkroots")
 
     def collect_cardrefs_to_nursery(self):
         size_gc_header = self.gcheaderbuilder.size_gc_header


More information about the pypy-commit mailing list