summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2014-11-04 21:32:12 +0000
committerSimon Marlow <marlowsd@gmail.com>2014-11-05 18:13:50 +0000
commite6b38294512896cf55f2d05d09d742d82313f598 (patch)
treec63198c387cb23eb9de2df8fb62dcd04e43d7611 /rts
parent3bebf3c2d92e6defc6d17ffa237cc4a9cad71dcf (diff)
downloadhaskell-e6b38294512896cf55f2d05d09d742d82313f598.tar.gz
Disable an assertion; see comment
Diffstat (limited to 'rts')
-rw-r--r--rts/Interpreter.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/rts/Interpreter.c b/rts/Interpreter.c
index 501cc4fe4f..8a608ec1ba 100644
--- a/rts/Interpreter.c
+++ b/rts/Interpreter.c
@@ -80,9 +80,15 @@
SpLim = tso_SpLim(cap->r.rCurrentTSO);
#define SAVE_STACK_POINTERS \
- ASSERT(Sp > SpLim); \
cap->r.rCurrentTSO->stackobj->sp = Sp
+// Note [Not true: ASSERT(Sp > SpLim)]
+//
+// SpLim has some headroom (RESERVED_STACK_WORDS) to allow for saving
+// any necessary state on the stack when returning to the scheduler
+// when a stack check fails.. The upshot of this is that Sp could be
+// less than SpLim both when leaving to return to the scheduler.
+
#define RETURN_TO_SCHEDULER(todo,retcode) \
SAVE_STACK_POINTERS; \
cap->r.rCurrentTSO->what_next = (todo); \