From 41bfdf710742595e6043d9b851e8dab30ffe6d2f Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 24 Sep 2010 15:02:02 +0000 Subject: [PATCH] remove unnecessary stg_noForceIO (#3508) --- rts/Exception.cmm | 7 +++---- rts/Interpreter.c | 12 +++--------- rts/RtsAPI.c | 1 - rts/StgStartup.cmm | 16 ---------------- 4 files changed, 6 insertions(+), 30 deletions(-) diff --git a/rts/Exception.cmm b/rts/Exception.cmm index 7d1bf39..f85e2e9 100644 --- a/rts/Exception.cmm +++ b/rts/Exception.cmm @@ -494,10 +494,9 @@ retry_pop_stack: // be per-thread. CInt[rts_stop_on_exception] = 0; ("ptr" ioAction) = foreign "C" deRefStablePtr (W_[rts_breakpoint_io_action] "ptr") []; - Sp = Sp - WDS(7); - Sp(6) = exception; - Sp(5) = stg_raise_ret_info; - Sp(4) = stg_noforceIO_info; // required for unregisterised + Sp = Sp - WDS(6); + Sp(5) = exception; + Sp(4) = stg_raise_ret_info; Sp(3) = exception; // the AP_STACK Sp(2) = ghczmprim_GHCziBool_True_closure; // dummy breakpoint info Sp(1) = ghczmprim_GHCziBool_True_closure; // True <=> a breakpoint diff --git a/rts/Interpreter.c b/rts/Interpreter.c index 5a564ba..9a38a7e 100644 --- a/rts/Interpreter.c +++ b/rts/Interpreter.c @@ -884,21 +884,15 @@ run_BCO: // in a reasonable state for the GC and so that // execution of this BCO can continue when we resume ioAction = (StgClosure *) deRefStablePtr (rts_breakpoint_io_action); - Sp -= 9; - Sp[8] = (W_)obj; - Sp[7] = (W_)&stg_apply_interp_info; - Sp[6] = (W_)&stg_noforceIO_info; // see [unreg] below + Sp -= 8; + Sp[7] = (W_)obj; + Sp[6] = (W_)&stg_apply_interp_info; Sp[5] = (W_)new_aps; // the AP_STACK Sp[4] = (W_)BCO_PTR(arg3_freeVars); // the info about local vars of the breakpoint Sp[3] = (W_)False_closure; // True <=> a breakpoint Sp[2] = (W_)&stg_ap_pppv_info; Sp[1] = (W_)ioAction; // apply the IO action to its two arguments above Sp[0] = (W_)&stg_enter_info; // get ready to run the IO action - // Note [unreg]: in unregisterised mode, the return - // convention for IO is different. The - // stg_noForceIO_info stack frame is necessary to - // account for this difference. - // set the flag in the TSO to say that we are now // stopping at a breakpoint so that when we resume // we don't stop on the same breakpoint that we diff --git a/rts/RtsAPI.c b/rts/RtsAPI.c index fb9c010..53628dc 100644 --- a/rts/RtsAPI.c +++ b/rts/RtsAPI.c @@ -394,7 +394,6 @@ createIOThread (Capability *cap, nat stack_size, StgClosure *closure) { StgTSO *t; t = createThread (cap, stack_size); - pushClosure(t, (W_)&stg_noforceIO_info); pushClosure(t, (W_)&stg_ap_v_info); pushClosure(t, (W_)closure); pushClosure(t, (W_)&stg_enter_info); diff --git a/rts/StgStartup.cmm b/rts/StgStartup.cmm index c3c0bc3..f8940c4 100644 --- a/rts/StgStartup.cmm +++ b/rts/StgStartup.cmm @@ -151,22 +151,6 @@ INFO_TABLE_RET( stg_forceIO, RET_SMALL) } /* ----------------------------------------------------------------------------- - Non-strict IO application. - - This stack frame works like stg_forceIO_info except that it - doesn't evaluate the return value. We need the layer because the - return convention for an IO action differs depending on whether R1 - is a register or not. - ------------------------------------------------------------------------- */ - -INFO_TABLE_RET( stg_noforceIO, RET_SMALL ) - -{ - Sp_adj(1); - jump %ENTRY_CODE(Sp(0)); -} - -/* ----------------------------------------------------------------------------- Special STG entry points for module registration. -------------------------------------------------------------------------- */ -- 1.7.10.4