fix debugging in the presence of goal_expansion
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@432 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
ec120bccac
commit
3ef0b143b0
6
C/exec.c
6
C/exec.c
@ -190,10 +190,11 @@ p_save_cp(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
inline static Int
|
||||
static Int
|
||||
EnterCreepMode(SMALLUNSGN mod) {
|
||||
PredEntry *PredSpy = RepPredProp(PredPropByFunc(FunctorSpy,0));
|
||||
ARG1 = MkPairTerm(ModuleName[mod],ARG1);
|
||||
Term tn = MkApplTerm(MkFunctor(AtomMetaCall,1),1,&ARG1);
|
||||
ARG1 = MkPairTerm(ModuleName[mod],tn);
|
||||
CreepFlag = CalculateStackGap();
|
||||
P_before_spy = P;
|
||||
return (CallPredicate(PredSpy, B));
|
||||
@ -1189,6 +1190,7 @@ p_restore_regs(void)
|
||||
static Int
|
||||
p_restore_regs2(void)
|
||||
{
|
||||
|
||||
Term t = Deref(ARG1), d0;
|
||||
choiceptr pt0;
|
||||
if (IsVarTerm(t)) {
|
||||
|
@ -750,7 +750,8 @@ not(A) :-
|
||||
% this is a meta-predicate
|
||||
'$flags'(A,CurMod,F,_), F /\ 0x200000 =:= 0x200000
|
||||
), !,
|
||||
'$exec_with_expansion'(A, CurMod, CurMod).
|
||||
'$expand_goal'(A, CurMod, CurMod, NG, NMod),
|
||||
'$execute0'(NG, NMod).
|
||||
'$call'(A, _, _, M) :-
|
||||
'$execute0'(A, M).
|
||||
|
||||
@ -799,7 +800,8 @@ not(A) :-
|
||||
% this is a meta-predicate
|
||||
'$flags'(A,CurMod,F,_), F /\ 0x200000 =:= 0x200000
|
||||
), !,
|
||||
'$exec_with_expansion'(A, CurMod, CurMod).
|
||||
'$expand_goal'(A, CurMod, CurMod, NG, NMod),
|
||||
'$execute0'(NG, NMod).
|
||||
'$spied_call'(A, CP, G0, M) :-
|
||||
( '$undefined'(A, M) ->
|
||||
functor(A,F,N),
|
||||
@ -828,7 +830,8 @@ not(A) :-
|
||||
'$recorded'('$import','$import'(S,M,F,N),_),
|
||||
S \= M, % can't try importing from the module itself.
|
||||
!,
|
||||
'$exec_with_expansion'(G, S, M).
|
||||
'$expand_goal'(G, S, M, NG, NMod),
|
||||
'$execute0'(NG, NMod).
|
||||
'$undefp'([M|G]) :-
|
||||
\+ '$undefined'(unknown_predicate_handler(_,_,_), user),
|
||||
user:unknown_predicate_handler(G,M,NG), !,
|
||||
|
11
pl/debug.yap
11
pl/debug.yap
@ -249,6 +249,10 @@ debugging :-
|
||||
'$wake_up_goal'(G, LG).
|
||||
'$spy'([_|Mod:G]) :- !,
|
||||
'$spy'([Mod|G]).
|
||||
'$spy'([Module|'$call'(G)]) :- !,
|
||||
'fetch_goal_module'(G, Module, G1, Mod),
|
||||
'$expand_goal'(G1, Mod, Module, NG, NM),
|
||||
'$do_spy'(NG, NM).
|
||||
'$spy'([Module|G]) :-
|
||||
% '$format'(user_error,"$spym(~w,~w)~n",[Module,G]),
|
||||
'$hidden'(G),
|
||||
@ -259,7 +263,12 @@ debugging :-
|
||||
'$spy'([Mod|G]) :-
|
||||
'$do_spy'(G,Mod).
|
||||
|
||||
|
||||
'fetch_goal_module'(V, M, V, M) :- var(V), !.
|
||||
'fetch_goal_module'(M:G, _, NG, Mod) :- !,
|
||||
'fetch_goal_module'(G, M, NG, Mod).
|
||||
'fetch_goal_module'(G, M, G, M).
|
||||
|
||||
|
||||
'$direct_spy'(G) :-
|
||||
'$awoken_goals'(LG), !,
|
||||
'$creep',
|
||||
|
@ -317,18 +317,23 @@ module(N) :-
|
||||
% calling the meta-call expansion facility and expand_goal from
|
||||
% a meta-call.
|
||||
%
|
||||
'$exec_with_expansion'(G0, GoalMod, CurMod) :-
|
||||
'$expand_goal'(G0, GoalMod, CurMod, G, NM) :-
|
||||
'$meta_expansion'(GoalMod, CurMod, G0, GF, []), !,
|
||||
'$exec_with_expansion2'(GF,GoalMod).
|
||||
'$exec_with_expansion'(G, GoalMod, _) :-
|
||||
'$exec_with_expansion2'(G,GoalMod).
|
||||
'$expand_goal2'(GF,GoalMod,G,NM).
|
||||
'$expand_goal'(G, GoalMod, _, NG, NM) :-
|
||||
'$expand_goal2'(G, GoalMod, NG, NM).
|
||||
|
||||
'$exec_with_expansion2'(G, M) :-
|
||||
'$expand_goal2'(G, M, NG, NM) :-
|
||||
'$undefined'(G,M),
|
||||
functor(G,F,N),
|
||||
'$recorded'('$import','$import'(ExportingMod,M,F,N),_),
|
||||
ExportingMod \= M,
|
||||
!,
|
||||
'$expand_goal2'(G, ExportingMod, NG, NM).
|
||||
'$expand_goal2'(G, M, GF, M) :-
|
||||
'$pred_goal_expansion_on',
|
||||
user:goal_expansion(G,M,GF), !,
|
||||
'$execute'(M:GF).
|
||||
'$exec_with_expansion2'(G, M) :- !,
|
||||
'$execute0'(G, M).
|
||||
user:goal_expansion(G,M,GF), !.
|
||||
'$expand_goal2'(G, M, G, M).
|
||||
|
||||
|
||||
% expand module names in a body
|
||||
|
Reference in New Issue
Block a user