X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FHeapStackCheck.cmm;h=aae28cb77f0ba8ef185776d7a1cd7712ea92adf4;hb=e576ba5d31fbae54c43e88316fb0dbdba9cbd4ff;hp=4e5dd2459636f177961d4f9934e87206b20a9236;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/rts/HeapStackCheck.cmm b/rts/HeapStackCheck.cmm index 4e5dd24..aae28cb 100644 --- a/rts/HeapStackCheck.cmm +++ b/rts/HeapStackCheck.cmm @@ -902,6 +902,31 @@ stg_block_blackhole BLOCK_BUT_FIRST(stg_block_blackhole_finally); } +INFO_TABLE_RET( stg_block_throwto, 2/*framesize*/, 0/*bitmap*/, RET_SMALL ) +{ + R2 = Sp(2); + R1 = Sp(1); + Sp_adj(3); + jump killThreadzh_fast; +} + +stg_block_throwto_finally +{ +#ifdef THREADED_RTS + foreign "C" throwToReleaseTarget (R3 "ptr"); +#endif + jump StgReturn; +} + +stg_block_throwto +{ + Sp_adj(-3); + Sp(2) = R2; + Sp(1) = R1; + Sp(0) = stg_block_throwto_info; + BLOCK_BUT_FIRST(stg_block_throwto_finally); +} + #ifdef mingw32_HOST_OS INFO_TABLE_RET( stg_block_async, 0/*framesize*/, 0/*bitmap*/, RET_SMALL ) {