summaryrefslogtreecommitdiff
path: root/rts/Exception.cmm
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2008-05-23 03:25:08 +0000
committerIan Lynagh <igloo@earth.li>2008-05-23 03:25:08 +0000
commit579bc757533c8c9e5beabe5b21daddd922c1af75 (patch)
treedd825adde758b37f2cb4bf7cc7de5032485f3ac3 /rts/Exception.cmm
parent6bc54d1524cd6d10a978bef89bc6a8f0061adb66 (diff)
downloadhaskell-579bc757533c8c9e5beabe5b21daddd922c1af75.tar.gz
Do some stack fiddling in stg_unblockAsyncExceptionszh_ret
This fixes a segfault in #1657
Diffstat (limited to 'rts/Exception.cmm')
-rw-r--r--rts/Exception.cmm8
1 files changed, 8 insertions, 0 deletions
diff --git a/rts/Exception.cmm b/rts/Exception.cmm
index daa8e4fd7f..75f2c15d93 100644
--- a/rts/Exception.cmm
+++ b/rts/Exception.cmm
@@ -73,6 +73,14 @@ INFO_TABLE_RET( stg_unblockAsyncExceptionszh_ret, RET_SMALL )
*/
Sp_adj(1);
#endif
+ STK_CHK_GEN( WDS(2), R1_PTR, stg_unblockAsyncExceptionszh_ret_info);
+ Sp_adj(-2);
+ Sp(1) = R1;
+#ifdef REG_R1
+ Sp(0) = stg_gc_unpt_r1_info;
+#else
+ Sp(0) = stg_ut_1_0_unreg_info;
+#endif
SAVE_THREAD_STATE();
(r) = foreign "C" maybePerformBlockedException (MyCapability() "ptr",
CurrentTSO "ptr") [R1];