in execute instructions, stack checking should be performed before
cleaning the arguments git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@298 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
8e405ae9be
commit
4c63dbee3d
19
C/absmi.c
19
C/absmi.c
@ -11167,6 +11167,9 @@ absmi(int inp)
|
|||||||
int mod = IntOfTerm(ARG2);
|
int mod = IntOfTerm(ARG2);
|
||||||
|
|
||||||
CACHE_Y_AS_ENV(Y);
|
CACHE_Y_AS_ENV(Y);
|
||||||
|
#ifndef NO_CHECKING
|
||||||
|
check_stack(NoStackPExec, H);
|
||||||
|
#endif
|
||||||
BEGD(d0);
|
BEGD(d0);
|
||||||
d0 = ARG1;
|
d0 = ARG1;
|
||||||
if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
|
if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
|
||||||
@ -11218,9 +11221,6 @@ absmi(int inp)
|
|||||||
goto execute_nvar;
|
goto execute_nvar;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NO_CHECKING
|
|
||||||
check_stack(NoStackPExec, H);
|
|
||||||
#endif
|
|
||||||
/* code copied from call */
|
/* code copied from call */
|
||||||
ENV = E_Y;
|
ENV = E_Y;
|
||||||
/* Try to preserve the environment */
|
/* Try to preserve the environment */
|
||||||
@ -11288,7 +11288,11 @@ absmi(int inp)
|
|||||||
PredEntry *pen;
|
PredEntry *pen;
|
||||||
int mod = CurrentModule;
|
int mod = CurrentModule;
|
||||||
|
|
||||||
|
|
||||||
CACHE_Y_AS_ENV(Y);
|
CACHE_Y_AS_ENV(Y);
|
||||||
|
#ifndef NO_CHECKING
|
||||||
|
check_stack(NoStackPWExec, H);
|
||||||
|
#endif
|
||||||
BEGD(d0);
|
BEGD(d0);
|
||||||
d0 = ARG1;
|
d0 = ARG1;
|
||||||
if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
|
if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
|
||||||
@ -11364,9 +11368,6 @@ absmi(int inp)
|
|||||||
goto execute_within_nvar;
|
goto execute_within_nvar;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NO_CHECKING
|
|
||||||
check_stack(NoStackPWExec, H);
|
|
||||||
#endif
|
|
||||||
/* code copied from call */
|
/* code copied from call */
|
||||||
ENV = E_Y;
|
ENV = E_Y;
|
||||||
/* Try to preserve the environment */
|
/* Try to preserve the environment */
|
||||||
@ -11437,6 +11438,9 @@ absmi(int inp)
|
|||||||
int mod = CurrentModule;
|
int mod = CurrentModule;
|
||||||
|
|
||||||
CACHE_Y_AS_ENV(Y);
|
CACHE_Y_AS_ENV(Y);
|
||||||
|
#ifndef NO_CHECKING
|
||||||
|
check_stack(NoStackPWLExec, H);
|
||||||
|
#endif
|
||||||
BEGD(d0);
|
BEGD(d0);
|
||||||
d0 = ARG1;
|
d0 = ARG1;
|
||||||
if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
|
if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
|
||||||
@ -11517,9 +11521,6 @@ absmi(int inp)
|
|||||||
d0 = ENV[E_CB];
|
d0 = ENV[E_CB];
|
||||||
else
|
else
|
||||||
d0 = (CELL)B;
|
d0 = (CELL)B;
|
||||||
#ifndef NO_CHECKING
|
|
||||||
check_stack(NoStackPWLExec, H);
|
|
||||||
#endif
|
|
||||||
PREG = (yamop *) pen->CodeOfPred;
|
PREG = (yamop *) pen->CodeOfPred;
|
||||||
/* do deallocate */
|
/* do deallocate */
|
||||||
CPREG = (yamop *) E_Y[E_CP];
|
CPREG = (yamop *) E_Y[E_CP];
|
||||||
|
Reference in New Issue
Block a user