make SREG YENV before calling heapgc in absmi.
This commit is contained in:
parent
d52d05a626
commit
26706d20ff
@ -792,7 +792,6 @@ Yap_absmi(int inp)
|
|||||||
noheapleft:
|
noheapleft:
|
||||||
{
|
{
|
||||||
CELL cut_b = LCL0-(CELL *)(SREG[E_CB]);
|
CELL cut_b = LCL0-(CELL *)(SREG[E_CB]);
|
||||||
|
|
||||||
#ifdef SHADOW_S
|
#ifdef SHADOW_S
|
||||||
S = SREG;
|
S = SREG;
|
||||||
#endif
|
#endif
|
||||||
@ -2535,6 +2534,7 @@ Yap_absmi(int inp)
|
|||||||
PP = PREG->u.pp.p0;
|
PP = PREG->u.pp.p0;
|
||||||
if (ActiveSignals & YAP_CDOVF_SIGNAL) {
|
if (ActiveSignals & YAP_CDOVF_SIGNAL) {
|
||||||
ASP = YREG+E_CB;
|
ASP = YREG+E_CB;
|
||||||
|
SREG = YENV;
|
||||||
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
||||||
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
||||||
goto noheapleft;
|
goto noheapleft;
|
||||||
@ -2690,6 +2690,7 @@ Yap_absmi(int inp)
|
|||||||
SREG = (CELL *) PREG->u.Osbpp.p;
|
SREG = (CELL *) PREG->u.Osbpp.p;
|
||||||
if (ActiveSignals & YAP_CDOVF_SIGNAL) {
|
if (ActiveSignals & YAP_CDOVF_SIGNAL) {
|
||||||
ASP = (CELL *) (((char *) YREG) + PREG->u.Osbpp.s);
|
ASP = (CELL *) (((char *) YREG) + PREG->u.Osbpp.s);
|
||||||
|
SREG = YENV;
|
||||||
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
||||||
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
||||||
goto noheapleft;
|
goto noheapleft;
|
||||||
@ -2926,6 +2927,7 @@ Yap_absmi(int inp)
|
|||||||
ASP = (CELL *) (((char *) YREG) + PREG->u.Osbpp.s);
|
ASP = (CELL *) (((char *) YREG) + PREG->u.Osbpp.s);
|
||||||
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
||||||
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
||||||
|
SREG = YENV;
|
||||||
goto noheapleft;
|
goto noheapleft;
|
||||||
}
|
}
|
||||||
if (ActiveSignals) {
|
if (ActiveSignals) {
|
||||||
@ -3049,6 +3051,7 @@ Yap_absmi(int inp)
|
|||||||
ASP = YREG+E_CB;
|
ASP = YREG+E_CB;
|
||||||
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
if (ASP > (CELL *)PROTECT_FROZEN_B(B))
|
||||||
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
||||||
|
SREG = YENV;
|
||||||
goto noheapleft;
|
goto noheapleft;
|
||||||
}
|
}
|
||||||
if (ActiveSignals)
|
if (ActiveSignals)
|
||||||
@ -14558,6 +14561,7 @@ Yap_absmi(int inp)
|
|||||||
if (ActiveSignals) {
|
if (ActiveSignals) {
|
||||||
if (ActiveSignals & YAP_CDOVF_SIGNAL) {
|
if (ActiveSignals & YAP_CDOVF_SIGNAL) {
|
||||||
UNLOCK(SignalLock);
|
UNLOCK(SignalLock);
|
||||||
|
SREG = YENV;
|
||||||
goto noheapleft;
|
goto noheapleft;
|
||||||
}
|
}
|
||||||
UNLOCK(SignalLock);
|
UNLOCK(SignalLock);
|
||||||
|
Reference in New Issue
Block a user