summaryrefslogtreecommitdiff
path: root/includes/Storage.h
diff options
context:
space:
mode:
authorSimon Marlow <simonmarhaskell@gmail.com>2008-04-16 23:44:20 +0000
committerSimon Marlow <simonmarhaskell@gmail.com>2008-04-16 23:44:20 +0000
commit200c73fdfea734765c48309cc8dcbcf44b69c8c5 (patch)
tree3c2368de05e5050dede56981076c7a9bbfcea457 /includes/Storage.h
parent233a468745d108ea845e0898e4177df2c3734fc0 (diff)
downloadhaskell-200c73fdfea734765c48309cc8dcbcf44b69c8c5.tar.gz
Don't traverse the entire list of threads on every GC (phase 1)
Instead of keeping a single list of all threads, keep one per step and only look at the threads belonging to steps that we are collecting.
Diffstat (limited to 'includes/Storage.h')
-rw-r--r--includes/Storage.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/includes/Storage.h b/includes/Storage.h
index 90e364cbc4..c9cbd9c5e9 100644
--- a/includes/Storage.h
+++ b/includes/Storage.h
@@ -69,6 +69,8 @@ typedef struct step_ {
bdescr * large_objects; // large objects (doubly linked)
unsigned int n_large_blocks; // no. of blocks used by large objs
+ StgTSO * threads; // threads in this step
+ // linked via global_link
// ------------------------------------
// Fields below are used during GC only
@@ -100,6 +102,7 @@ typedef struct step_ {
bdescr * bitmap; // bitmap for compacting collection
+ StgTSO * old_threads;
} step;