diff options
Diffstat (limited to 'rts/StgMiscClosures.cmm')
-rw-r--r-- | rts/StgMiscClosures.cmm | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/rts/StgMiscClosures.cmm b/rts/StgMiscClosures.cmm index dd2570617d..e3be2cb697 100644 --- a/rts/StgMiscClosures.cmm +++ b/rts/StgMiscClosures.cmm @@ -355,17 +355,12 @@ retry: } } -INFO_TABLE(__stg_EAGER_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE") - (P_ node) -{ - jump ENTRY_LBL(stg_BLACKHOLE) (node); -} - // CAF_BLACKHOLE is allocated when entering a CAF. The reason it is // distinct from BLACKHOLE is so that we can tell the difference // between an update frame on the stack that points to a CAF under // evaluation, and one that points to a closure that is under -// evaluation by another thread (a BLACKHOLE). See threadPaused(). +// evaluation by another thread (a BLACKHOLE). see Note [suspend +// duplicate work] in ThreadPaused.c // INFO_TABLE(stg_CAF_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE") (P_ node) @@ -373,6 +368,13 @@ INFO_TABLE(stg_CAF_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE") jump ENTRY_LBL(stg_BLACKHOLE) (node); } +// EAGER_BLACKHOLE exists for the same reason as CAF_BLACKHOLE (see above). +INFO_TABLE(__stg_EAGER_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE") + (P_ node) +{ + jump ENTRY_LBL(stg_BLACKHOLE) (node); +} + INFO_TABLE(stg_BLOCKING_QUEUE_CLEAN,4,0,BLOCKING_QUEUE,"BLOCKING_QUEUE","BLOCKING_QUEUE") { foreign "C" barf("BLOCKING_QUEUE_CLEAN object entered!") never returns; } |