Commit 41bfdf71 authored by Simon Marlow's avatar Simon Marlow
Browse files

remove unnecessary stg_noForceIO (#3508)

parent 92a5f4ab
...@@ -494,10 +494,9 @@ retry_pop_stack: ...@@ -494,10 +494,9 @@ retry_pop_stack:
// be per-thread. // be per-thread.
CInt[rts_stop_on_exception] = 0; CInt[rts_stop_on_exception] = 0;
("ptr" ioAction) = foreign "C" deRefStablePtr (W_[rts_breakpoint_io_action] "ptr") []; ("ptr" ioAction) = foreign "C" deRefStablePtr (W_[rts_breakpoint_io_action] "ptr") [];
Sp = Sp - WDS(7); Sp = Sp - WDS(6);
Sp(6) = exception; Sp(5) = exception;
Sp(5) = stg_raise_ret_info; Sp(4) = stg_raise_ret_info;
Sp(4) = stg_noforceIO_info; // required for unregisterised
Sp(3) = exception; // the AP_STACK Sp(3) = exception; // the AP_STACK
Sp(2) = ghczmprim_GHCziBool_True_closure; // dummy breakpoint info Sp(2) = ghczmprim_GHCziBool_True_closure; // dummy breakpoint info
Sp(1) = ghczmprim_GHCziBool_True_closure; // True <=> a breakpoint Sp(1) = ghczmprim_GHCziBool_True_closure; // True <=> a breakpoint
......
...@@ -884,21 +884,15 @@ run_BCO: ...@@ -884,21 +884,15 @@ run_BCO:
// in a reasonable state for the GC and so that // in a reasonable state for the GC and so that
// execution of this BCO can continue when we resume // execution of this BCO can continue when we resume
ioAction = (StgClosure *) deRefStablePtr (rts_breakpoint_io_action); ioAction = (StgClosure *) deRefStablePtr (rts_breakpoint_io_action);
Sp -= 9; Sp -= 8;
Sp[8] = (W_)obj; Sp[7] = (W_)obj;
Sp[7] = (W_)&stg_apply_interp_info; Sp[6] = (W_)&stg_apply_interp_info;
Sp[6] = (W_)&stg_noforceIO_info; // see [unreg] below
Sp[5] = (W_)new_aps; // the AP_STACK Sp[5] = (W_)new_aps; // the AP_STACK
Sp[4] = (W_)BCO_PTR(arg3_freeVars); // the info about local vars of the breakpoint Sp[4] = (W_)BCO_PTR(arg3_freeVars); // the info about local vars of the breakpoint
Sp[3] = (W_)False_closure; // True <=> a breakpoint Sp[3] = (W_)False_closure; // True <=> a breakpoint
Sp[2] = (W_)&stg_ap_pppv_info; Sp[2] = (W_)&stg_ap_pppv_info;
Sp[1] = (W_)ioAction; // apply the IO action to its two arguments above 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 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 // set the flag in the TSO to say that we are now
// stopping at a breakpoint so that when we resume // stopping at a breakpoint so that when we resume
// we don't stop on the same breakpoint that we // we don't stop on the same breakpoint that we
......
...@@ -394,7 +394,6 @@ createIOThread (Capability *cap, nat stack_size, StgClosure *closure) ...@@ -394,7 +394,6 @@ createIOThread (Capability *cap, nat stack_size, StgClosure *closure)
{ {
StgTSO *t; StgTSO *t;
t = createThread (cap, stack_size); t = createThread (cap, stack_size);
pushClosure(t, (W_)&stg_noforceIO_info);
pushClosure(t, (W_)&stg_ap_v_info); pushClosure(t, (W_)&stg_ap_v_info);
pushClosure(t, (W_)closure); pushClosure(t, (W_)closure);
pushClosure(t, (W_)&stg_enter_info); pushClosure(t, (W_)&stg_enter_info);
......
...@@ -150,22 +150,6 @@ INFO_TABLE_RET( stg_forceIO, RET_SMALL) ...@@ -150,22 +150,6 @@ INFO_TABLE_RET( stg_forceIO, RET_SMALL)
ENTER(); ENTER();
} }
/* -----------------------------------------------------------------------------
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. Special STG entry points for module registration.
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
......
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