summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-09-24 15:02:02 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-09-24 15:02:02 +0000
commit41bfdf710742595e6043d9b851e8dab30ffe6d2f (patch)
tree75099938ff137a58625874981f446ea3e8078e60 /rts
parent92a5f4abbd32c0a28b75207b368d86e59515683d (diff)
downloadhaskell-41bfdf710742595e6043d9b851e8dab30ffe6d2f.tar.gz
remove unnecessary stg_noForceIO (#3508)
Diffstat (limited to 'rts')
-rw-r--r--rts/Exception.cmm7
-rw-r--r--rts/Interpreter.c12
-rw-r--r--rts/RtsAPI.c1
-rw-r--r--rts/StgStartup.cmm16
4 files changed, 6 insertions, 30 deletions
diff --git a/rts/Exception.cmm b/rts/Exception.cmm
index 7d1bf3979a..f85e2e97e5 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 5a564ba40f..9a38a7ed18 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 fb9c0107a0..53628dc61a 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 c3c0bc3dd7..f8940c4196 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.
-------------------------------------------------------------------------- */