diff --git a/rts/Stats.c b/rts/Stats.c index 6029745368f6a967377e8ed47e7cf8884ff8b247..4acdddab59b8d9d2f2923cea0d55d4618b5b0d4f 100644 --- a/rts/Stats.c +++ b/rts/Stats.c @@ -15,7 +15,7 @@ #include "Profiling.h" #include "GetTime.h" #include "sm/Storage.h" -#include "sm/GC.h" // gc_alloc_block_sync, whitehole_spin +#include "sm/GC.h" // gc_alloc_block_sync, evac_collision #if USE_PAPI #include "Papi.h" @@ -704,7 +704,7 @@ stat_exit(int alloc) nat g, s; statsPrintf("gc_alloc_block_sync: %"FMT_Word64"\n", gc_alloc_block_sync.spin); - statsPrintf("whitehole_spin: %"FMT_Word64"\n", whitehole_spin); + statsPrintf("evac_collision: %"FMT_Word64"\n", evac_collision); for (g = 0; g < RtsFlags.GcFlags.generations; g++) { for (s = 0; s < generations[g].n_steps; s++) { statsPrintf("gen[%d].steps[%d].sync_large_objects: %"FMT_Word64"\n", g, s, generations[g].steps[s].sync_large_objects.spin); diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c index b7119148c81f35a913275662779d25bd82b15ac6..c40d18b29549a96118fa2e2400b7c2db3725ef13 100644 --- a/rts/sm/Evac.c +++ b/rts/sm/Evac.c @@ -25,7 +25,7 @@ #include "LdvProfile.h" #if defined(PROF_SPIN) && defined(THREADED_RTS) && defined(PARALLEL_GC) -StgWord64 whitehole_spin = 0; +StgWord64 evac_collision = 0; #endif #if defined(THREADED_RTS) && !defined(PARALLEL_GC) @@ -115,7 +115,10 @@ copy_tag(StgClosure **p, const StgInfoTable *info, new_info = (const StgInfoTable *)cas((StgPtr)&src->header.info, (W_)info, MK_FORWARDING_PTR(to)); if (new_info != info) { - return evacuate(p); // does the failed_to_evac stuff +#if defined(PROF_SPIN) + evac_collision++; +#endif + evacuate(p); // does the failed_to_evac stuff } else { *p = TAG_CLOSURE(tag,(StgClosure*)to); } @@ -191,6 +194,9 @@ copyPart(StgClosure **p, const StgInfoTable *info, StgClosure *src, new_info = (const StgInfoTable *)cas((StgPtr)&src->header.info, (W_)info, MK_FORWARDING_PTR(to)); if (new_info != info) { +#if defined(PROF_SPIN) + evac_collision++; +#endif evacuate(p); // does the failed_to_evac stuff return rtsFalse; } else { diff --git a/rts/sm/GC.h b/rts/sm/GC.h index e746f092e503b32f7b2d66de98ec4464b38b279e..675d3234ab3b6e4e50353c691500d600eee47ec5 100644 --- a/rts/sm/GC.h +++ b/rts/sm/GC.h @@ -42,7 +42,7 @@ extern nat mutlist_MUTVARS, mutlist_MUTARRS, mutlist_MVARS, mutlist_OTHERS; #endif #if defined(PROF_SPIN) && defined(THREADED_RTS) -extern StgWord64 whitehole_spin; +extern StgWord64 evac_collision; #endif void gcWorkerThread (Capability *cap); diff --git a/rts/sm/Storage.c b/rts/sm/Storage.c index 59a41b05023dc93a525ccd37af7ca2b86dfffc43..19ccdfb879610e7c7a97bff97ef6bed894d63d0f 100644 --- a/rts/sm/Storage.c +++ b/rts/sm/Storage.c @@ -253,7 +253,7 @@ initStorage( void ) #ifdef THREADED_RTS initSpinLock(&gc_alloc_block_sync); - whitehole_spin = 0; + evac_collision = 0; #endif N = 0;