Commit 760b9a36 authored by Ben Gamari's avatar Ben Gamari Committed by Ben Gamari

rts: Set unwind information for remaining stack frames

Reviewers: austin, erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3985
parent feac0a3b
......@@ -110,6 +110,7 @@ INFO_TABLE_RET(stg_unmaskAsyncExceptionszh_ret, RET_SMALL, W_ info_ptr)
INFO_TABLE_RET(stg_maskAsyncExceptionszh_ret, RET_SMALL, W_ info_ptr)
return (P_ ret)
{
unwind Sp = Sp + WDS(1);
StgTSO_flags(CurrentTSO) =
%lobits32(
TO_W_(StgTSO_flags(CurrentTSO))
......@@ -122,6 +123,7 @@ INFO_TABLE_RET(stg_maskAsyncExceptionszh_ret, RET_SMALL, W_ info_ptr)
INFO_TABLE_RET(stg_maskUninterruptiblezh_ret, RET_SMALL, W_ info_ptr)
return (P_ ret)
{
unwind Sp = Sp + WDS(1);
StgTSO_flags(CurrentTSO) =
%lobits32(
(TO_W_(StgTSO_flags(CurrentTSO))
......@@ -430,6 +432,7 @@ section "data" {
INFO_TABLE_RET(stg_raise_ret, RET_SMALL, W_ info_ptr, P_ exception)
return (P_ ret)
{
unwind Sp = Sp + WDS(2);
W_[no_break_on_exception] = 1;
jump stg_raisezh (exception);
}
......
......@@ -1004,6 +1004,7 @@ INFO_TABLE_RET(stg_catch_retry_frame, CATCH_RETRY_FRAME,
alt_code))
return (P_ ret)
{
unwind Sp = Sp + SIZEOF_StgCatchRetryFrame;
W_ r;
gcptr trec, outer, arg;
......
......@@ -26,7 +26,7 @@ INFO_TABLE_RET (stg_stack_underflow_frame, UNDERFLOW_FRAME,
W_ info_ptr, P_ unused)
/* no args => explicit stack */
{
unwind UnwindReturnReg = return;
unwind Sp = W_[Sp + WDS(2)];
W_ new_tso;
W_ ret_off;
......@@ -61,6 +61,7 @@ INFO_TABLE_RET (stg_restore_cccs, RET_SMALL, W_ info_ptr, W_ cccs)
INFO_TABLE_RET (stg_restore_cccs_eval, RET_SMALL, W_ info_ptr, W_ cccs)
return (P_ ret)
{
unwind Sp = Sp + WDS(2);
#if defined(PROFILING)
CCCS = cccs;
#endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment