projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
traverse the spark pools only once during GC rather than twice
[ghc-hetmet.git]
/
rts
/
sm
/
GC.c
diff --git
a/rts/sm/GC.c
b/rts/sm/GC.c
index
ef0c79a
..
5cd1298
100644
(file)
--- a/
rts/sm/GC.c
+++ b/
rts/sm/GC.c
@@
-335,7
+335,8
@@
GarbageCollect ( rtsBool force_major_gc )
// follow all the roots that the application knows about.
gct->evac_step = 0;
// follow all the roots that the application knows about.
gct->evac_step = 0;
- markSomeCapabilities(mark_root, gct, gct->thread_index, n_gc_threads);
+ markSomeCapabilities(mark_root, gct, gct->thread_index, n_gc_threads,
+ rtsTrue/*prune sparks*/);
#if defined(RTS_USER_SIGNALS)
// mark the signal handlers (signals should be already blocked)
#if defined(RTS_USER_SIGNALS)
// mark the signal handlers (signals should be already blocked)
@@
-1004,7
+1005,8
@@
gc_thread_work (void)
// Every thread evacuates some roots.
gct->evac_step = 0;
// Every thread evacuates some roots.
gct->evac_step = 0;
- markSomeCapabilities(mark_root, gct, gct->thread_index, n_gc_threads);
+ markSomeCapabilities(mark_root, gct, gct->thread_index, n_gc_threads,
+ rtsTrue/*prune sparks*/);
scavenge_until_all_done();
}
scavenge_until_all_done();
}