diff options
author | Simon Marlow <simonmarhaskell@gmail.com> | 2008-04-16 22:03:47 +0000 |
---|---|---|
committer | Simon Marlow <simonmarhaskell@gmail.com> | 2008-04-16 22:03:47 +0000 |
commit | dbbf15c0f141357aa49b583286174867baadb821 (patch) | |
tree | cbe7320ab2f07b2695e515d165efe45f060732a6 /rts/sm/GCUtils.h | |
parent | 4b123ceba0c0a2f72494479a03ac9c94b6166c92 (diff) | |
download | haskell-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.h | 10 |
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); } |