make a better effort to avoid walking through system code.

This commit is contained in:
Vitor Santos Costa 2009-04-17 15:46:13 -05:00
parent e42083a2bb
commit f668676e72
4 changed files with 30 additions and 4 deletions

View File

@ -1170,7 +1170,7 @@ throw(Ball) :-
% just leave this around to show the debugger. % just leave this around to show the debugger.
% %
'$notrace'(M:G) :- '$notrace'(M:G) :-
'$execute0'(G, M). '$execute_nonstop'(G, M).
'$oncenotrace'(M:G) :- '$oncenotrace'(M:G) :-
'$execute0'(G, M), !. '$execute_nonstop'(G, M), !.

View File

@ -465,6 +465,9 @@ debugging :-
'$system_predicate'(G,M), '$system_predicate'(G,M),
\+ '$is_metapredicate'(G,M), !, \+ '$is_metapredicate'(G,M), !,
'$execute'(M:G). '$execute'(M:G).
'$spycall'(G, M, _, _) :-
'$system_module'(M), !,
'$execute'(M:G).
'$spycall'(G, M, _, _) :- '$spycall'(G, M, _, _) :-
'$tabled_predicate'(G,M), '$tabled_predicate'(G,M),
!, !,

View File

@ -661,4 +661,3 @@ abolish_module(_).
'$conj_has_cuts'(G3, DCP, NG3, OK). '$conj_has_cuts'(G3, DCP, NG3, OK).
'$conj_has_cuts'(G,_,G, _). '$conj_has_cuts'(G,_,G, _).

View File

@ -35,7 +35,31 @@
% don't creep on meta-call. % don't creep on meta-call.
'$do_signal'(sig_creep, [M|G]) :- '$do_signal'(sig_creep, [M|G]) :-
'$creep_allowed', !, '$creep_allowed', !,
'$start_creep'([M|G]). (
( G = '$notrace'(G0) ; G = '$oncenotrace'(G0) ; G = '$execute0'(G0) ; '$system_module'(M), G = G0 )
->
(
'$execute_nonstop'(G0,M),
'$signal_creep'
;
'$signal_creep',
fail
)
;
'$start_creep'([M|G])
).
%
'$do_signal'(sig_creep, [M|G]) :-
( G = '$notrace'(G0) ; G = '$oncenotrace'(G0) ; G = '$execute0'(G0) ; '$system_module'(M), G = G0 ),
!,
(
'$execute_nonstop'(G0,M),
'$signal_creep'
;
'$signal_creep',
fail
).
%
'$do_signal'(sig_creep, [M|G]) :- '$do_signal'(sig_creep, [M|G]) :-
'$signal_creep', '$signal_creep',
'$execute_nonstop'(G,M). '$execute_nonstop'(G,M).