fix call to garbage_collection from within assembly meta-calls
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@819 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
a3ad9dbb8f
commit
601f91f653
16
C/absmi.c
16
C/absmi.c
@ -11837,13 +11837,13 @@ Yap_absmi(int inp)
|
|||||||
|
|
||||||
execute_end:
|
execute_end:
|
||||||
/* code copied from call */
|
/* code copied from call */
|
||||||
|
#ifndef NO_CHECKING
|
||||||
|
check_stack(NoStackPExecute, H);
|
||||||
|
#endif
|
||||||
CPREG =
|
CPREG =
|
||||||
(yamop *) NEXTOP(PREG, sla);
|
(yamop *) NEXTOP(PREG, sla);
|
||||||
ALWAYS_LOOKAHEAD(pen->OpcodeOfPred);
|
ALWAYS_LOOKAHEAD(pen->OpcodeOfPred);
|
||||||
PREG = pen->CodeOfPred;
|
PREG = pen->CodeOfPred;
|
||||||
#ifndef NO_CHECKING
|
|
||||||
check_stack(NoStackPExecute, H);
|
|
||||||
#endif
|
|
||||||
#ifdef DEPTH_LIMIT
|
#ifdef DEPTH_LIMIT
|
||||||
if (DEPTH <= MkIntTerm(1)) {/* I assume Module==0 is primitives */
|
if (DEPTH <= MkIntTerm(1)) {/* I assume Module==0 is primitives */
|
||||||
if (pen->ModuleOfPred) {
|
if (pen->ModuleOfPred) {
|
||||||
@ -11890,7 +11890,7 @@ Yap_absmi(int inp)
|
|||||||
goto creep;
|
goto creep;
|
||||||
else {
|
else {
|
||||||
CFREG = CalculateStackGap();
|
CFREG = CalculateStackGap();
|
||||||
JMPNext();
|
goto execute_end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -11901,7 +11901,7 @@ Yap_absmi(int inp)
|
|||||||
Yap_Error(OUT_OF_STACK_ERROR,TermNil,Yap_ErrorMessage);
|
Yap_Error(OUT_OF_STACK_ERROR,TermNil,Yap_ErrorMessage);
|
||||||
}
|
}
|
||||||
setregs();
|
setregs();
|
||||||
JMPNext();
|
goto execute_end;
|
||||||
ENDCACHE_Y_AS_ENV();
|
ENDCACHE_Y_AS_ENV();
|
||||||
}
|
}
|
||||||
ENDBOp();
|
ENDBOp();
|
||||||
@ -12080,10 +12080,10 @@ Yap_absmi(int inp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
execute_after_comma:
|
execute_after_comma:
|
||||||
PREG = pen->CodeOfPred;
|
|
||||||
#ifndef NO_CHECKING
|
#ifndef NO_CHECKING
|
||||||
check_stack(NoStackPTExecute, H);
|
check_stack(NoStackPTExecute, H);
|
||||||
#endif
|
#endif
|
||||||
|
PREG = pen->CodeOfPred;
|
||||||
ALWAYS_LOOKAHEAD(pen->OpcodeOfPred);
|
ALWAYS_LOOKAHEAD(pen->OpcodeOfPred);
|
||||||
E_YREG[E_CB] = (CELL)B;
|
E_YREG[E_CB] = (CELL)B;
|
||||||
#ifdef DEPTH_LIMIT
|
#ifdef DEPTH_LIMIT
|
||||||
@ -12114,7 +12114,7 @@ Yap_absmi(int inp)
|
|||||||
goto creep;
|
goto creep;
|
||||||
else {
|
else {
|
||||||
CFREG = CalculateStackGap();
|
CFREG = CalculateStackGap();
|
||||||
JMPNext();
|
goto execute_after_comma;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -12128,7 +12128,7 @@ Yap_absmi(int inp)
|
|||||||
Yap_Error(OUT_OF_STACK_ERROR,TermNil,Yap_ErrorMessage);
|
Yap_Error(OUT_OF_STACK_ERROR,TermNil,Yap_ErrorMessage);
|
||||||
}
|
}
|
||||||
setregs();
|
setregs();
|
||||||
JMPNext();
|
goto execute_after_comma;
|
||||||
ENDCACHE_Y_AS_ENV();
|
ENDCACHE_Y_AS_ENV();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user