handle possible stack expansion or gc

This commit is contained in:
Vitor Santos Costa 2013-07-25 10:21:17 -05:00
parent cc6e33bff0
commit 3bb50ce3af

View File

@ -51,6 +51,7 @@ static lbfgsfloatval_t evaluate(
{ {
YAP_Term call; YAP_Term call;
YAP_Bool result; YAP_Bool result;
YAP_Int s1;
YAP_Term t[3]; YAP_Term t[3];
@ -61,6 +62,8 @@ static lbfgsfloatval_t evaluate(
call = YAP_MkApplTerm(fcall3, 3, t); call = YAP_MkApplTerm(fcall3, 3, t);
g=g_tmp; g=g_tmp;
s1 = YAP_InitSlot(call);
optimizer_status=OPTIMIZER_STATUS_CB_EVAL; optimizer_status=OPTIMIZER_STATUS_CB_EVAL;
result=YAP_CallProlog(call); result=YAP_CallProlog(call);
optimizer_status=OPTIMIZER_STATUS_RUNNING; optimizer_status=OPTIMIZER_STATUS_RUNNING;
@ -71,6 +74,7 @@ static lbfgsfloatval_t evaluate(
return FALSE; return FALSE;
} }
call = YAP_GetFromSlot( s1 );
if (YAP_IsFloatTerm(YAP_ArgOfTerm(1,call))) { if (YAP_IsFloatTerm(YAP_ArgOfTerm(1,call))) {
return (lbfgsfloatval_t) YAP_FloatOfTerm(YAP_ArgOfTerm(1,call)); return (lbfgsfloatval_t) YAP_FloatOfTerm(YAP_ArgOfTerm(1,call));
} else if (YAP_IsIntTerm(YAP_ArgOfTerm(1,call))) { } else if (YAP_IsIntTerm(YAP_ArgOfTerm(1,call))) {