recover space on foreign exec
This commit is contained in:
parent
f6ca094534
commit
13d609867c
@ -1836,40 +1836,28 @@ X_API bool YAP_LeaveGoal(bool successful, YAP_dogoalinfo *dgi) {
|
|||||||
}
|
}
|
||||||
handler = B;
|
handler = B;
|
||||||
while (handler
|
while (handler
|
||||||
//&& LOCAL_CBorder > LCL0 - (CELL *)handler
|
&& LCL0-LOCAL_CBorder > (CELL *)handler
|
||||||
//&& handler->cp_ap != NOCODE
|
//&& handler->cp_ap != NOCODE
|
||||||
&& handler->cp_b != NULL
|
&& handler->cp_b != NULL
|
||||||
&& handler <= myB
|
&& handler != myB
|
||||||
) {
|
) {
|
||||||
if (handler < myB)
|
if (handler < myB ) {
|
||||||
handler->cp_ap = TRUSTFAILCODE;
|
handler->cp_ap = TRUSTFAILCODE;
|
||||||
|
}
|
||||||
B = handler;
|
B = handler;
|
||||||
handler = handler->cp_b;
|
handler = handler->cp_b;
|
||||||
if (successful) {
|
if (successful) {
|
||||||
Yap_TrimTrail();
|
Yap_TrimTrail();
|
||||||
} else {
|
} else if (!(LOCAL_PrologMode & AsyncIntMode)) {
|
||||||
P=FAILCODE;
|
P=FAILCODE;
|
||||||
Yap_exec_absmi(true, YAP_EXEC_ABSMI);
|
Yap_exec_absmi(true, YAP_EXEC_ABSMI);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (successful) {
|
|
||||||
CP = dgi->cp;
|
|
||||||
P = dgi->p;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
LOCAL_CurSlot = dgi->CurSlot;
|
|
||||||
ENV = YENV = B->cp_env;
|
|
||||||
HR = B->cp_h;
|
|
||||||
TR = B->cp_tr;
|
|
||||||
// use the current choicepoint
|
|
||||||
// B=B->cp_b;
|
|
||||||
ASP=(CELL*)B;
|
|
||||||
}
|
|
||||||
if (B)
|
|
||||||
B = B->cp_b;
|
|
||||||
if (LOCAL_PrologMode & AsyncIntMode) {
|
if (LOCAL_PrologMode & AsyncIntMode) {
|
||||||
Yap_signal(YAP_FAIL_SIGNAL);
|
Yap_signal(YAP_FAIL_SIGNAL);
|
||||||
}
|
}
|
||||||
|
P=dgi->p;
|
||||||
|
CP = dgi->cp;
|
||||||
RECOVER_MACHINE_REGS();
|
RECOVER_MACHINE_REGS();
|
||||||
// fprintf(stderr,"LeftGoal success=%d: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", successful,HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot);
|
// fprintf(stderr,"LeftGoal success=%d: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", successful,HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -641,7 +641,7 @@ init_one_query(QueryID,Query,Type) :-
|
|||||||
rb_new(H0),
|
rb_new(H0),
|
||||||
maplist_to_hash(MapList, H0, Hash),
|
maplist_to_hash(MapList, H0, Hash),
|
||||||
Tree \= [],
|
Tree \= [],
|
||||||
tree_to_grad(Tree, Hash, [], Grad),
|
tree_to_grad(Tree, Hash, [], Grad)
|
||||||
;
|
;
|
||||||
Bdd = bdd(-1,[],[]),
|
Bdd = bdd(-1,[],[]),
|
||||||
Grad=[]
|
Grad=[]
|
||||||
@ -669,7 +669,7 @@ init_one_query(_QueryID,_Query,_Type) :-
|
|||||||
|
|
||||||
|
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%= updates all values of query_probability/2 and query_gradient/4
|
%= Updates all values of query_probability/2 and query_gradient/4
|
||||||
%= should be called always before these predicates are accessed
|
%= should be called always before these predicates are accessed
|
||||||
%= if the old values are still valid, nothing happens
|
%= if the old values are still valid, nothing happens
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
Reference in New Issue
Block a user