Update of /cvsroot/xsb/XSB/syslib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28966 Modified Files: assert.H assert.P assert.xwam basics.xwam consult.xwam curr_sym.xwam dbclause.xwam dcg.xwam debugger.xwam domain.xwam error_handler.xwam file_io.xwam file_op.xwam loader.xwam machine.xwam setof.xwam shell.xwam standard.xwam string.xwam tables.xwam unix.xwam x_interp.xwam xcallxsb.xwam xsb_hook.xwam xsb_read.xwam xsb_writ.xwam Log Message: Mostly just updating .xwam files due to compiler changes. But also changes in assert to allow the user to ask for anonymous variables to be detected so uniavar and bldavar instructions will be generated. Index: assert.H =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/assert.H,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- assert.H 15 Mar 2004 14:13:02 -0000 1.18 +++ assert.H 31 Aug 2004 00:25:09 -0000 1.19 @@ -25,7 +25,7 @@ :- export assert0/1, assert/1, asserta/1, assertz/1, - asserti/2, assertai/2, assertzi/2. + asserti/2, assertai/2, assertzi/2, assert/3. :- export retract/1, retractall/1, abolish/1, abolish/2. :- export retract0/1. % used in standard.P (for multifile) :- export retract_nr/1, reclaim_space/1. @@ -36,9 +36,10 @@ :- export exchange_definitions/2. :- import append/3 from basics. +:- import ground/1 from basics. :- import (=..)/2, functor/3, integer/1, callable/1, throw/1, goal_cut_trans/3, goal_cut_untrans/2, abort/1, arity_integer/1, - is_most_general_term/1 + is_most_general_term/1, atomic/1 from standard. %%:- import call_c/1 from standard. :- import db_retract/3, db_retractall/2, db_abolish/1, db_clause/4, @@ -51,6 +52,7 @@ psc_tabled/2, psc_set_ep/2, unload_seg/1, db_build_prref/3, code_call/3, db_retract0/2 from machine. +:- import parsort/4 from machine. :- import db_get_last_clause/4 from machine. %%:- import term_psc/2 from machine. :- import '_$table'/1 from file_op. Index: assert.P =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/assert.P,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- assert.P 20 Aug 2004 18:16:24 -0000 1.26 +++ assert.P 31 Aug 2004 00:25:09 -0000 1.27 @@ -40,7 +40,9 @@ /* where: */ /* assert(+Clause, +AorZ, +Index) */ /* Asserts a clause. */ -/* AorZ: 0 for insertion as the first clause, 1 for as the last. */ +/* AorZ/\1: 0 for insertion as the first clause, 1 for as last. */ +/* AorZ/\2: 0 for uniform treatment of anonymous variables, */ +/* 2 for special treatment of anonymous variables. */ /* Index: the number of the argument on which to index; */ /* 0 for no indexing. */ /*======================================================================*/ @@ -142,8 +144,7 @@ assertai(Clause,Index) :- assert(Clause,0,Index). assertzi(Clause,Index) :- assert(Clause,1,Index). - -assert(Clause, AZ, Index1) :- +assert(Clause, AZL, Index1) :- (Clause = (Head:-_) -> conpsc(Head, PSC) ; Clause = Head -> conpsc(Head, PSC) @@ -165,15 +166,61 @@ NArity is Arity+1, % to hold the cut addr convert_to_dyna(Head,Prref), cut_transform(Clause,Nclause), - code_to_buff(Nclause), + code_to_buff(Nclause,AZL), + AZ is AZL /\ 1, assert_buff_to_clref(Head,NArity,Prref,AZ,Index,HashTabSize) ). /* Must fail after code is put into buffer, to reset variables bound in the process */ -code_to_buff(Clause) :- assert_code_to_buff(Clause), fail. -code_to_buff(_). - +code_to_buff(Clause,AZ) :- + (AZ =< 1 + -> assert_code_to_buff(Clause), fail + ; bind_single_occ_vars(Clause,'$assertAVAR'), + assert_code_to_buff(Clause), fail + ). +code_to_buff(_,_). + +/* bind all single-occurrence variables in Term to Val. Used so +assert in C will know which variables are anonymous and can generate +better code for them (and not use registers) */ +bind_single_occ_vars(Term,Val) :- + (ground(Term) + -> true + ; accumulate_vars(Term,AllVars,[]), + parsort(AllVars,asc,0,SAllVars), + SAllVars = [V1|RVars], + bind_single_occs_f(RVars,V1,Val) + ). + +accumulate_vars(Term,Vars0,Vars) :- + (var(Term) + -> Vars0 = [Term|Vars] + ; atomic(Term) + -> Vars0 = Vars + ; Term =.. [_|Args], + accumulate_vars_list(Args,Vars0,Vars) + ). + +accumulate_vars_list([],Vars,Vars). +accumulate_vars_list([T|Ts],Vars0,Vars) :- + accumulate_vars(T,Vars0,Vars1), + accumulate_vars_list(Ts,Vars1,Vars). + +bind_single_occs_f([],Val,Val). +bind_single_occs_f([V1|RVars],V1a,Val) :- + (V1 == V1a + -> bind_single_occs(RVars,V1a,Val) + ; V1a = Val, + bind_single_occs_f(RVars,V1,Val) + ). + +bind_single_occs([],_V1a,_Val). +bind_single_occs([V1|RVars],V1a,Val) :- + (V1 == V1a + -> bind_single_occs(RVars,V1a,Val) + ; bind_single_occs_f(RVars,V1,Val) + ). /*======================================================================*/ /* check_assert(+Clause, +Predicate_Called) */ Index: assert.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/assert.xwam,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 Binary files /tmp/cvsSVUAN2 and /tmp/cvs5BvQw4 differ Index: basics.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/basics.xwam,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 Binary files /tmp/cvstgUWp4 and /tmp/cvsGtHBb6 differ Index: consult.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.xwam,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 Binary files /tmp/cvs4Iohra and /tmp/cvskLqrfc differ Index: curr_sym.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/curr_sym.xwam,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 Binary files /tmp/cvscHxnnd and /tmp/cvsnLM4ef differ Index: dbclause.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/dbclause.xwam,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 Binary files /tmp/cvsg4Jugg and /tmp/cvsQ3VAei differ Index: dcg.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/dcg.xwam,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 Binary files /tmp/cvsvGf4tj and /tmp/cvsnmGPvl differ Index: debugger.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/debugger.xwam,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 Binary files /tmp/cvsfraLho and /tmp/cvsNiFHmq differ Index: domain.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/domain.xwam,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 Binary files /tmp/cvsSHwF0s and /tmp/cvsS9cI8u differ Index: error_handler.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/error_handler.xwam,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 Binary files /tmp/cvsI5Hyfz and /tmp/cvsUXQ4pB differ Index: file_io.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/file_io.xwam,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 Binary files /tmp/cvsOmCLoE and /tmp/cvsfrhtDG differ Index: file_op.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/file_op.xwam,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 Binary files /tmp/cvsoe6ZbI and /tmp/cvshiunsK differ Index: loader.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/loader.xwam,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 Binary files /tmp/cvs7RqsdV and /tmp/cvs6WqRDX differ Index: machine.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/machine.xwam,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 Binary files /tmp/cvsn4UOOZ and /tmp/cvsSECNg2 differ Index: setof.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/setof.xwam,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 Binary files /tmp/cvsFMgNH8 and /tmp/cvsobcrfb differ Index: shell.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/shell.xwam,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 Binary files /tmp/cvsW0Uf9c and /tmp/cvsMiDZJf differ Index: standard.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/standard.xwam,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 Binary files /tmp/cvsIjR03e and /tmp/cvs7SWtHh differ Index: string.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/string.xwam,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 Binary files /tmp/cvscMzayh and /tmp/cvsyPbedk differ Index: tables.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/tables.xwam,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 Binary files /tmp/cvsVC3P1e and /tmp/cvsd8rRJh differ Index: unix.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/unix.xwam,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 Binary files /tmp/cvsX8JLnf and /tmp/cvswdzw7h differ Index: x_interp.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/x_interp.xwam,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 Binary files /tmp/cvsAZ01sl and /tmp/cvsNYFffo differ Index: xcallxsb.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/xcallxsb.xwam,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 Binary files /tmp/cvsEa1Rwn and /tmp/cvssHVpkq differ Index: xsb_hook.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/xsb_hook.xwam,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 Binary files /tmp/cvskAX9an and /tmp/cvsxDz2Zp differ Index: xsb_read.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/xsb_read.xwam,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 Binary files /tmp/cvsUI1Uru and /tmp/cvsNAPClx differ Index: xsb_writ.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/xsb_writ.xwam,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 Binary files /tmp/cvsVwMZQB and /tmp/cvs7iKVNE differ |