[svn:parrot] r49676 - branches/generational_gc/src/gc

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Oct 25 20:04:40 UTC 2010


Author: bacek
Date: Mon Oct 25 20:04:40 2010
New Revision: 49676
URL: https://trac.parrot.org/parrot/changeset/49676

Log:
Use combination of Pool.is_maybe_owned and PObj flags in GC.is_*_ptr.

This gives about 30% speed up on stress_strings by avoiding expensive
testing of all live objects.

Modified:
   branches/generational_gc/src/gc/gc_ms2.c

Modified: branches/generational_gc/src/gc/gc_ms2.c
==============================================================================
--- branches/generational_gc/src/gc/gc_ms2.c	Mon Oct 25 20:04:29 2010	(r49675)
+++ branches/generational_gc/src/gc/gc_ms2.c	Mon Oct 25 20:04:40 2010	(r49676)
@@ -1723,13 +1723,16 @@
     if (!obj || !item)
         return 0;
 
-    if (!Parrot_gc_pool_is_owned(interp, pool, item))
+    if (!Parrot_gc_pool_is_maybe_owned(interp, pool, item))
         return 0;
 
     /* black or white objects marked already. */
     if (PObj_is_live_or_free_TESTALL(obj))
         return 0;
 
+    if (!Parrot_gc_pool_is_owned(interp, pool, item))
+        return 0;
+
     /* Pool.is_owned isn't precise enough (yet) */
     if (Parrot_list_contains(interp, list, item))
         return 1;


More information about the parrot-commits mailing list