X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FPrimOps.cmm;h=cd348469251243449c2ff9eea3bbd67bdf381b34;hb=4899cc823373bd016a49cdb0dffd0e22150ec07e;hp=bb9faddef59f7689c198eb9637fb466cde1b7000;hpb=cdce647711c0f46f5799b24de087622cb77e647f;p=ghc-hetmet.git diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index bb9fadd..cd34846 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -2165,13 +2165,18 @@ noDuplicatezh_fast getApStackValzh_fast { - W_ ap_stack, offset, val; + W_ ap_stack, offset, val, ok; - /* args: R1 = tso, R2 = offset */ + /* args: R1 = AP_STACK, R2 = offset */ ap_stack = R1; offset = R2; - val = StgClosure_payload(ap_stack,offset); - - RET_P(val); + if (%INFO_PTR(ap_stack) == stg_AP_STACK_info) { + ok = 1; + val = StgAP_STACK_payload(ap_stack,offset); + } else { + ok = 0; + val = R1; + } + RET_NP(ok,val); }