X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FGC.h;h=675d3234ab3b6e4e50353c691500d600eee47ec5;hb=91a5df02a15c0a06b1d4a36a569e41b0624a1185;hp=92e87d1bee9f552f8a3dee5d0a33b521c05d396e;hpb=f86e7206ea94b48b94fb61007a1c5d55b8c60f45;p=ghc-hetmet.git diff --git a/rts/sm/GC.h b/rts/sm/GC.h index 92e87d1..675d323 100644 --- a/rts/sm/GC.h +++ b/rts/sm/GC.h @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------------- * - * (c) The GHC Team 1998-2006 + * (c) The GHC Team 1998-2008 * * Generational garbage collector * @@ -11,8 +11,15 @@ * * ---------------------------------------------------------------------------*/ -#ifndef GC_H -#define GC_H +#ifndef SM_GC_H +#define SM_GC_H + +void GarbageCollect(rtsBool force_major_gc, nat gc_type, Capability *cap); + +typedef void (*evac_fn)(void *user, StgClosure **root); + +StgClosure * isAlive ( StgClosure *p ); +void markCAFs ( evac_fn evac, void *user ); extern nat N; extern rtsBool major_gc; @@ -28,20 +35,25 @@ extern StgPtr oldgen_scan; extern long copied; +extern rtsBool work_stealing; + #ifdef DEBUG extern nat mutlist_MUTVARS, mutlist_MUTARRS, mutlist_MVARS, mutlist_OTHERS; #endif -extern void markSomeCapabilities (evac_fn evac, void *user, nat i0, nat delta); - -#ifdef THREADED_RTS -extern SpinLock gc_alloc_block_sync; +#if defined(PROF_SPIN) && defined(THREADED_RTS) +extern StgWord64 evac_collision; #endif -#if defined(PROF_SPIN) && defined(THREADED_RTS) -StgWord64 whitehole_spin; +void gcWorkerThread (Capability *cap); +void initGcThreads (void); +void freeGcThreads (void); + +#if defined(THREADED_RTS) +void waitForGcThreads (Capability *cap); +void releaseGCThreads (Capability *cap); #endif #define WORK_UNIT_WORDS 128 -#endif /* GC_H */ +#endif /* SM_GC_H */