make a better effort to avoid walking through system code.
This commit is contained in:
parent
e42083a2bb
commit
f668676e72
@ -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), !.
|
||||||
|
@ -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),
|
||||||
!,
|
!,
|
||||||
|
@ -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, _).
|
||||||
|
|
||||||
|
|
||||||
|
@ -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).
|
||||||
|
Reference in New Issue
Block a user