diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-11-18 14:24:42 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-11-18 14:24:42 +0000 |
commit | d600bf7a6afdbfc4a22f9379406a9c6f789a4c2d (patch) | |
tree | fc86da89b8891374298c441d14d2333b33e29d53 /rts/sm | |
parent | 0fa59deb44b8a1a0b44ee2b4cc4ae0db31dec038 (diff) | |
download | haskell-d600bf7a6afdbfc4a22f9379406a9c6f789a4c2d.tar.gz |
Add optional eager black-holing, with new flag -feager-blackholing
Eager blackholing can improve parallel performance by reducing the
chances that two threads perform the same computation. However, it
has a cost: one extra memory write per thunk entry.
To get the best results, any code which may be executed in parallel
should be compiled with eager blackholing turned on. But since
there's a cost for sequential code, we make it optional and turn it on
for the parallel package only. It might be a good idea to compile
applications (or modules) with parallel code in with
-feager-blackholing.
ToDo: document -feager-blackholing.
Diffstat (limited to 'rts/sm')
-rw-r--r-- | rts/sm/Compact.c | 2 | ||||
-rw-r--r-- | rts/sm/Evac.c | 4 | ||||
-rw-r--r-- | rts/sm/Scav.c | 6 |
3 files changed, 0 insertions, 12 deletions
diff --git a/rts/sm/Compact.c b/rts/sm/Compact.c index b43c0ea532..fcd7cb16ed 100644 --- a/rts/sm/Compact.c +++ b/rts/sm/Compact.c @@ -621,8 +621,6 @@ thread_obj (StgInfoTable *info, StgPtr p) case MUT_VAR_CLEAN: case MUT_VAR_DIRTY: case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: { StgPtr end; diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c index 736c6c8d88..bbb7fe5795 100644 --- a/rts/sm/Evac.c +++ b/rts/sm/Evac.c @@ -626,8 +626,6 @@ loop: return; case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: copyPart(p,q,BLACKHOLE_sizeW(),sizeofW(StgHeader),stp); return; @@ -1038,8 +1036,6 @@ selector_loop: case THUNK_0_2: case THUNK_STATIC: case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: // not evaluated yet goto bale_out; diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c index b8fb54bfcd..24f19c93e1 100644 --- a/rts/sm/Scav.c +++ b/rts/sm/Scav.c @@ -504,8 +504,6 @@ scavenge_block (bdescr *bd) break; case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: p += BLACKHOLE_sizeW(); break; @@ -881,8 +879,6 @@ linear_scan: } case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: case ARR_WORDS: break; @@ -1197,8 +1193,6 @@ scavenge_one(StgPtr p) } case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: break; |