From f668676e72ee7318eb51dfe7507c52f3c6d05868 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 17 Apr 2009 15:46:13 -0500 Subject: [PATCH] make a better effort to avoid walking through system code. --- pl/boot.yap | 4 ++-- pl/debug.yap | 3 +++ pl/modules.yap | 1 - pl/signals.yap | 26 +++++++++++++++++++++++++- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/pl/boot.yap b/pl/boot.yap index 84893dd71..1df3d7281 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -1170,7 +1170,7 @@ throw(Ball) :- % just leave this around to show the debugger. % '$notrace'(M:G) :- - '$execute0'(G, M). + '$execute_nonstop'(G, M). '$oncenotrace'(M:G) :- - '$execute0'(G, M), !. + '$execute_nonstop'(G, M), !. diff --git a/pl/debug.yap b/pl/debug.yap index 46638745c..013767cfe 100644 --- a/pl/debug.yap +++ b/pl/debug.yap @@ -465,6 +465,9 @@ debugging :- '$system_predicate'(G,M), \+ '$is_metapredicate'(G,M), !, '$execute'(M:G). +'$spycall'(G, M, _, _) :- + '$system_module'(M), !, + '$execute'(M:G). '$spycall'(G, M, _, _) :- '$tabled_predicate'(G,M), !, diff --git a/pl/modules.yap b/pl/modules.yap index b7cb41f33..590cbadbb 100644 --- a/pl/modules.yap +++ b/pl/modules.yap @@ -661,4 +661,3 @@ abolish_module(_). '$conj_has_cuts'(G3, DCP, NG3, OK). '$conj_has_cuts'(G,_,G, _). - diff --git a/pl/signals.yap b/pl/signals.yap index a01f72ae0..5edc58e0f 100644 --- a/pl/signals.yap +++ b/pl/signals.yap @@ -35,7 +35,31 @@ % don't creep on meta-call. '$do_signal'(sig_creep, [M|G]) :- '$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]) :- '$signal_creep', '$execute_nonstop'(G,M).