This commit is contained in:
Vitor Santos Costa 2018-10-25 13:57:18 +01:00
parent e163ccb6c0
commit 563b642672
8 changed files with 69 additions and 77 deletions

View File

@ -186,18 +186,6 @@ eval0(Int fi) {
RINT((Int)ASP);
#else
RINT(LCL0 - ASP);
#endif
case op_b:
/// - $b
/// current choicepoint
///
#if YAPOR_SBA
RINT((Int)B);
#else
if (B)
RINT(LCL0 - (CELL *)B);
else
RINT(0);
#endif
case op_env:
/// - $env
@ -257,7 +245,6 @@ static InitConstEntry InitConstTab[] = {
{"heapused", op_heapused},
{"local_sp", op_localsp},
{"global_sp", op_globalsp},
{"$last_choice_pt", op_b},
{"$env", op_env},
{"$tr", op_tr},
{"stackfree", op_stackfree},

View File

@ -235,8 +235,8 @@ absolute_file_name(File0,File) :-
'$absf_trace'(' after name/library unfolding: ~w', [Name]),
'$variable_expansion'(CorePath, Opts,ExpandedPath),
'$absf_trace'(' after environment variable expansion: ~s', [ExpandedPath]),
'$prefix'(ExpandedPath, Opts, Path , []),
'$absf_trace'(' after prefix expansion: ~s', [Path]),
'$file_prefix'(ExpandedPath, Opts, Path , []),
'$absf_trace'(' after file_prefix expansion: ~s', [Path]),
atom_codes( APath, Path ),
(
Expand = true
@ -366,11 +366,12 @@ absolute_file_name(File0,File) :-
'$absf_trace'(' try no suffix', []).
'$add_suffix'(Cs) -->
{ Cs = [0'. |_Codes] }
(
{ Cs = [0'. |_Codes] }
->
Cs
;
".", Cs.
".", Cs ).
'$glob'(Opts) -->
{
@ -392,32 +393,32 @@ absolute_file_name(File0,File) :-
Base \= '.',
Base \='..'.
'$prefix'( CorePath, _Opts) -->
'$file_prefix'( CorePath, _Opts) -->
{ is_absolute_file_name( CorePath ) },
!,
CorePath.
'$prefix'( CorePath, Opts) -->
{ get_abs_file_parameter( relative_to, Opts, Prefix ),
Prefix \= '',
'$absf_trace'(' relative_to ~a', [Prefix]),
sub_atom(Prefix, _, 1, 0, Last),
atom_codes(Prefix, S)
'$file_prefix'( CorePath, Opts) -->
{ get_abs_file_parameter( relative_to, Opts, File_Prefix ),
File_Prefix \= '',
'$absf_trace'(' relative_to ~a', [File_Prefix]),
sub_atom(File_Prefix, _, 1, 0, Last),
atom_codes(File_Prefix, S)
},
!,
S,
'$dir'(Last),
CorePath.
'$prefix'( CorePath, _) -->
'$file_prefix'( CorePath, _) -->
{
recorded('$path',Prefix,_),
'$absf_trace'(' try YAP path database ~a', [Prefix]),
sub_atom(Prefix, _, _, 1, Last),
atom_codes(Prefix, S) },
recorded('$path',File_Prefix,_),
'$absf_trace'(' try YAP path database ~a', [File_Prefix]),
sub_atom(File_Prefix, _, _, 1, Last),
atom_codes(File_Prefix, S) },
S,
'$dir'(Last),
CorePath.
'$prefix'(CorePath, _ ) -->
'$absf_trace'(' empty prefix', []),
'$file_prefix'(CorePath, _ ) -->
'$absf_trace'(' empty file_prefix ', []),
CorePath.

View File

@ -164,8 +164,8 @@ ignore(Goal) :- (Goal->true;true).
*
*/
if(X,Y,Z) :-
(
CP is '$last_choice_pt',
(
'$$save_by'(CP),
'$call'(X,CP,if(X,Y,Z),M),
'$execute'(X),
'$clean_ifcp'(CP),

View File

@ -284,7 +284,7 @@ be lost.
* @return `call(Goal)`
*/
'$spy'([Mod|G]) :-
'$trace'([Mod|G]).
'$trace'(Mod:G).
/**
* @pred $trace( +Goal )
@ -298,13 +298,13 @@ be lost.
* @param _Mod_:_Goal_ is the goal to be examined.
* @return `call(Goal)`
*/
%% '$trace'([Mod|G]) :-
%% '$stop_creeping'(_),
% set_prolog_flag(debug, true),
%% !,
%% '$execute_nonstop'(G,Mod).
'$trace'([Mod|G]) :-
CP is '$last_choice_pt',
'$trace'(Mod:G) :-
'$stop_creeping'(_),
( prolog_flag(debug, false) ; '__NB_getval__'('$debug_status',state(zip,_Border,_Spy), fail) ),
!,
'$execute_nonstop'(G,Mod).
'$trace'(Mod:G) :-
'$$save_by'(CP),
'$trace_query'(G, Mod, CP, G, EG),
gated_call(
'$debugger_input',
@ -323,47 +323,47 @@ be lost.
'$trace'([Mod|G], A1) :-
'$trace'(Mod:G, A1) :-
G =.. L,
lists:append( L, [A1], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
'$trace'([Mod|G], A1, A2) :-
'$trace'(Mod:G, A1, A2) :-
G =.. L,
lists:append( L, [A1, A2], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
'$trace'([Mod|G], A1, A2, A3) :-
'$trace'(Mod:G, A1, A2, A3) :-
G =.. L,
lists:append( L, [A1, A2, A3], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
'$trace'([Mod|G], A1, A2, A3, A4) :-
'$trace'(Mod:G, A1, A2, A3, A4) :-
G =.. L,
lists:append( L, [A1,A2,A3,A4], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
'$trace'([Mod|G], A1, A2, A3, A4, A5) :-
'$trace'(Mod:G, A1, A2, A3, A4, A5) :-
G =.. L,
lists:append( L, [A1, A2, A3, A4, A5], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
'$trace'([Mod|G], A1, A2, A3, A4, A5, A6) :-
'$trace'(Mod:G, A1, A2, A3, A4, A5, A6) :-
G =.. L,
lists:append( L, [A1, A2, A3, A4, A5, A6], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
'$trace'([Mod|G], A1, A2, A3, A4, A5, A6, A7) :-
'$trace'(Mod:G, A1, A2, A3, A4, A5, A6, A7) :-
G =.. L,
lists:append( L, [A1, A2, A3, A4, A5, A6, A7 ], NL),
NG =.. NL,
'$trace'([Mod|NG]).
'$trace'(Mod:NG).
/**
* @pred debugger_input.
@ -573,8 +573,8 @@ be lost.
*
*/
'$trace_go'(GoalNumber, G, M, Info) :-
X=marker(_,M,G),
CP is '$last_choice_pt',
X=marker(_,M,G),
'$$save_by'(CP),
clause(M:G, Cl, _),
'$retry_clause'(GoalNumber, G, M, Info, X),
'$trace_query'(Cl, M, CP, Cl, ECl),
@ -651,12 +651,8 @@ be lost.
%%% - abort: forward throw while the call is newer than goal
'$TraceError'( abort, _, _, _, _).
'$TraceError'(forward(redo,_G0), _, _, _, _).
%%% - backtrack long distance
'$TraceError'(forward(fail,_G0),GoalNumber, _, _, _) :- !,
throw(debugger(fail,GoalNumber)).
%%%
'$TraceError'( error(Id,Info), _, _, _, _) :-
throw( error(Id, Info) ).
%%% - forward through the debugger
'$TraceError'(forward('$wrapper',Event), _, _, _, _) :-
!,
@ -689,8 +685,9 @@ be lost.
%
'$gg'(CP,Goal) :-
CP is '$last_choice_point',
Goal.
'$$save_by'(CP0),
CP = CP0,
Goal.
'$port'(_P, _G, _M,GoalNumber,_Determinic, _Info ) :- %%> leap
'__NB_getval__'('$debug_status',state(leap,Border,_), fail),
@ -1008,8 +1005,7 @@ be lost.
'$cps'([CP|CPs]) :-
yap_hacks:choicepoint(CP,A,B,C,D,E,F),
write(A:B:C:D:E:F),nl,
yap_hacks:choicepoint(CP,_A_,_B,_C,_D,_E,_F),
'$cps'(CPs).
'$cps'([]).
@ -1050,7 +1046,7 @@ be lost.
'$debugger_process_meta_arguments'(G, _M, G).
'$ldebugger_process_meta_args'([], _, [], []).
'$ldebugger_process_meta_args'([G|BGs], M, [N|BMs], ['$trace'([M1|G1])|BG1s]) :-
'$ldebugger_process_meta_args'([G|BGs], M, [N|BMs], ['$user_call'(G1,M1)|BG1s]) :-
number(N),
N >= 0,
'$yap_strip_module'( M:G, M1, G1 ),

View File

@ -197,6 +197,9 @@ compose_message( halt, _Level) --> !,
[ 'YAP execution halted.'-[] ].
% syntax error.
compose_message( error(event(Type),Info), _Level ) -->
!,
event(Type, Info).
compose_message(error(warning(syntax_error,Info), Exc), Level) -->
!,
compose_message(error(syntax_error(Info), Exc), Level).
@ -239,7 +242,7 @@ compose_message(trace_command(C), _Leve) -->
compose_message(trace_help, _Leve) -->
!,
[ ' Please enter a valid debugger command (h for help).' ].
compose_message(version(Version), _Leve) -->
compose_message(version(Version), _Level) -->
!,
[ '~a' - [Version] ].
compose_message(myddas_version(Version), _Leve) -->
@ -296,6 +299,10 @@ location( error(_,Info), Level, LC ) -->
[ '~a:~d:0 ~a while executing ~a():'-[File, FilePos,Level,FF] ].
location( _Ball, _Level, _LC ) --> [].
event(redo, _Info) --> {fail}.
event(fail, _Info) --> {fail}.
event(abort, Info) --> { throw(event(abort, Info)) }.
simplify_pred(user:F, F) :- !.
simplify_pred(prolog:F, F) :- !.
simplify_pred(F, F).

View File

@ -178,7 +178,7 @@
debug,
'$execute'(M:G).
'$start_creep'([Mod|G], _WhereFrom) :-
'$trace'([Mod|G]).
'$trace'(Mod:G).
'$no_creep_call'('$execute_clause'(G,Mod,Ref,CP),_) :- !,
'$enable_debugging',

View File

@ -13,7 +13,8 @@
* @{
* \*/
:- '$system_meta_predicates'([
:- '$system_meta_predicates'([
gated_call(0,0,?,0),
catch(0,?,0),
log_event(+,:)]).
@ -338,11 +339,10 @@ live :-
%
'$delayed_goals'(G, V, NV, LGs, NCP) :-
(
CP is '$last_choice_pt',
'$current_choice_point'(NCP1),
'$$save_by'(NCP1),
attributes:delayed_goals(G, V, NV, LGs),
'$clean_ifcp'(CP),
'$current_choice_point'(NCP2),
'$clean_ifcp'(NCP1),
'$$save_by'(NCP2),
NCP is NCP2-NCP1
;
copy_term_nat(V, NV),
@ -830,6 +830,7 @@ Command = (H --> B) ->
/* General purpose predicates */
'$head_and_body'(M:(H:-B),M:H,M:B) :- !.
'$head_and_body'((H:-B),H,B) :- !.
'$head_and_body'(H,H,true).

View File

@ -1095,8 +1095,8 @@ setup(_,_,_).
% Call Goal in Module after applying goal expansion.
call_ex(Module, Goal) :-
Module:(expand_goal(Goal, GoalEx),
GoalEx).
(expand_goal(Goal,Module: GoalEx),
Module:GoalEx).
%% cleanup(+Module, +Options) is det.
%