From 457052f6611904c066ffc5cc6b1c0b87ed5cc7d0 Mon Sep 17 00:00:00 2001 From: Theofrastos Mantadelis Date: Mon, 17 Jan 2011 12:02:05 +0100 Subject: [PATCH 01/11] Corrected a minor ProbLog bug --- packages/ProbLog/problog.yap | 6 ++++-- packages/ProbLog/problog/ptree.yap | 7 +++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/ProbLog/problog.yap b/packages/ProbLog/problog.yap index 23ea671bc..cb70ad91d 100644 --- a/packages/ProbLog/problog.yap +++ b/packages/ProbLog/problog.yap @@ -2,8 +2,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% $Date: 2010-12-15 11:12:48 +0100 (Wed, 15 Dec 2010) $ -% $Revision: 5138 $ +% $Date: 2011-01-16 19:24:10 +0100 (Sun, 16 Jan 2011) $ +% $Revision: 5260 $ % % This file is part of ProbLog % http://dtai.cs.kuleuven.be/problog @@ -521,6 +521,7 @@ init_global_params :- problog_define_flag(bdd_result, problog_flag_validate_file, 'file to store result calculated from BDD', example_bdd_res, bdd, flags:working_file_handler), problog_define_flag(bdd_file, problog_flag_validate_file, 'file for BDD script', example_bdd, bdd, flags:bdd_file_handler), problog_define_flag(static_order_file, problog_flag_validate_file, 'file for BDD static order', example_bdd_order, bdd, flags:working_file_handler), + problog_define_flag(map_file, problog_flag_validate_file, 'the file to output the variable map', map_file, output, flags:working_file_handler), %%%%%%%%%%%% % montecarlo: recalculate current approximation after N samples % montecarlo: write log to this file @@ -2458,6 +2459,7 @@ montecarlo(Goal,Delta,K,File) :- format(Log,'# goal: ~q~n#delta: ~w~n',[Goal,Delta]), format(Log,'# num_programs prob low high diff time~2n',[]), close(Log), + timer_reset(monte_carlo), timer_start(monte_carlo), format_if_verbose(user,'search for ~q~n',[Goal]), montecarlo(Goal,Delta,K,0,File,0), diff --git a/packages/ProbLog/problog/ptree.yap b/packages/ProbLog/problog/ptree.yap index e11fd1a20..2d8afb1d2 100644 --- a/packages/ProbLog/problog/ptree.yap +++ b/packages/ProbLog/problog/ptree.yap @@ -2,8 +2,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% $Date: 2010-12-20 12:35:25 +0100 (Mon, 20 Dec 2010) $ -% $Revision: 5161 $ +% $Date: 2011-01-16 19:24:10 +0100 (Sun, 16 Jan 2011) $ +% $Revision: 5260 $ % % This file is part of ProbLog % http://dtai.cs.kuleuven.be/problog @@ -283,8 +283,7 @@ problog_define_flag(use_old_trie, problog_flag_validate_boolean, 'use the old trie 2 trie transformation no nested', true), problog_define_flag(use_dec_trie, problog_flag_validate_boolean, 'use the decomposition method', false), problog_define_flag(deref_terms, problog_flag_validate_boolean, 'deref BDD terms after last use', false), - problog_define_flag(export_map_file, problog_flag_validate_boolean, 'activates export of a variable map file', false, output), - problog_define_flag(map_file, problog_flag_validate_file, 'the file to output the variable map', map_file, output) + problog_define_flag(export_map_file, problog_flag_validate_boolean, 'activates export of a variable map file', false, output) )). From 75703ed89a8a3b22d2a0d7283e395a354e6af8e0 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 11:49:37 -0600 Subject: [PATCH 02/11] fix top-level message --- pl/boot.yap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pl/boot.yap b/pl/boot.yap index 01da760c4..11080bdc7 100755 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -536,7 +536,8 @@ true :- true. % end of YAPOR '$query'(G,[]) :- - '$prompt_alternatives_on'(groundness), !, + '$prompt_alternatives_on'(OPT), + ( OPT = groundness ; OPT = determinism), !, '$yes_no'(G,(?-)). '$query'(G,V) :- ( From d593f99c1371ab8e305dfac1de7d5668495a8dd3 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 11:50:08 -0600 Subject: [PATCH 03/11] fix style check on reconsulting. --- pl/checker.yap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pl/checker.yap b/pl/checker.yap index 6e52d9a53..87d8995a8 100644 --- a/pl/checker.yap +++ b/pl/checker.yap @@ -149,7 +149,7 @@ no_style_check([H|T]) :- no_style_check(H), no_style_check(T). ; get_value('$syntaxcheckmultiple',on) )), - recorded('$reconsulting',File,_), + nb_getval('$consulting_file',File), '$xtract_head'(T,M,NM,_,F,A), \+ ( % allow duplicates if we are not the last predicate to have From d52d05a626fd3695116450dd4e61c955595864cc Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 11:51:46 -0600 Subject: [PATCH 04/11] fix atom_term builtin not to require previous loading of charsio. --- library/charsio.yap | 13 ------------- pl/utils.yap | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/library/charsio.yap b/library/charsio.yap index 416627bf0..0c7b67d11 100644 --- a/library/charsio.yap +++ b/library/charsio.yap @@ -49,13 +49,6 @@ format_to_chars(Form, Args, OUT, L0) :- write_to_chars(Term, OUT) :- write_to_chars(Term, [], OUT). -write_to_chars(Term, L0, OUT) :- - open_mem_write_stream(Stream), - write(Stream, Term), - peek_mem_write_stream(Stream, L0, O), - close(Stream), - O = OUT. - atom_to_chars(Atom, OUT) :- atom_to_chars(Atom, [], OUT). @@ -88,12 +81,6 @@ number_to_chars(Number, L0, OUT) :- number_to_chars(Number, L0, OUT) :- throw(error(type_error(number,Number),number_to_chars(Number, L0, OUT))). -read_from_chars(Chars, Term) :- - open_mem_read_stream(Chars, Stream), - read(Stream, T), - close(Stream), - T = Term. - open_chars_stream(Chars, Stream) :- open_mem_read_stream(Chars, Stream). diff --git a/pl/utils.yap b/pl/utils.yap index f0635810e..80829018f 100644 --- a/pl/utils.yap +++ b/pl/utils.yap @@ -684,6 +684,23 @@ term_to_atom(Term,Atom) :- charsio:write_to_chars(Term,S), atom_codes(Atom,S). +% +% hack this here. +% +charsio:write_to_chars(Term, L0, OUT) :- + charsio:open_mem_write_stream(Stream), + prolog:write(Stream, Term), + charsio:peek_mem_write_stream(Stream, L0, O), + prolog:close(Stream), + O = OUT. + +charsio:read_from_chars(Chars, Term) :- + charsio:open_mem_read_stream(Chars, Stream), + prolog:read(Stream, T), + prolog:close(Stream), + T = Term. + + simple(V) :- var(V), !. simple(A) :- atom(A), !. simple(N) :- number(N). From 26706d20ffc39a9d9a2a979eff348e0c545f3679 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 11:53:00 -0600 Subject: [PATCH 05/11] make SREG YENV before calling heapgc in absmi. --- C/absmi.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/C/absmi.c b/C/absmi.c index dff8cb0e5..94848a886 100755 --- a/C/absmi.c +++ b/C/absmi.c @@ -792,7 +792,6 @@ Yap_absmi(int inp) noheapleft: { CELL cut_b = LCL0-(CELL *)(SREG[E_CB]); - #ifdef SHADOW_S S = SREG; #endif @@ -2535,6 +2534,7 @@ Yap_absmi(int inp) PP = PREG->u.pp.p0; if (ActiveSignals & YAP_CDOVF_SIGNAL) { ASP = YREG+E_CB; + SREG = YENV; if (ASP > (CELL *)PROTECT_FROZEN_B(B)) ASP = (CELL *)PROTECT_FROZEN_B(B); goto noheapleft; @@ -2690,6 +2690,7 @@ Yap_absmi(int inp) SREG = (CELL *) PREG->u.Osbpp.p; if (ActiveSignals & YAP_CDOVF_SIGNAL) { ASP = (CELL *) (((char *) YREG) + PREG->u.Osbpp.s); + SREG = YENV; if (ASP > (CELL *)PROTECT_FROZEN_B(B)) ASP = (CELL *)PROTECT_FROZEN_B(B); goto noheapleft; @@ -2926,6 +2927,7 @@ Yap_absmi(int inp) ASP = (CELL *) (((char *) YREG) + PREG->u.Osbpp.s); if (ASP > (CELL *)PROTECT_FROZEN_B(B)) ASP = (CELL *)PROTECT_FROZEN_B(B); + SREG = YENV; goto noheapleft; } if (ActiveSignals) { @@ -3049,6 +3051,7 @@ Yap_absmi(int inp) ASP = YREG+E_CB; if (ASP > (CELL *)PROTECT_FROZEN_B(B)) ASP = (CELL *)PROTECT_FROZEN_B(B); + SREG = YENV; goto noheapleft; } if (ActiveSignals) @@ -14558,6 +14561,7 @@ Yap_absmi(int inp) if (ActiveSignals) { if (ActiveSignals & YAP_CDOVF_SIGNAL) { UNLOCK(SignalLock); + SREG = YENV; goto noheapleft; } UNLOCK(SignalLock); From d024e9f0ae8ee6227a457b73ccc85df5bcb2f837 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 11:59:54 -0600 Subject: [PATCH 06/11] ask YAP to get memory step by step in 64 bit maachines. --- C/alloc.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/C/alloc.c b/C/alloc.c index 98ae23471..a0b0fe53b 100755 --- a/C/alloc.c +++ b/C/alloc.c @@ -1595,15 +1595,29 @@ Yap_ExtendWorkSpaceThroughHole(UInt s) WorkSpaceTop = WorkSpaceTop0; return -1; } +#endif +#elif SIZEOF_INT_P==8 + { + int n = 1024*1024; + while (n) { + /* progress 1 MB */ + WorkSpaceTop += 512*1024; + if (ExtendWorkSpace(s, MAP_FIXED)) { + Yap_add_memory_hole((ADDR)WorkSpaceTop0, (ADDR)WorkSpaceTop-s); + Yap_ErrorMessage = NULL; + return WorkSpaceTop-WorkSpaceTop0; + } +#if defined(_WIN32) + /* 487 happens when you step over someone else's memory */ + if (GetLastError() != 487) { + WorkSpaceTop = WorkSpaceTop0; + return -1; + } +#endif + } #endif } WorkSpaceTop = WorkSpaceTop0; -#endif - if (ExtendWorkSpace(s, 0)) { - Yap_add_memory_hole((ADDR)WorkSpaceTop0, (ADDR)WorkSpaceTop-s); - Yap_ErrorMessage = NULL; - return WorkSpaceTop-WorkSpaceTop0; - } #endif return -1; } From 4e90d6874843969f0163e5a42e976f2e15092d27 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 12:01:18 -0600 Subject: [PATCH 07/11] fix bad casts --- C/index.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/C/index.c b/C/index.c index 7e0425c96..f9f6b635b 100644 --- a/C/index.c +++ b/C/index.c @@ -2430,18 +2430,15 @@ count_consts(GroupDef *grp) static UInt count_blobs(GroupDef *grp) { - Term current = MkAtomTerm(AtomFoundVar); - UInt i = 0; - ClauseDef *cl = grp->FirstClause; + UInt i = 1; + ClauseDef *cl = grp->FirstClause+1; + Term current = grp->FirstClause->Tag; - while (TRUE) { + while (cl <= grp->LastClause) { if (current != cl->Tag) { i++; current = cl->Tag; } - if (cl == grp->LastClause) { - return i; - } cl++; } return i; @@ -2653,9 +2650,13 @@ do_consts(GroupDef *grp, Term t, struct intermediates *cint, int compound_term, return lbl; } +int vsc_n; + static void do_blobs(GroupDef *grp, Term t, struct intermediates *cint, UInt argno, int first, UInt nxtlbl, int clleft, CELL *top) { + vsc_n++; + if (vsc_n == 112205) jmp_deb(1); COUNT n; ClauseDef *min = grp->FirstClause; COUNT i; @@ -3224,7 +3225,7 @@ do_dbref_index(ClauseDef *min, ClauseDef* max, Term t, struct intermediates *cin Yap_emit(label_op, labl, Zero, cint); Yap_emit(index_dbref_op, Zero, Zero, cint); sort_group(group,(CELL *)(group+1),cint); - do_blobs(group, t, cint, argno, first, fail_l, clleft, (CELL *)group+1); + do_blobs(group, t, cint, argno, first, fail_l, clleft, (CELL *)(group+1)); return labl; } } @@ -3261,7 +3262,7 @@ do_blob_index(ClauseDef *min, ClauseDef* max, Term t, struct intermediates *cint else Yap_emit(index_long_op, Zero, Zero, cint); sort_group(group,(CELL *)(group+1),cint); - do_blobs(group, t, cint, argno, first, fail_l, clleft, (CELL *)group+1); + do_blobs(group, t, cint, argno, first, fail_l, clleft, (CELL *)(group+1)); return labl; } } From 76b3aec555337e7f85f0b6b9fdb5974857ad745f Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 12:01:50 -0600 Subject: [PATCH 08/11] remove debugging stubs. --- C/index.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/C/index.c b/C/index.c index f9f6b635b..5ce457be5 100644 --- a/C/index.c +++ b/C/index.c @@ -2650,13 +2650,9 @@ do_consts(GroupDef *grp, Term t, struct intermediates *cint, int compound_term, return lbl; } -int vsc_n; - static void do_blobs(GroupDef *grp, Term t, struct intermediates *cint, UInt argno, int first, UInt nxtlbl, int clleft, CELL *top) { - vsc_n++; - if (vsc_n == 112205) jmp_deb(1); COUNT n; ClauseDef *min = grp->FirstClause; COUNT i; From 9d1ae2f96a2f02bcb105d51f406ef2d647edc111 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 12:03:38 -0600 Subject: [PATCH 09/11] allow spaces in numerica atoms/strings. --- C/scanner.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/C/scanner.c b/C/scanner.c index a97b78b86..4eb362753 100755 --- a/C/scanner.c +++ b/C/scanner.c @@ -717,6 +717,9 @@ Yap_scan_num(int (*Nxtch) (int)) return TermNil; } ch = Nxtch(-1); + while (chtype(ch) == BS) { + ch = Nxtch(-1); + } if (ch == '-') { sign = -1; ch = Nxtch(-1); From 404c6d3a4f64fa12a368060139547a1371220379 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 12:04:50 -0600 Subject: [PATCH 10/11] protect registers. --- library/dialect/swi/fli/swi.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index 3f2064986..01552dd8d 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -1924,15 +1924,16 @@ typedef struct { X_API int PL_unify_term(term_t l,...) { va_list ap; - int type; + int type, res; int nels = 1; int depth = 1; Term a[1], *pt; stack_el stack[MAX_DEPTH]; - + BACKUP_MACHINE_REGS(); if (Unsigned(H) > Unsigned(ASP)-CreepFlag) { if (!Yap_gc(0, ENV, CP)) { + RECOVER_MACHINE_REGS(); return FALSE; } } @@ -2137,7 +2138,9 @@ X_API int PL_unify_term(term_t l,...) } } va_end (ap); - return YAP_Unify(Yap_GetFromSlot(l),a[0]); + res = Yap_unify(Yap_GetFromSlot(l),a[0]); + RECOVER_MACHINE_REGS(); + return res; } /* end PL_unify_* functions =============================*/ From 313273cce01d48e6fcb07b320758a6bfb4ce2545 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 21 Jan 2011 08:14:30 -0600 Subject: [PATCH 11/11] fix debugging messages. --- C/c_interface.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/C/c_interface.c b/C/c_interface.c index 90946129c..eac1cb109 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -3174,7 +3174,6 @@ YAP_Record(Term t) dbt->prev_rec = NULL; dbt->dbrecord = dbterm; Yap_Records = dbt; - fprintf(stderr,"adding %p\n", dbt); return dbt; } @@ -3182,7 +3181,6 @@ X_API Term YAP_Recorded(void *handle) { Term t; - fprintf(stderr,"reading %p\n", handle); DBTerm *dbterm = ((DBRecordList *)handle)->dbrecord; BACKUP_MACHINE_REGS(); @@ -3215,7 +3213,6 @@ YAP_Recorded(void *handle) X_API int YAP_Erase(void *handle) { - fprintf(stderr,"erasing %p\n", handle); DBRecordList *dbr = (DBRecordList *)handle; Yap_ReleaseTermFromDB(dbr->dbrecord); if (dbr->next_rec)