X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FRtsAPI.c;h=7449badd8879546b70361da973578a4133b0687e;hb=a1c9a60f9d3b45184f723b454017edcbf258f70e;hp=e01a559cdbfb735d6633b0300a67b42604bd187a;hpb=22da500cc55d61e18ae3d8854ff58ca3a2252fa1;p=ghc-hetmet.git diff --git a/ghc/rts/RtsAPI.c b/ghc/rts/RtsAPI.c index e01a559..7449bad 100644 --- a/ghc/rts/RtsAPI.c +++ b/ghc/rts/RtsAPI.c @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.c,v 1.33 2002/02/15 07:40:10 sof Exp $ + * $Id: RtsAPI.c,v 1.36 2002/08/16 14:30:21 simonmar Exp $ * * (c) The GHC Team, 1998-2001 * @@ -18,12 +18,6 @@ #include "OSThreads.h" #include "Schedule.h" -#if defined(THREADED_RTS) -#define WAIT_MAIN_THREAD(tso,ret) waitThread_(tso,ret,rtsFalse) -#else -#define WAIT_MAIN_THREAD(tso,ret) waitThread(tso,ret) -#endif - #if defined(RTS_SUPPORTS_THREADS) /* Cheesy locking scheme while waiting for the * RTS API to change. @@ -238,12 +232,13 @@ rts_mkString (char *s) HaskellObj rts_apply (HaskellObj f, HaskellObj arg) { - StgAP_UPD *ap = (StgAP_UPD *)alloc(AP_sizeW(1)); - SET_HDR(ap, &stg_AP_UPD_info, CCS_SYSTEM); - ap->n_args = 1; - ap->fun = f; - ap->payload[0] = arg; - return (StgClosure *)ap; + StgClosure *ap; + + ap = (StgClosure *)alloc(sizeofW(StgClosure) + 2); + SET_HDR(ap, (StgInfoTable *)&stg_ap_2_upd_info, CCS_SYSTEM); + ap->payload[0] = f; + ap->payload[1] = arg; + return (StgClosure *)ap; } /* ---------------------------------------------------------------------------- @@ -453,8 +448,7 @@ rts_eval (HaskellObj p, /*out*/HaskellObj *ret) tso = createGenThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); - scheduleExtThread(tso); - return waitThread(tso, ret); + return scheduleWaitThread(tso,ret); } SchedulerStatus @@ -464,8 +458,7 @@ rts_eval_ (HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret) tso = createGenThread(stack_size, p); releaseAllocLock(); - scheduleExtThread(tso); - return waitThread(tso, ret); + return scheduleWaitThread(tso,ret); } /* @@ -479,8 +472,7 @@ rts_evalIO (HaskellObj p, /*out*/HaskellObj *ret) tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); - scheduleExtThread(tso); - return waitThread(tso, ret); + return scheduleWaitThread(tso,ret); } /* @@ -495,7 +487,7 @@ rts_mainEvalIO(HaskellObj p, /*out*/HaskellObj *ret) tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); scheduleThread(tso); - return WAIT_MAIN_THREAD(tso, ret); + return waitThread(tso, ret); } /* @@ -514,8 +506,7 @@ rts_evalStableIO (HsStablePtr s, /*out*/HsStablePtr *ret) p = (StgClosure *)deRefStablePtr(s); tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); - scheduleExtThread(tso); - stat = waitThread(tso, &r); + stat = scheduleWaitThread(tso,&r); if (stat == Success) { ASSERT(r != NULL); @@ -535,8 +526,7 @@ rts_evalLazyIO (HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret) tso = createIOThread(stack_size, p); releaseAllocLock(); - scheduleExtThread(tso); - return waitThread(tso, ret); + return scheduleWaitThread(tso,ret); } /* Convenience function for decoding the returned status. */