projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
GC refactoring: change evac_gen to evac_step
[ghc-hetmet.git]
/
rts
/
sm
/
GC.h
diff --git
a/rts/sm/GC.h
b/rts/sm/GC.h
index
69fdc10
..
d45efb9
100644
(file)
--- a/
rts/sm/GC.h
+++ b/
rts/sm/GC.h
@@
-110,6
+110,10
@@
typedef struct step_workspace_ {
typedef struct gc_thread_ {
#ifdef THREADED_RTS
OSThreadId id; // The OS thread that this struct belongs to
typedef struct gc_thread_ {
#ifdef THREADED_RTS
OSThreadId id; // The OS thread that this struct belongs to
+ Mutex wake_mutex;
+ Condition wake_cond; // So we can go to sleep between GCs
+ rtsBool wakeup;
+ rtsBool exit;
#endif
nat thread_index; // a zero based index identifying the thread
#endif
nat thread_index; // a zero based index identifying the thread
@@
-124,7
+128,7
@@
typedef struct gc_thread_ {
// --------------------
// evacuate flags
// --------------------
// evacuate flags
- nat evac_gen; // Youngest generation that objects
+ step *evac_step; // Youngest generation that objects
// should be evacuated to in
// evacuate(). (Logically an
// argument to evacuate, but it's
// should be evacuated to in
// evacuate(). (Logically an
// argument to evacuate, but it's
@@
-148,7
+152,8
@@
extern nat N;
extern rtsBool major_gc;
extern gc_thread *gc_threads;
extern rtsBool major_gc;
extern gc_thread *gc_threads;
-extern gc_thread *gct; // this thread's gct TODO: make thread-local
+register gc_thread *gct __asm__("%rbx");
+// extern gc_thread *gct; // this thread's gct TODO: make thread-local
extern StgClosure* static_objects;
extern StgClosure* scavenged_static_objects;
extern StgClosure* static_objects;
extern StgClosure* scavenged_static_objects;
@@
-165,6
+170,10
@@
extern StgPtr oldgen_scan;
extern long copied;
extern long scavd_copied;
extern long copied;
extern long scavd_copied;
+#ifdef THREADED_RTS
+extern SpinLock static_objects_sync;
+#endif
+
#ifdef DEBUG
extern nat mutlist_MUTVARS, mutlist_MUTARRS, mutlist_MVARS, mutlist_OTHERS;
#endif
#ifdef DEBUG
extern nat mutlist_MUTVARS, mutlist_MUTARRS, mutlist_MVARS, mutlist_OTHERS;
#endif