Add several new record features
[ghc-hetmet.git] / rts / PrimOps.cmm
index bb9fadd..12322f2 100644 (file)
@@ -1884,8 +1884,6 @@ unpackClosurezh_fast
 
     W_ info, ptrs, nptrs, p, ptrs_arr, nptrs_arr;
     info  = %GET_STD_INFO(R1);
-    ptrs  = TO_W_(%INFO_PTRS(info)); 
-    nptrs = TO_W_(%INFO_NPTRS(info));
 
     // Some closures have non-standard layout, so we omit those here.
     W_ type;
@@ -1903,6 +1901,8 @@ unpackClosurezh_fast
         goto out;
     }
     default: {
+        ptrs  = TO_W_(%INFO_PTRS(info)); 
+        nptrs = TO_W_(%INFO_NPTRS(info));
         goto out;
     }}
 out:
@@ -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);
 }