FB_
#if defined(GRAN)
- STGCALL0(void,(),GranSimBlock); /* Before overwriting TSO_LINK */
+ /* Before overwriting TSO_LINK */
+ STGCALL3(void,(),GranSimBlock,CurrentTSO,CurrentProc,Node);
#endif
TSO_LINK(CurrentTSO) = (P_) BQ_ENTRIES(Node);
}
#endif
#if defined(GRAN)
- ReSchedule(NEW_THREAD);
+ ReSchedule(SAME_THREAD); /* NB: GranSimBlock activated next thread */
#else
ReSchedule(0);
#endif
\begin{code}
-#ifdef PAR
+#if defined(PAR) || defined(GRAN)
STGFUN(RBH_entry)
{
FB_
-#if defined(GRAN)
- STGCALL0(void, (), GranSimBlock); /* Before overwriting TSO_LINK */
-#endif
+# if defined(GRAN)
+ /* Before overwriting TSO_LINK */
+ STGCALL3(void,(),GranSimBlock,CurrentTSO,CurrentProc,Node);
+# endif
switch (INFO_TYPE(InfoPtr)) {
case INFO_SPEC_RBH_TYPE:
QP_Event1("GR", CurrentTSO);
}
+# ifdef PAR
if(RTSflags.ParFlags.granSimStats) {
/* Note that CURRENT_TIME may perform an unsafe call */
TIME now = CURRENT_TIME;
TSO_BLOCKEDAT(CurrentTSO) = now;
DumpGranEvent(GR_BLOCK, CurrentTSO);
}
-
-#if defined(GRAN)
- ReSchedule(NEW_THREAD);
-#else
+# endif
+# if defined(GRAN)
+ ReSchedule(SAME_THREAD); /* NB: GranSimBlock activated next thread */
+# else
ReSchedule(0);
-#endif
+# endif
FE_
}
FB_
ENT_VIA_NODE();
InfoPtr=(D_)(INFO_PTR(Node));
- GRAN_EXEC(5,1,2,0,0);
JMP_(ENTRY_CODE(InfoPtr));
FE_
}
FB_
RetReg = (StgRetAddr) SpB[BREL(0)];
cont = (void *) SpB[BREL(1)];
- SpB += BREL(2);
-/* GRAN_EXEC(1,1,2,0,0); /? ToDo: RE-CHECK (WDP) */
+ /* SpB += BREL(2); */
JMP_(cont);
FE_
}