summaryrefslogtreecommitdiff
path: root/rts/sm/GCUtils.h
diff options
context:
space:
mode:
authorSimon Marlow <simonmarhaskell@gmail.com>2008-04-16 22:03:47 +0000
committerSimon Marlow <simonmarhaskell@gmail.com>2008-04-16 22:03:47 +0000
commitdbbf15c0f141357aa49b583286174867baadb821 (patch)
treecbe7320ab2f07b2695e515d165efe45f060732a6 /rts/sm/GCUtils.h
parent4b123ceba0c0a2f72494479a03ac9c94b6166c92 (diff)
downloadhaskell-dbbf15c0f141357aa49b583286174867baadb821.tar.gz
Allow work units smaller than a block to improve load balancing
Diffstat (limited to 'rts/sm/GCUtils.h')
-rw-r--r--rts/sm/GCUtils.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/rts/sm/GCUtils.h b/rts/sm/GCUtils.h
index a121dbd38c..34657c23d3 100644
--- a/rts/sm/GCUtils.h
+++ b/rts/sm/GCUtils.h
@@ -20,18 +20,18 @@ extern SpinLock gc_alloc_block_sync;
bdescr *allocBlock_sync(void);
void freeChain_sync(bdescr *bd);
-void push_scan_block (bdescr *bd, step_workspace *ws);
+void push_scanned_block (bdescr *bd, step_workspace *ws);
bdescr *grab_todo_block (step_workspace *ws);
-StgPtr gc_alloc_todo_block (step_workspace *ws);
-bdescr *gc_alloc_scavd_block (step_workspace *ws);
+StgPtr todo_block_full (nat size, step_workspace *ws);
+StgPtr alloc_todo_block (step_workspace *ws, nat size);
-// Returns true if a block is 3/4 full. This predicate is used to try
+// Returns true if a block is partially full. This predicate is used to try
// to re-use partial blocks wherever possible, and to reduce wastage.
// We might need to tweak the actual value.
INLINE_HEADER rtsBool
isPartiallyFull(bdescr *bd)
{
- return (bd->free + BLOCK_SIZE_W/4 < bd->start + BLOCK_SIZE_W);
+ return (bd->free + WORK_UNIT_WORDS < bd->start + BLOCK_SIZE_W);
}