From 990dfbecbfa8a772a119b8cca38912dd0ffd72d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 30 Oct 2013 09:41:45 +0000 Subject: [PATCH] fix flags upgrade --- os/pl-prologflag.c | 4 ++++ os/pl-read.c | 6 ------ pl/boot.yap | 6 ++++++ pl/consult.yap | 7 ++++--- pl/flags.yap | 17 ----------------- pl/init.yap | 2 -- pl/modules.yap | 22 +++++++++++++++++++--- 7 files changed, 33 insertions(+), 31 deletions(-) diff --git a/os/pl-prologflag.c b/os/pl-prologflag.c index b0d00cfa8..5b4a27e8d 100644 --- a/os/pl-prologflag.c +++ b/os/pl-prologflag.c @@ -1136,7 +1136,11 @@ initPrologFlags(void) setPrologFlag("user_flags", FT_ATOM, "silent"); setPrologFlag("editor", FT_ATOM, "default"); setPrologFlag("debugger_show_context", FT_BOOL, FALSE, 0); +#ifndef __YAP_PROLOG__ setPrologFlag("autoload", FT_BOOL, TRUE, PLFLAG_AUTOLOAD); +#else + setPrologFlag("autoload", FT_BOOL, FALSE, PLFLAG_AUTOLOAD); +#endif #ifndef O_GMP setPrologFlag("max_integer", FT_INT64|FF_READONLY, PLMAXINT); setPrologFlag("min_integer", FT_INT64|FF_READONLY, PLMININT); diff --git a/os/pl-read.c b/os/pl-read.c index e4ed6b1ff..7ccf9413f 100644 --- a/os/pl-read.c +++ b/os/pl-read.c @@ -997,9 +997,6 @@ atom_to_term(term_t atom, term_t term, term_t bindings) { GET_LD PL_chars_t txt; - { FILE *f=fopen("/home/vsc/coutput.txt", "append"); - fprintf(f, "IN: %ld\n", bindings); - fclose(f); } if ( !bindings && PL_is_variable(atom) ) /* term_to_atom(+, -) */ { char buf[1024]; size_t bufsize = sizeof(buf); @@ -1018,9 +1015,6 @@ atom_to_term(term_t atom, term_t term, term_t bindings) txt.storage = PL_CHARS_HEAP; txt.encoding = ENC_UTF8; txt.canonical = FALSE; - { FILE *f=fopen("/home/vsc/coutput.txt", "append"); - fprintf(f, "SUCCESS: %s\n", buf); - fclose(f); } rval = PL_unify_text(atom, 0, &txt, PL_ATOM); Sclose(stream); diff --git a/pl/boot.yap b/pl/boot.yap index 28ced225c..ece9bc282 100755 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -18,6 +18,12 @@ % % % +c(G, C, A) :- + '$$save_by'(CP0), + '$execute'(G), + '$$save_by'(CP1), + (CP0 == CP1 -> !; true ). + true :- true. diff --git a/pl/consult.yap b/pl/consult.yap index cb5af77e8..fd7101f45 100755 --- a/pl/consult.yap +++ b/pl/consult.yap @@ -923,8 +923,8 @@ absolute_file_name(File,Opts,TrueFileName) :- '$get_if'(Level0), Level is Level0 + 1, nb_setval('$if_level',Level), - '$nb_getval'('$endif', OldEndif, OldEndif=top), - '$nb_getval'('$if_skip_mode', Mode, Mode=run), + ( '$nb_getval'('$endif', OldEndif, fail) -> true ; OldEndif=top), + ( '$nb_getval'('$if_skip_mode', Mode, fail) -> true ; Mode = run ), nb_setval('$endif',elif(Level,OldEndif,Mode)), fail. % we are in skip mode, ignore.... @@ -938,6 +938,7 @@ absolute_file_name(File,Opts,TrueFileName) :- % we will execute this branch, and later enter skip '$nb_getval'('$endif', elif(Level,OldEndif,Mode), fail), nb_setval('$endif',endif(Level,OldEndif,Mode)) + ; % we are now in skip, but can start an elif. nb_setval('$if_skip_mode',skip) @@ -949,7 +950,7 @@ absolute_file_name(File,Opts,TrueFileName) :- '$do_error'(context_error(no_if),(:- else)). % we have done an if, so just skip '$else'(_) :- - nb_getval('$endif',endif(_,_,_)), !, + nb_getval('$endif',endif(_Level,_,_)), !, nb_setval('$if_skip_mode',skip). % we can try the elif '$else'(_) :- diff --git a/pl/flags.yap b/pl/flags.yap index 58e8739fa..45baed920 100755 --- a/pl/flags.yap +++ b/pl/flags.yap @@ -45,16 +45,6 @@ yap_flag(V,Out) :- yap_flag(fast,on) :- set_value('$fast',true). yap_flag(fast,off) :- !, set_value('$fast',[]). -% do or do not machine code -yap_flag(autoload,V) :- - var(V), !, - ( autoloader:autoload -> V = true ; V = false ). -yap_flag(autoload,true) :- - '$ensure_autoload', - assert(autoloader:autoload). -yap_flag(autoload,false) :- - retract(autoloader:autoload). - % do or do not machine code yap_flag(argv,L) :- '$argv'(L). @@ -702,7 +692,6 @@ yap_flag(max_threads,X) :- '$yap_system_flag'(agc_margin). '$yap_system_flag'(answer_format). '$yap_system_flag'(argv). -'$yap_system_flag'(autoload). '$yap_system_flag'(char_conversion). '$yap_system_flag'(character_escapes). '$yap_system_flag'(chr_toplevel_show_store). @@ -1017,9 +1006,3 @@ create_prolog_flag(Name, Value, Options) :- '$flag_domain_from_value'(_, term). -'$ensure_autoload' :- - load_files([library(autoloader), - autoloader:library('INDEX'), - swi:library('dialect/swi/INDEX')], - [silent(true),if(not_loaded)]). - diff --git a/pl/init.yap b/pl/init.yap index f5161b579..bd1db782c 100755 --- a/pl/init.yap +++ b/pl/init.yap @@ -173,8 +173,6 @@ yap_hacks:cut_by(CP) :- '$$cut_by'(CP). % :- ( recorded('$loaded','$loaded'(_,_,_),R), erase(R), fail ; true ). -:- dynamic autoloader:autoload/0. - :- set_value('$user_module',user), '$protect'. :- style_check([-discontiguous,-multiple,-single_var]). diff --git a/pl/modules.yap b/pl/modules.yap index 93cef0942..4e785dec0 100644 --- a/pl/modules.yap +++ b/pl/modules.yap @@ -431,13 +431,29 @@ expand_goal(G, G). call(Dialect:index(Name,Arity,ExportingModI,_)), !, '$continue_imported'(ExportingMod, ExportingModI, G0, G), !. '$get_undefined_pred'(G, _ImportingMod, G0, ExportingMod) :- - autoloader:autoload, - autoloader:find_predicate(G,ExportingModI), !, - '$continue_imported'(ExportingMod, ExportingModI, G0, G), !. + yap_flag(autoload, V), + V = true, + '$autoloader_find_predicate'(G,ExportingModI), !, + '$continue_imported'(ExportingMod, ExportingModI, G0, G). '$get_undefined_pred'(G, ImportingMod, G0, ExportingMod) :- prolog:'$parent_module'(ImportingMod,ExportingModI), '$continue_imported'(ExportingMod, ExportingModI, G0, G). + +'$autoloader_find_predicate'(G,ExportingModI) :- + '$nb_getval'('$autoloader_set', true, fail), !, + autoloader:find_predicate(G,ExportingModI). +'$autoloader_find_predicate'(G,ExportingModI) :- + yap_flag(autoload, false), + load_files([library(autoloader), + autoloader:library('INDEX'), + swi:library('dialect/swi/INDEX')], + [silent(true),if(not_loaded)]), + nb_setval('$autoloader_set', true), + yap_flag(autoload, true), + autoloader:find_predicate(G,ExportingModI). + + '$continue_imported'(Mod,Mod,Pred,Pred) :- \+ '$undefined'(Pred, Mod), !. '$continue_imported'(FM,Mod,FPred,Pred) :-