X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FStgStartup.cmm;h=2d83a676c079cb11c913a88fd5282b5c30b5ebab;hb=c7addbef67840954ad788434c28b0a3476ee0ad7;hp=2f2a759c81b752b0f4c7f686b958ed82fb127f93;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/rts/StgStartup.cmm b/rts/StgStartup.cmm index 2f2a759..2d83a67 100644 --- a/rts/StgStartup.cmm +++ b/rts/StgStartup.cmm @@ -34,11 +34,6 @@ /* ----------------------------------------------------------------------------- Returning from the STG world. - - This is a polymorphic return address, meaning that any old constructor - can be returned, we don't care (actually, it's probably going to be - an IOok constructor, which will indirect through the vector table - slot 0). -------------------------------------------------------------------------- */ #if defined(PROFILING) @@ -49,18 +44,8 @@ #define STOP_THREAD_WORDS 0 #endif -/* A polymorhpic return address, where all the vector slots point to the - direct entry point. */ INFO_TABLE_RET( stg_stop_thread, STOP_THREAD_WORDS, STOP_THREAD_BITMAP, - STOP_FRAME, - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread), - RET_LBL(stg_stop_thread) ) + STOP_FRAME) { /* The final exit. @@ -143,6 +128,13 @@ stg_returnToSchedButFirst jump R2; } +stg_threadFinished +{ + StgRegTable_rRet(BaseReg) = ThreadFinished; + R1 = BaseReg; + jump StgReturn; +} + /* ----------------------------------------------------------------------------- Strict IO application - performing an IO action and entering its result.