Fix more problems caused by padding in the Capability structure
[ghc-hetmet.git] / rts / Interpreter.c
index d541dfc..1b2d730 100644 (file)
@@ -1281,7 +1281,7 @@ run_BCO:
            // context switching: sometimes the scheduler can invoke
            // the interpreter with context_switch == 1, particularly
            // if the -C0 flag has been given on the cmd line.
-           if (context_switch) {
+           if (cap->context_switch) {
                Sp--; Sp[0] = (W_)&stg_enter_info;
                RETURN_TO_SCHEDULER(ThreadInterpret, ThreadYielding);
            }
@@ -1422,7 +1422,7 @@ run_BCO:
             ffi_call(cif, fn, ret, argptrs);
 
            // And restart the thread again, popping the RET_DYN frame.
-           cap = (Capability *)((void *)((unsigned char*)resumeThread(tok) - sizeof(StgFunTable)));
+           cap = (Capability *)((void *)((unsigned char*)resumeThread(tok) - FIELD_OFFSET(Capability,r)));
            LOAD_STACK_POINTERS;
 
             // Re-load the pointer to the BCO from the RET_DYN frame,