YAP would break when gc was called from portray:

always save arguments before calling plwrite with possible portray
 only do it for portray because plwrite may be called from unsafe environments
 make Slot machinery mainstream.


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@637 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2002-10-17 00:05:29 +00:00
parent 78923655b5
commit 153b2cb2a3
11 changed files with 219 additions and 42 deletions

View File

@@ -1746,8 +1746,9 @@ absmi(int inp)
DEPTH -= MkIntConstant(2);
#endif /* DEPTH_LIMIT */
#ifdef LOW_LEVEL_TRACER
if (do_low_level_trace)
if (do_low_level_trace) {
low_level_trace(enter_pred,pred_entry(pt0),XREGS+1);
}
#endif /* LOW_LEVEL_TRACE */
/* this is the equivalent to setting up the stack */
ALWAYS_GONext();
@@ -5810,6 +5811,7 @@ absmi(int inp)
} else {
ASP = (CELL *) (((char *) Y) + PREG->u.sla.s);
}
/* for slots to work */
#endif /* FROZEN_STACKS */
#ifdef LOW_LEVEL_TRACER
if (do_low_level_trace)
@@ -6053,7 +6055,12 @@ absmi(int inp)
WRITE_UNLOCK(PredFromDefCode(PREG)->PRWLock);
JMPNext();
}
#endif
#endif
/* update ASP before calling IPred */
ASP = Y+E_CB;
if (ASP > (CELL *) B) {
ASP = (CELL *) B;
}
IPred((CODEADDR)PredFromDefCode(PREG));
/* IPred can generate errors, it thus must get rid of the lock itself */
setregs();