X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FStgMiscClosures.cmm;h=b4a037d5d6dfe50bac06a1e1a03412956a79b0bb;hp=1bc6dc6a2b7469b0db7c331d5036a7c9311db79b;hb=c5b178be60a5a44abd2f4ddf8c399857678326e2;hpb=70a2431f90fa932733ce015714ef7848640ed48f diff --git a/rts/StgMiscClosures.cmm b/rts/StgMiscClosures.cmm index 1bc6dc6..b4a037d 100644 --- a/rts/StgMiscClosures.cmm +++ b/rts/StgMiscClosures.cmm @@ -19,6 +19,23 @@ import EnterCriticalSection; import LeaveCriticalSection; /* ---------------------------------------------------------------------------- + Stack underflow + ------------------------------------------------------------------------- */ + +INFO_TABLE_RET (stg_stack_underflow_frame, UNDERFLOW_FRAME, P_ unused) +{ + W_ new_tso; + W_ ret_off; + + SAVE_THREAD_STATE(); + ("ptr" ret_off) = foreign "C" threadStackUnderflow(MyCapability(), + CurrentTSO); + LOAD_THREAD_STATE(); + + jump %ENTRY_CODE(Sp(ret_off)); +} + +/* ---------------------------------------------------------------------------- Support for the bytecode interpreter. ------------------------------------------------------------------------- */ @@ -272,7 +289,7 @@ retry: ("ptr" msg) = foreign "C" allocate(MyCapability() "ptr", BYTES_TO_WDS(SIZEOF_MessageBlackHole)) [R1]; - StgHeader_info(msg) = stg_MSG_BLACKHOLE_info; + SET_HDR(msg, stg_MSG_BLACKHOLE_info, CCS_SYSTEM); MessageBlackHole_tso(msg) = CurrentTSO; MessageBlackHole_bh(msg) = R1; @@ -353,6 +370,9 @@ loop: INFO_TABLE(stg_TSO, 0,0,TSO, "TSO", "TSO") { foreign "C" barf("TSO object entered!") never returns; } +INFO_TABLE(stg_STACK, 0,0, STACK, "STACK", "STACK") +{ foreign "C" barf("STACK object entered!") never returns; } + /* ---------------------------------------------------------------------------- Weak pointers @@ -546,7 +566,7 @@ INFO_TABLE_CONSTR(stg_MVAR_TSO_QUEUE,2,0,0,PRIM,"MVAR_TSO_QUEUE","MVAR_TSO_QUEUE replace them with references to the static objects. ------------------------------------------------------------------------- */ -#if defined(__PIC__) && defined(mingw32_TARGET_OS) +#if defined(__PIC__) && defined(mingw32_HOST_OS) /* * When sticking the RTS in a Windows DLL, we delay populating the * Charlike and Intlike tables until load-time, which is only