From dddc9fbb8554fcf1d445ac644037a735e5732f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Fri, 3 Oct 2014 08:49:14 +0100 Subject: [PATCH] fix listing/0 to avoid going into every system predicate. --- pl/listing.yap | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/pl/listing.yap b/pl/listing.yap index 8463cea1d..122194cbc 100644 --- a/pl/listing.yap +++ b/pl/listing.yap @@ -40,10 +40,16 @@ clauses for static predicates compiled when source mode was `on`). */ listing :- - current_output(Stream), - '$current_module'(Mod), - '$current_predicate_no_modules'(Mod,_,Pred), - '$list_clauses'(Stream,Mod,Pred). + current_output(Stream), + '$current_module'(Mod), + Mod \= prolog, + Mod \= system, + \+ '$hidden'( Mod ), + '$current_predicate_no_modules'(Mod,_,Pred), + '$undefined'(Pred, prolog), % skip predicates exported from prolog. + functor(Pred,Name,Arity), + '$listing'(Name/Arity,Mod,Stream), + fail. listing. /** @pred listing(+ _P_) @@ -57,7 +63,8 @@ listing(MV) :- listing(Stream, MV). listing(Stream, MV) :- - '$mlisting'(Stream, MV, _). + strip_module( MV, M, I), + '$mlisting'(Stream, I, M). listing(Stream, []) :- !. listing(Stream, [MV|MVs]) :- !, listing(Stream, MV), @@ -98,9 +105,13 @@ listing(Stream, [MV|MVs]) :- !, '$list_clauses'(Stream, M, Pred) :- '$flags'(Pred,M,Flags,Flags), - Flags /\ 0x48602000 =\= 0, - nl(Stream), - fail. + (Flags /\ 0x48602000 =\= 0 + -> + nl(Stream), + fail + ; + ! + ). '$list_clauses'(Stream, M, Pred) :- ( '$is_dynamic'(Pred, M) -> true ; '$is_log_updatable'(Pred, M) ), functor( Pred, N, Ar ),