avoid unnecessy retry ports
This commit is contained in:
parent
30e5e5d803
commit
87a075bd28
20
pl/debug.yap
20
pl/debug.yap
@ -333,7 +333,7 @@ debugging :-
|
|||||||
L1 is L+1, /* bump it */
|
L1 is L+1, /* bump it */
|
||||||
nb_setval('$spy_gn',L1), /* and save it globaly */
|
nb_setval('$spy_gn',L1), /* and save it globaly */
|
||||||
b_getval('$spy_glist',History), /* get goal list */
|
b_getval('$spy_glist',History), /* get goal list */
|
||||||
b_setval('$spy_glist',[info(L,Module,G,_Retry,_Det)|History]), /* and update it */
|
b_setval('$spy_glist',[info(L,Module,G,_Retry,_Det,_HasFoundAnswers)|History]), /* and update it */
|
||||||
'$loop_spy'(L, G, Module, CalledFromDebugger). /* set creep on */
|
'$loop_spy'(L, G, Module, CalledFromDebugger). /* set creep on */
|
||||||
|
|
||||||
% we are skipping, so we can just call the goal,
|
% we are skipping, so we can just call the goal,
|
||||||
@ -393,7 +393,8 @@ debugging :-
|
|||||||
;
|
;
|
||||||
G = G0
|
G = G0
|
||||||
),
|
),
|
||||||
b_getval('$spy_glist',[info(_,_,_,Retry,Det)|_]), /* get goal list */
|
b_getval('$spy_glist',[Info|_]), /* get goal list */
|
||||||
|
Info = info(_,_,_,Retry,Det,false),
|
||||||
(
|
(
|
||||||
/* call port */
|
/* call port */
|
||||||
'$enter_goal'(GoalNumber, G, Module),
|
'$enter_goal'(GoalNumber, G, Module),
|
||||||
@ -408,6 +409,8 @@ debugging :-
|
|||||||
/* go execute the predicate */
|
/* go execute the predicate */
|
||||||
(
|
(
|
||||||
Retry = false ->
|
Retry = false ->
|
||||||
|
/* found an answer, so it can redo */
|
||||||
|
nb_setarg(6, Info, true),
|
||||||
'$show_trace'(exit,G,Module,GoalNumber,Det), /* output message at exit */
|
'$show_trace'(exit,G,Module,GoalNumber,Det), /* output message at exit */
|
||||||
/* exit port */
|
/* exit port */
|
||||||
/* get rid of deterministic computations */
|
/* get rid of deterministic computations */
|
||||||
@ -424,8 +427,15 @@ debugging :-
|
|||||||
/* we get here when we want to redo a goal */
|
/* we get here when we want to redo a goal */
|
||||||
/* redo port */
|
/* redo port */
|
||||||
'$disable_docreep',
|
'$disable_docreep',
|
||||||
'$show_trace'(redo,G,Module,GoalNumber,_), /* inform user_error */
|
(
|
||||||
'$continue_debugging'(CalledFromDebugger),
|
arg(6, Info, true)
|
||||||
|
->
|
||||||
|
'$show_trace'(redo,G,Module,GoalNumber,_), /* inform user_error */
|
||||||
|
nb_setarg(6, Info, false)
|
||||||
|
;
|
||||||
|
true
|
||||||
|
),
|
||||||
|
'$continue_debugging'(CalledFromDebugger),
|
||||||
fail /* to backtrack to spycalls */
|
fail /* to backtrack to spycalls */
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
@ -743,7 +753,7 @@ debugging :-
|
|||||||
|
|
||||||
'$show_ancestors'([],_).
|
'$show_ancestors'([],_).
|
||||||
'$show_ancestors'([_|_],0) :- !.
|
'$show_ancestors'([_|_],0) :- !.
|
||||||
'$show_ancestors'([info(L,M,G,Retry,Det)|History],HowMany) :-
|
'$show_ancestors'([info(L,M,G,Retry,Det,_Exited)|History],HowMany) :-
|
||||||
'$show_ancestor'(L,M,G,Retry,Det,HowMany,HowMany1),
|
'$show_ancestor'(L,M,G,Retry,Det,HowMany,HowMany1),
|
||||||
'$show_ancestors'(History,HowMany1).
|
'$show_ancestors'(History,HowMany1).
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user