R1 = StgCatchRetryFrame_first_code(frame);
StgCatchRetryFrame_first_code_trec(frame) = new_trec;
}
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
}
"ptr" trec = foreign "C" stmStartTransaction(MyCapability() "ptr", NO_TREC "ptr") [];
StgTSO_trec(CurrentTSO) = trec;
R1 = StgAtomicallyFrame_code(frame);
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
}
StgTSO_trec(CurrentTSO) = trec;
StgHeader_info(frame) = stg_atomically_frame_info;
R1 = StgAtomicallyFrame_code(frame);
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
}
StgTSO_trec(CurrentTSO) = new_trec;
/* Apply R1 to the realworld token */
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
StgCatchSTMFrame_handler(frame) = R2;
/* Apply R1 to the realworld token */
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
StgCatchRetryFrame_first_code_trec(frame) = new_trec;
/* Apply R1 to the realworld token */
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
StgTSO_trec(CurrentTSO) = trec;
StgCatchRetryFrame_running_alt_code(frame) = 1 :: CInt; // true;
R1 = StgCatchRetryFrame_alt_code(frame);
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
} else {
// Retry in the alternative code: propagate
W_ other_trec;
StgCatchRetryFrame_running_alt_code(frame) = 0 :: CInt; // false;
StgTSO_trec(CurrentTSO) = trec;
R1 = StgCatchRetryFrame_first_code(frame);
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
}
}
StgTSO_trec(CurrentTSO) = trec;
R1 = StgAtomicallyFrame_code(frame);
Sp = frame;
- Sp_adj(-1);
- jump RET_LBL(stg_ap_v);
+ jump stg_ap_v_fast;
}
}
/* actually perform the putMVar for the thread that we just woke up */
tso = StgMVar_head(mvar);
PerformPut(tso,StgMVar_value(mvar));
+ foreign "C" dirtyTSO(tso "ptr") [];
#if defined(GRAN) || defined(PAR)
/* ToDo: check 2nd arg (mvar) is right */
/* actually perform the putMVar for the thread that we just woke up */
tso = StgMVar_head(mvar);
PerformPut(tso,StgMVar_value(mvar));
+ foreign "C" dirtyTSO(tso "ptr") [];
#if defined(GRAN) || defined(PAR)
/* ToDo: check 2nd arg (mvar) is right */
/* actually perform the takeMVar */
tso = StgMVar_head(mvar);
PerformTake(tso, R2);
+ foreign "C" dirtyTSO(tso "ptr") [];
#if defined(GRAN) || defined(PAR)
/* ToDo: check 2nd arg (mvar) is right */
/* actually perform the takeMVar */
tso = StgMVar_head(mvar);
PerformTake(tso, R2);
+ foreign "C" dirtyTSO(tso "ptr") [];
#if defined(GRAN) || defined(PAR)
/* ToDo: check 2nd arg (mvar) is right */