diff --git a/H/dglobals.h b/H/dglobals.h index 76e73d237..a844461f7 100644 --- a/H/dglobals.h +++ b/H/dglobals.h @@ -24,6 +24,7 @@ #define GLOBAL_InitialisedFromPL Yap_global->InitialisedFromPL_ #define GLOBAL_PL_Argc Yap_global->PL_Argc_ #define GLOBAL_PL_Argv Yap_global->PL_Argv_ +#define GLOBAL_FAST_BOOT_FLAG Yap_global->FAST_BOOT_FLAG_ #define GLOBAL_HaltHooks Yap_global->HaltHooks_ #define GLOBAL_JIT_finalizer Yap_global->JIT_finalizer_ @@ -69,12 +70,14 @@ #define GLOBAL_WithMutex Yap_global->WithMutex_ #endif /* THREADS */ -#define GLOBAL_stdout Yap_global->stdout_ -#define GLOBAL_stderr Yap_global->stderr_ +#define GLOBAL_Stream Yap_global->Stream_ #define GLOBAL_argv Yap_global->argv_ #define GLOBAL_argc Yap_global->argc_ +#define GLOBAL_Flags Yap_global->Flags_ +#define GLOBAL_flagCount Yap_global->flagCount_ + #ifdef COROUTINING #define GLOBAL_attas Yap_global->attas_ @@ -134,3 +137,8 @@ #endif #define GLOBAL_Home Yap_global->Home_ +#define GLOBAL_CharConversionTable Yap_global->CharConversionTable_ +#define GLOBAL_CharConversionTable2 Yap_global->CharConversionTable2_ + +#define GLOBAL_LastWtimePtr Yap_global->LastWtimePtr_ + diff --git a/H/dhstruct.h b/H/dhstruct.h index 8039fa41d..4410732d0 100644 --- a/H/dhstruct.h +++ b/H/dhstruct.h @@ -85,8 +85,51 @@ #ifdef EUROTRA #define TermDollarU Yap_heap_regs->term_dollar_u #endif +#define TermAppend Yap_heap_regs->term_append +#define TermAtom Yap_heap_regs->term_atomd +#define TermBinary Yap_heap_regs->term_binary +#define TermBoolean Yap_heap_regs->term_boolean +#define TermChars Yap_heap_regs->term_chars +#define TermCodes Yap_heap_regs->term_codes +#define TermCompact Yap_heap_regs->term_compact +#define TermDec10 Yap_heap_regs->term_dec10 +#define TermDots Yap_heap_regs->term_dots +#define TermEof Yap_heap_regs->term_eof +#define TermEOfCode Yap_heap_regs->term_eof_code +#define TermError Yap_heap_regs->term_error +#define TermException Yap_heap_regs->term_exception +#define TermFail Yap_heap_regs->term_fail +#define TermFalse Yap_heap_regs->term_false +#define TermFloat Yap_heap_regs->term_float +#define TermGlobal Yap_heap_regs->term_global +#define TermIgnore Yap_heap_regs->term_ignore +#define TermInteger Yap_heap_regs->term_integer +#define TermMax Yap_heap_regs->term_max +#define TermModule Yap_heap_regs->term_module +#define TermMulti Yap_heap_regs->term_multi +#define TermOff Yap_heap_regs->term_off +#define TermOn Yap_heap_regs->term_on +#define TermPortray Yap_heap_regs->term_portray #define TermProlog Yap_heap_regs->term_prolog +#define TermQuiet Yap_heap_regs->term_quiet +#define TermRead Yap_heap_regs->term_read +#define TermReadOnly Yap_heap_regs->term_read_only +#define TermReadWrite Yap_heap_regs->term_read_write #define TermReFoundVar Yap_heap_regs->term_refound_var +#define TermReset Yap_heap_regs->term_reset +#define TermSilent Yap_heap_regs->term_silent +#define TermSingle Yap_heap_regs->term_single +#define TermSource Yap_heap_regs->term_source +#define TermString Yap_heap_regs->term_string +#define TermSymbolChar Yap_heap_regs->term_symbolchar +#define TermTerm Yap_heap_regs->term_term +#define TermText Yap_heap_regs->term_text +#define TermThread Yap_heap_regs->term_thread +#define TermTrue Yap_heap_regs->term_true +#define TermWarning Yap_heap_regs->term_warning +#define TermWrite Yap_heap_regs->term_write +#define TermXml Yap_heap_regs->term_xml + #define USER_MODULE Yap_heap_regs->user_module #define IDB_MODULE Yap_heap_regs->idb_module #define ATTRIBUTES_MODULE Yap_heap_regs->attributes_module @@ -111,6 +154,12 @@ + + + + + + #define Yap_ExecutionMode Yap_heap_regs->execution_mode #define PredHash Yap_heap_regs->pred_hash @@ -267,22 +316,8 @@ #define Yap_AttsSize Yap_heap_regs->atts_size #endif -#define yap_flags Yap_heap_regs->yap_flags_field - #define OpList Yap_heap_regs->op_list -#define CharConversionTable Yap_heap_regs->char_conversion_table -#define CharConversionTable2 Yap_heap_regs->char_conversion_table2 - -#define ParserErrorStyle Yap_heap_regs->parser_error_style - -#define Yap_LibDir Yap_heap_regs->yap_lib_dir -#define Yap_ForeignDir Yap_heap_regs->yap_foreign_dir -#define Yap_CommonsDir Yap_heap_regs->yap_commons_dir -#define Yap_BinDir Yap_heap_regs->yap_bin_dir - -#define LastWtimePtr Yap_heap_regs->last_wtime - #define ForeignCodeLoaded Yap_heap_regs->foreign_code_loaded #define ForeignCodeBase Yap_heap_regs->foreign_code_base #define ForeignCodeTop Yap_heap_regs->foreign_code_top @@ -299,10 +334,10 @@ #define EmptyWakeups Yap_heap_regs->empty_wakeups #define MaxEmptyWakeups Yap_heap_regs->max_empty_wakeups -#define SWI_BlobTypes Yap_heap_regs->swi_blob_types -#define SWI_Blobs Yap_heap_regs->swi_blobs +#define BlobTypes Yap_heap_regs->swi_blob_types +#define Blobs Yap_heap_regs->swi_blobs #define NOfBlobs Yap_heap_regs->nofblobs #define NOfBlobsMax Yap_heap_regs->nofblobsmax #if defined(YAPOR) || defined(THREADS) -#define SWI_Blobs_Lock Yap_heap_regs->swi_blobs_lock +#define Blobs_Lock Yap_heap_regs->blobs_lock #endif diff --git a/H/dlocals.h b/H/dlocals.h index 110e80882..9d6a43200 100644 --- a/H/dlocals.h +++ b/H/dlocals.h @@ -5,12 +5,46 @@ +#define LOCAL_FileAliases LOCAL->FileAliases_ +#define REMOTE_FileAliases(wid) REMOTE(wid)->FileAliases_ +#define LOCAL_NOfFileAliases LOCAL->NOfFileAliases_ +#define REMOTE_NOfFileAliases(wid) REMOTE(wid)->NOfFileAliases_ +#define LOCAL_SzOfFileAliases LOCAL->SzOfFileAliases_ +#define REMOTE_SzOfFileAliases(wid) REMOTE(wid)->SzOfFileAliases_ #define LOCAL_c_input_stream LOCAL->c_input_stream_ #define REMOTE_c_input_stream(wid) REMOTE(wid)->c_input_stream_ #define LOCAL_c_output_stream LOCAL->c_output_stream_ #define REMOTE_c_output_stream(wid) REMOTE(wid)->c_output_stream_ #define LOCAL_c_error_stream LOCAL->c_error_stream_ #define REMOTE_c_error_stream(wid) REMOTE(wid)->c_error_stream_ +#define LOCAL_sockets_io LOCAL->sockets_io_ +#define REMOTE_sockets_io(wid) REMOTE(wid)->sockets_io_ + + + + +#define LOCAL_newline LOCAL->newline_ +#define REMOTE_newline(wid) REMOTE(wid)->newline_ +#define LOCAL_FormatInfo LOCAL->FormatInfo_ +#define REMOTE_FormatInfo(wid) REMOTE(wid)->FormatInfo_ +#define LOCAL_AtPrompt LOCAL->AtPrompt_ +#define REMOTE_AtPrompt(wid) REMOTE(wid)->AtPrompt_ +#define LOCAL_Prompt LOCAL->Prompt_ +#define REMOTE_Prompt(wid) REMOTE(wid)->Prompt_ +#define LOCAL_encoding LOCAL->encoding_ +#define REMOTE_encoding(wid) REMOTE(wid)->encoding_ +#define LOCAL_quasi_quotations LOCAL->quasi_quotations_ +#define REMOTE_quasi_quotations(wid) REMOTE(wid)->quasi_quotations_ +#define LOCAL_default_priority LOCAL->default_priority_ +#define REMOTE_default_priority(wid) REMOTE(wid)->default_priority_ +#define LOCAL_eot_before_eof LOCAL->eot_before_eof_ +#define REMOTE_eot_before_eof(wid) REMOTE(wid)->eot_before_eof_ +#define LOCAL_max_depth LOCAL->max_depth_ +#define REMOTE_max_depth(wid) REMOTE(wid)->max_depth_ +#define LOCAL_max_list LOCAL->max_list_ +#define REMOTE_max_list(wid) REMOTE(wid)->max_list_ +#define LOCAL_max_write_args LOCAL->max_write_args_ +#define REMOTE_max_write_args(wid) REMOTE(wid)->max_write_args_ #define LOCAL_OldASP LOCAL->OldASP_ #define REMOTE_OldASP(wid) REMOTE(wid)->OldASP_ @@ -80,6 +114,10 @@ #define REMOTE_ConsultLow(wid) REMOTE(wid)->ConsultLow_ #define LOCAL_VarNames LOCAL->VarNames_ #define REMOTE_VarNames(wid) REMOTE(wid)->VarNames_ +#define LOCAL_SourceFileName LOCAL->SourceFileName_ +#define REMOTE_SourceFileName(wid) REMOTE(wid)->SourceFileName_ +#define LOCAL_SourceFileLineno LOCAL->SourceFileLineno_ +#define REMOTE_SourceFileLineno(wid) REMOTE(wid)->SourceFileLineno_ #define LOCAL_GlobalArena LOCAL->GlobalArena_ #define REMOTE_GlobalArena(wid) REMOTE(wid)->GlobalArena_ @@ -219,8 +257,7 @@ #define LOCAL_LabelFirstArraySz LOCAL->LabelFirstArraySz_ #define REMOTE_LabelFirstArraySz(wid) REMOTE(wid)->LabelFirstArraySz_ -#define LOCAL_PL_local_data_p LOCAL->PL_local_data_p_ -#define REMOTE_PL_local_data_p(wid) REMOTE(wid)->PL_local_data_p_ + #ifdef THREADS #define LOCAL_ThreadHandle LOCAL->ThreadHandle_ #define REMOTE_ThreadHandle(wid) REMOTE(wid)->ThreadHandle_ @@ -228,6 +265,8 @@ #if defined(YAPOR) || defined(TABLING) #define LOCAL_optyap_data LOCAL->optyap_data_ #define REMOTE_optyap_data(wid) REMOTE(wid)->optyap_data_ +#define LOCAL_TabMode LOCAL->TabMode_ +#define REMOTE_TabMode(wid) REMOTE(wid)->TabMode_ #endif /* YAPOR || TABLING */ #define LOCAL_InterruptsDisabled LOCAL->InterruptsDisabled_ #define REMOTE_InterruptsDisabled(wid) REMOTE(wid)->InterruptsDisabled_ @@ -287,11 +326,18 @@ #define LOCAL_FileNameBuf2 LOCAL->FileNameBuf2_ #define REMOTE_FileNameBuf2(wid) REMOTE(wid)->FileNameBuf2_ +#define LOCAL_BreakLevel LOCAL->BreakLevel_ +#define REMOTE_BreakLevel(wid) REMOTE(wid)->BreakLevel_ #define LOCAL_PrologMode LOCAL->PrologMode_ #define REMOTE_PrologMode(wid) REMOTE(wid)->PrologMode_ #define LOCAL_CritLocks LOCAL->CritLocks_ #define REMOTE_CritLocks(wid) REMOTE(wid)->CritLocks_ +#define LOCAL_Flags LOCAL->Flags_ +#define REMOTE_Flags(wid) REMOTE(wid)->Flags_ +#define LOCAL_flagCount LOCAL->flagCount_ +#define REMOTE_flagCount(wid) REMOTE(wid)->flagCount_ + #ifdef ANALYST #define LOCAL_opcount LOCAL->opcount_ diff --git a/H/hglobals.h b/H/hglobals.h index 1592160bc..ea51a139c 100644 --- a/H/hglobals.h +++ b/H/hglobals.h @@ -24,6 +24,7 @@ typedef struct global_data { int InitialisedFromPL_; int PL_Argc_; char** PL_Argv_; + bool FAST_BOOT_FLAG_; struct halt_hook* HaltHooks_; fptr_t JIT_finalizer_; @@ -69,12 +70,14 @@ typedef struct global_data { struct swi_mutex* WithMutex_; #endif /* THREADS */ - struct io_stream* stdout_; - struct io_stream* stderr_; + struct stream_desc* Stream_; char** argv_; int argc_; + union flagTerm* Flags_; + UInt flagCount_; + #ifdef COROUTINING ext_op attas_[attvars_ext+1]; @@ -133,4 +136,9 @@ typedef struct global_data { lockvar MUT_ACCESS_; #endif char* Home_; + + char* CharConversionTable_; + char* CharConversionTable2_; + + void* LastWtimePtr_; } w_shared; diff --git a/H/hlocals.h b/H/hlocals.h index 711b48ec3..c5bbf0fa4 100644 --- a/H/hlocals.h +++ b/H/hlocals.h @@ -5,9 +5,28 @@ typedef struct worker_local { + struct AliasDescS* FileAliases_; + int NOfFileAliases_; + int SzOfFileAliases_; int c_input_stream_; int c_output_stream_; int c_error_stream_; + bool sockets_io_; + + + + + bool newline_; + struct format_status* FormatInfo_; + Atom AtPrompt_; + char Prompt_[MAX_PROMPT+1]; + encoding_t encoding_; + bool quasi_quotations_; + UInt default_priority_; + bool eot_before_eof_; + UInt max_depth_; + UInt max_list_; + UInt max_write_args_; CELL* OldASP_; CELL* OldLCL0_; @@ -46,6 +65,8 @@ typedef struct worker_local { union CONSULT_OBJ* ConsultLow_; Term VarNames_; + Atom SourceFileName_; + UInt SourceFileLineno_; Term GlobalArena_; UInt GlobalArenaOverflows_; @@ -121,12 +142,13 @@ typedef struct worker_local { Int* LabelFirstArray_; UInt LabelFirstArraySz_; - struct PL_local_data* PL_local_data_p_; + #ifdef THREADS struct thandle ThreadHandle_; #endif /* THREADS */ #if defined(YAPOR) || defined(TABLING) struct local_optyap_data optyap_data_; + UInt TabMode_; #endif /* YAPOR || TABLING */ int InterruptsDisabled_; struct open_query_struct* execution_; @@ -159,9 +181,13 @@ typedef struct worker_local { char FileNameBuf_[YAP_FILENAME_MAX]; char FileNameBuf2_[YAP_FILENAME_MAX]; + UInt BreakLevel_; Int PrologMode_; int CritLocks_; + union flagTerm* Flags_; + UInt flagCount_; + #ifdef ANALYST YAP_ULONG_LONG opcount_[_std_top+1]; diff --git a/H/hstruct.h b/H/hstruct.h index adfcc17ff..7aec0b933 100755 --- a/H/hstruct.h +++ b/H/hstruct.h @@ -85,8 +85,51 @@ #ifdef EUROTRA Term term_dollar_u; #endif + Term term_append; + Term term_atomd; + Term term_binary; + Term term_boolean; + Term term_chars; + Term term_codes; + Term term_compact; + Term term_dec10; + Term term_dots; + Term term_eof; + Term term_eof_code; + Term term_error; + Term term_exception; + Term term_fail; + Term term_false; + Term term_float; + Term term_global; + Term term_ignore; + Term term_integer; + Term term_max; + Term term_module; + Term term_multi; + Term term_off; + Term term_on; + Term term_portray; Term term_prolog; + Term term_quiet; + Term term_read; + Term term_read_only; + Term term_read_write; Term term_refound_var; + Term term_reset; + Term term_silent; + Term term_single; + Term term_source; + Term term_string; + Term term_symbolchar; + Term term_term; + Term term_text; + Term term_thread; + Term term_true; + Term term_warning; + Term term_write; + Term term_xml; + Term user_module; Term idb_module; Term attributes_module; @@ -111,6 +154,12 @@ + + + + + + yap_exec_mode execution_mode; struct pred_entry **pred_hash; @@ -267,22 +316,8 @@ UInt atts_size; #endif - Int yap_flags_field[NUMBER_OF_YAP_FLAGS]; - struct operator_entry *op_list; - char *char_conversion_table; - char *char_conversion_table2; - - int parser_error_style; - - const char *yap_lib_dir; - const char *yap_foreign_dir; - const char *yap_commons_dir; - const char *yap_bin_dir; - - void *last_wtime; - struct ForeignLoadItem *foreign_code_loaded; ADDR foreign_code_base; ADDR foreign_code_top; @@ -299,10 +334,10 @@ Atom empty_wakeups[MAX_EMPTY_WAKEUPS]; int max_empty_wakeups; - struct PL_blob_t *swi_blob_types; + struct YAP_blob_t *swi_blob_types; struct AtomEntryStruct *swi_blobs; UInt nofblobs; UInt nofblobsmax; #if defined(YAPOR) || defined(THREADS) - lockvar swi_blobs_lock; + lockvar blobs_lock; #endif diff --git a/H/iatoms.h b/H/iatoms.h index b4cf99d55..4d47bbbc5 100644 --- a/H/iatoms.h +++ b/H/iatoms.h @@ -34,9 +34,10 @@ AtomB = Yap_FullLookupAtom("$last_choice_pt"); AtomBatched = Yap_LookupAtom("batched"); AtomBetween = Yap_LookupAtom("between"); - AtomHugeInt = Yap_LookupAtom("huge_int"); + AtomBinary = Yap_LookupAtom("binary"); AtomBigNum = Yap_LookupAtom("big_num"); AtomBinaryStream = Yap_LookupAtom("binary_stream"); + AtomBoolean = Yap_LookupAtom("boolean"); AtomBraces = Yap_LookupAtom("{}"); AtomBreak = Yap_FullLookupAtom("$break"); AtomByte = Yap_LookupAtom("byte"); @@ -51,6 +52,7 @@ AtomCharsio = Yap_LookupAtom("charsio"); AtomCharacter = Yap_LookupAtom("character"); AtomCharacterCode = Yap_LookupAtom("character_code"); + AtomChars = Yap_LookupAtom("chars"); AtomCharset = Yap_LookupAtom("charset"); AtomCleanCall = Yap_FullLookupAtom("$clean_call"); AtomColomn = Yap_LookupAtom(":"); @@ -59,6 +61,7 @@ AtomCoInductive = Yap_LookupAtom("coinductive"); AtomComma = Yap_LookupAtom(","); AtomCommentHook = Yap_LookupAtom("comment_hook"); + AtomCompact = Yap_LookupAtom("compact"); AtomCompound = Yap_LookupAtom("compound"); AtomConsistencyError = Yap_LookupAtom("consistency_error"); AtomConsultOnBoot = Yap_FullLookupAtom("$consult_on_boot"); @@ -78,20 +81,23 @@ AtomDBTerm = Yap_LookupAtom("db_term"); AtomDBref = Yap_FullLookupAtom("$dbref"); AtomDInteger = Yap_FullLookupAtom("$integer"); - AtomDOUBLE = Yap_FullLookupAtom("Double"); + AtomDebuggerInput = Yap_LookupAtom("debugger_input"); AtomDec10 = Yap_LookupAtom("dec10"); AtomDefault = Yap_LookupAtom("default"); AtomDevNull = Yap_LookupAtom("/dev/null"); AtomDiff = Yap_LookupAtom("\\="); AtomDiscontiguous = Yap_LookupAtom("discontiguous"); + AtomDiscontiguousWarnings = Yap_LookupAtom("discontiguous_warnings"); AtomDollar = Yap_FullLookupAtom("$"); AtomDoLogUpdClause = Yap_FullLookupAtom("$do_log_upd_clause"); AtomDoLogUpdClause0 = Yap_FullLookupAtom("$do_log_upd_clause0"); AtomDoLogUpdClauseErase = Yap_FullLookupAtom("$do_log_upd_clause_erase"); - AtomDoStaticClause = Yap_FullLookupAtom("$do_static_clause"); AtomDollarU = Yap_FullLookupAtom("$u"); AtomDollarUndef = Yap_FullLookupAtom("$undef"); AtomDomainError = Yap_LookupAtom("domain_error"); + AtomDoStaticClause = Yap_FullLookupAtom("$do_static_clause"); + AtomDots = Yap_LookupAtom("dots"); + AtomDOUBLE = Yap_FullLookupAtom("Double"); AtomE = Yap_LookupAtom("e"); AtomEOFBeforeEOT = Yap_LookupAtom("end_of_file_found_before_end_of_term"); AtomEQ = Yap_LookupAtom("="); @@ -99,8 +105,10 @@ AtomEncoding = Yap_LookupAtom("encoding"); AtomEndOfStream = Yap_LookupAtom("$end_of_stream"); AtomEof = Yap_LookupAtom("end_of_file"); + AtomEOfCode = Yap_LookupAtom("eof_code"); AtomEq = Yap_LookupAtom("="); AtomError = Yap_LookupAtom("error"); + AtomException = Yap_LookupAtom("exception"); AtomEvaluable = Yap_LookupAtom("evaluable"); AtomEvaluationError = Yap_LookupAtom("evaluation_error"); AtomExecute = Yap_LookupAtom("execute"); @@ -124,6 +132,7 @@ AtomFloatUnderflow = Yap_LookupAtom("float_underflow"); AtomFormat = Yap_LookupAtom("format"); AtomFormatAt = Yap_FullLookupAtom("$format@"); + AtomFull = Yap_LookupAtom("full"); AtomFunctor = Yap_LookupAtom("functor"); AtomGT = Yap_LookupAtom(">"); AtomGVar = Yap_LookupAtom("var"); @@ -135,6 +144,7 @@ AtomGeneratePredInfo = Yap_FullLookupAtom("$generate_pred_info"); AtomGetwork = Yap_FullLookupAtom("$getwork"); AtomGetworkSeq = Yap_FullLookupAtom("$getwork_seq"); + AtomGlobal = Yap_LookupAtom("global"); AtomGlobalSp = Yap_LookupAtom("global_sp"); AtomGlobalTrie = Yap_LookupAtom("global_trie"); AtomGoalExpansion = Yap_LookupAtom("goal_expansion"); @@ -143,9 +153,11 @@ AtomHandleThrow = Yap_FullLookupAtom("$handle_throw"); AtomHeap = Yap_LookupAtom("heap"); AtomHeapUsed = Yap_LookupAtom("heapused"); + AtomHugeInt = Yap_LookupAtom("huge_int"); AtomIDB = Yap_LookupAtom("idb"); AtomIOMode = Yap_LookupAtom("io_mode"); AtomId = Yap_LookupAtom("id"); + AtomIgnore = Yap_LookupAtom("ignore"); AtomInf = Yap_LookupAtom("inf"); AtomInfinity = Yap_LookupAtom("infinity"); AtomInitGoal = Yap_FullLookupAtom("$init_goal"); @@ -162,12 +174,14 @@ AtomLDLibraryPath = Yap_LookupAtom("LD_LIBRARY_PATH"); AtomLONGINT = Yap_LookupAtom("LongInt"); AtomLOOP = Yap_LookupAtom("_LOOP_"); + AtomLoopStream = Yap_LookupAtom("loop_stream"); AtomLT = Yap_LookupAtom("<"); AtomLastExecuteWithin = Yap_FullLookupAtom("$last_execute_within"); AtomLeash = Yap_FullLookupAtom("$leash"); AtomLeast = Yap_LookupAtom("least"); AtomLength = Yap_FullLookupAtom("length"); AtomList = Yap_LookupAtom("list"); + AtomLine = Yap_LookupAtom("line"); AtomLive = Yap_FullLookupAtom("$live"); AtomLoadAnswers = Yap_LookupAtom("load_answers"); AtomLocal = Yap_LookupAtom("local"); @@ -184,7 +198,9 @@ AtomMinimum = Yap_LookupAtom("minimum"); AtomMinus = Yap_LookupAtom("-"); AtomModify = Yap_LookupAtom("modify"); + AtomModule = Yap_LookupAtom("module"); AtomMost = Yap_LookupAtom("most"); + AtomMulti = Yap_LookupAtom("multi"); AtomMultiFile = Yap_FullLookupAtom("$mf"); AtomMultiple = Yap_FullLookupAtom("multiple"); AtomMutable = Yap_LookupAtom("mutable"); @@ -228,7 +244,9 @@ AtomOutOfStackError = Yap_LookupAtom("out_of_stack_error"); AtomOutOfTrailError = Yap_LookupAtom("out_of_trail_error"); AtomOutput = Yap_LookupAtom("output"); + AtomParameter = Yap_LookupAtom("parameter"); AtomPrologCommonsDir = Yap_LookupAtom("prolog_commons_directory"); + AtomPast = Yap_LookupAtom("past"); AtomPastEndOfStream = Yap_LookupAtom("past_end_of_stream"); AtomPermissionError = Yap_LookupAtom("permission_error"); AtomPi = Yap_LookupAtom("pi"); @@ -250,17 +268,21 @@ AtomRadix = Yap_LookupAtom("radix"); AtomRandom = Yap_LookupAtom("random"); AtomRange = Yap_LookupAtom("range"); + AtomRDiv = Yap_LookupAtom("rdiv"); AtomRead = Yap_LookupAtom("read"); + AtomReadOnly = Yap_LookupAtom("read_only"); + AtomReadWrite = Yap_LookupAtom("read_write"); AtomReadutil = Yap_LookupAtom("readutil"); AtomRecordedP = Yap_FullLookupAtom("$recordep"); AtomRecordedWithKey = Yap_FullLookupAtom("$recorded_with_key"); + AtomRedefineWarnings = Yap_LookupAtom("redefine_warnings"); AtomRedoFreeze = Yap_FullLookupAtom("$redo_freeze"); AtomRefoundVar = Yap_FullLookupAtom("$I_FOUND_THE_VARIABLE_AGAIN"); AtomRepeat = Yap_LookupAtom("repeat"); AtomRepeatSpace = Yap_LookupAtom("repeat "); AtomReposition = Yap_LookupAtom("reposition"); AtomRepresentationError = Yap_LookupAtom("representation_error"); - AtomRDiv = Yap_LookupAtom("rdiv"); + AtomReset = Yap_LookupAtom("reset"); AtomResize = Yap_LookupAtom("resize"); AtomResourceError = Yap_LookupAtom("resource_error"); AtomRestoreRegs = Yap_FullLookupAtom("$restore_regs"); @@ -289,9 +311,13 @@ AtomSigUsr2 = Yap_LookupAtom("sig_usr2"); AtomSigVTAlarm = Yap_LookupAtom("sig_vtalarm"); AtomSigWakeUp = Yap_LookupAtom("sig_wake_up"); + AtomSilent = Yap_LookupAtom("Silent"); + AtomSingle = Yap_LookupAtom("single"); + AtomSingleVarWarnings = Yap_LookupAtom("single_var_warnings"); AtomSingleton = Yap_LookupAtom("singleton"); AtomSlash = Yap_LookupAtom("/"); AtomSocket = Yap_LookupAtom("socket"); + AtomSource = Yap_LookupAtom("source"); AtomSourceSink = Yap_LookupAtom("source_sink"); AtomSpy = Yap_FullLookupAtom("$spy"); AtomStack = Yap_LookupAtom("stack"); @@ -309,6 +335,7 @@ AtomString = Yap_LookupAtom("string"); AtomSTRING = Yap_FullLookupAtom("String"); AtomSwi = Yap_LookupAtom("swi"); + AtomSymbolChar = Yap_LookupAtom("symbol_char"); AtomSyntaxError = Yap_LookupAtom("syntax_error"); AtomSyntaxErrorHandler = Yap_LookupAtom("syntax_error_handler"); AtomSystem = Yap_LookupAtom("system"); @@ -319,6 +346,7 @@ AtomTermExpansion = Yap_LookupAtom("term_expansion"); AtomText = Yap_LookupAtom("text"); AtomTextStream = Yap_LookupAtom("text_stream"); + AtomThread = Yap_LookupAtom("thread"); AtomThreads = Yap_LookupAtom("threads"); AtomThrow = Yap_LookupAtom("throw"); AtomTimeOutSpec = Yap_LookupAtom("time_out_spec"); @@ -344,12 +372,15 @@ AtomVBar = Yap_LookupAtom("|"); AtomVar = Yap_FullLookupAtom("$VAR"); AtomVarBranches = Yap_LookupAtom("var_branches"); + AtomVariableNames = Yap_LookupAtom("variable_names"); AtomHiddenVar = Yap_FullLookupAtom("$V"); AtomVariable = Yap_LookupAtom("variable"); AtomVersionNumber = Yap_FullLookupAtom("$version_name"); AtomWakeUpGoal = Yap_FullLookupAtom("$wake_up_goal"); + AtomWarning = Yap_LookupAtom("warning"); AtomWhen = Yap_FullLookupAtom("$when"); AtomWrite = Yap_LookupAtom("write"); + AtomXml = Yap_LookupAtom("xml"); AtomYapHacks = Yap_LookupAtom("yap_hacks"); AtomZeroDivisor = Yap_LookupAtom("zero_divisor"); FunctorAfInet = Yap_MkFunctor(AtomAfInet,2); @@ -370,9 +401,12 @@ FunctorCall = Yap_MkFunctor(AtomCall,1); FunctorCatch = Yap_MkFunctor(AtomCatch,3); FunctorChangeModule = Yap_MkFunctor(AtomChangeModule,1); + FunctorChars = Yap_MkFunctor(AtomChars,2); + FunctorChars1 = Yap_MkFunctor(AtomChars,1); FunctorCleanCall = Yap_MkFunctor(AtomCleanCall,2); FunctorClist = Yap_MkFunctor(AtomWhen,4); FunctorCodes = Yap_MkFunctor(AtomCodes,2); + FunctorCodes1 = Yap_MkFunctor(AtomCodes,1); FunctorComma = Yap_MkFunctor(AtomComma,2); FunctorCommentHook = Yap_MkFunctor(AtomCommentHook,3); FunctorContext2 = Yap_MkFunctor(AtomContext,2); @@ -462,6 +496,7 @@ FunctorStream = Yap_MkFunctor(AtomStream,1); FunctorStreamEOS = Yap_MkFunctor(AtomEndOfStream,1); FunctorStreamPos = Yap_MkFunctor(AtomStreamPos,4); + FunctorString1 = Yap_MkFunctor(AtomString,1); FunctorSyntaxError = Yap_MkFunctor(AtomSyntaxError,7); FunctorShortSyntaxError = Yap_MkFunctor(AtomSyntaxError,1); FunctorTermExpansion = Yap_MkFunctor(AtomTermExpansion,2); diff --git a/H/iglobals.h b/H/iglobals.h index 1e4540672..2c39c3e9f 100644 --- a/H/iglobals.h +++ b/H/iglobals.h @@ -24,6 +24,7 @@ static void InitGlobal(void) { GLOBAL_InitialisedFromPL = FALSE; GLOBAL_PL_Argc = 0; GLOBAL_PL_Argv = NULL; + GLOBAL_FAST_BOOT_FLAG = false; GLOBAL_HaltHooks = NULL; GLOBAL_JIT_finalizer = NULL; @@ -69,8 +70,10 @@ static void InitGlobal(void) { #endif /* THREADS */ - GLOBAL_stdout = Soutput; - GLOBAL_stderr = Serror; + + + + @@ -133,4 +136,9 @@ static void InitGlobal(void) { INIT_LOCK(GLOBAL_MUT_ACCESS); #endif GLOBAL_Home = NULL; + + GLOBAL_CharConversionTable = NULL; + GLOBAL_CharConversionTable2 = NULL; + + GLOBAL_LastWtimePtr = NULL; } diff --git a/H/ihstruct.h b/H/ihstruct.h index 0ade80f05..758a3880d 100644 --- a/H/ihstruct.h +++ b/H/ihstruct.h @@ -85,8 +85,51 @@ #ifdef EUROTRA TermDollarU = MkAtomTerm(AtomDollarU); #endif + TermAppend = MkAtomTerm(AtomAppend); + TermAtom = MkAtomTerm(AtomAtom); + TermBinary = MkAtomTerm(AtomBinary); + TermBoolean = MkAtomTerm(AtomBoolean); + TermChars = MkAtomTerm(AtomChars); + TermCodes = MkAtomTerm(AtomCodes); + TermCompact = MkAtomTerm(AtomCompact); + TermDec10 = MkAtomTerm(AtomDec10); + TermDots = MkAtomTerm(AtomDots); + TermEof = MkAtomTerm(AtomEof); + TermEOfCode = MkAtomTerm(AtomEOfCode); + TermError = MkAtomTerm(AtomError); + TermException = MkAtomTerm(AtomException); + TermFail = MkAtomTerm(AtomFail); + TermFalse = MkAtomTerm(AtomFalse); + TermFloat = MkAtomTerm(AtomFloat); + TermGlobal = MkAtomTerm(AtomGlobal); + TermIgnore = MkAtomTerm(AtomIgnore); + TermInteger = MkAtomTerm(AtomInteger); + TermMax = MkAtomTerm(AtomMax); + TermModule = MkAtomTerm(AtomModule); + TermMulti = MkAtomTerm(AtomMulti); + TermOff = MkAtomTerm(AtomOff); + TermOn = MkAtomTerm(AtomOn); + TermPortray = MkAtomTerm(AtomPortray); TermProlog = MkAtomTerm(AtomProlog); + TermQuiet = MkAtomTerm(AtomQuiet); + TermRead = MkAtomTerm(AtomRead); + TermReadOnly = MkAtomTerm(AtomReadOnly); + TermReadWrite = MkAtomTerm(AtomReadWrite); TermReFoundVar = MkAtomTerm(AtomRefoundVar); + TermReset = MkAtomTerm(AtomReset); + TermSilent = MkAtomTerm(AtomSilent); + TermSingle = MkAtomTerm(AtomSingle); + TermSource = MkAtomTerm(AtomSource); + TermString = MkAtomTerm(AtomString); + TermSymbolChar = MkAtomTerm(AtomSymbolChar); + TermTerm = MkAtomTerm(AtomTerm); + TermText = MkAtomTerm(AtomText); + TermThread = MkAtomTerm(AtomThread); + TermTrue = MkAtomTerm(AtomTrue); + TermWarning = MkAtomTerm(AtomWarning); + TermWrite = MkAtomTerm(AtomWrite); + TermXml = MkAtomTerm(AtomXml); + USER_MODULE = MkAtomTerm(AtomUser); IDB_MODULE = MkAtomTerm(AtomIDB); ATTRIBUTES_MODULE = MkAtomTerm(AtomAttributes); @@ -111,6 +154,12 @@ Yap_InitModules(); + + Yap_InitPlIO(); + + + Yap_InitFlags(true); + Yap_ExecutionMode = INTERPRETED; InitPredHash(); @@ -267,22 +316,8 @@ #endif - InitFlags(); - OpList = NULL; - CharConversionTable = NULL; - CharConversionTable2 = NULL; - - ParserErrorStyle = EXCEPTION_ON_PARSER_ERROR; - - Yap_LibDir = NULL; - Yap_ForeignDir = NULL; - Yap_CommonsDir = NULL; - Yap_BinDir = NULL; - - LastWtimePtr = NULL; - ForeignCodeLoaded = NULL; ForeignCodeBase = NULL; ForeignCodeTop = NULL; @@ -299,10 +334,10 @@ InitEmptyWakeups(); MaxEmptyWakeups = 0; - SWI_BlobTypes = NULL; - SWI_Blobs = NULL; + BlobTypes = NULL; + Blobs = NULL; NOfBlobs = 0; NOfBlobsMax = 256; #if defined(YAPOR) || defined(THREADS) - INIT_LOCK(SWI_Blobs_Lock); + INIT_LOCK(Blobs_Lock); #endif diff --git a/H/ilocals.h b/H/ilocals.h index b8fdcbcf0..881c81791 100755 --- a/H/ilocals.h +++ b/H/ilocals.h @@ -5,9 +5,28 @@ static void InitWorker(int wid) { + REMOTE_FileAliases(wid) = Yap_InitStandardAliases(); + + REMOTE_c_input_stream(wid) = 0; REMOTE_c_output_stream(wid) = 1; REMOTE_c_error_stream(wid) = 2; + REMOTE_sockets_io(wid) = false; + + + + + REMOTE_newline(wid) = true; + REMOTE_FormatInfo(wid) = NULL; + REMOTE_AtPrompt(wid) = AtomNil; + + REMOTE_encoding(wid) = Yap_InitialEncoding(); + REMOTE_quasi_quotations(wid) = false; + REMOTE_default_priority(wid) = 1200; + REMOTE_eot_before_eof(wid) = false; + REMOTE_max_depth(wid) = 0; + REMOTE_max_list(wid) = 0; + REMOTE_max_write_args(wid) = 0; REMOTE_OldASP(wid) = NULL; REMOTE_OldLCL0(wid) = NULL; @@ -46,6 +65,8 @@ static void InitWorker(int wid) { REMOTE_ConsultLow(wid) = NULL; REMOTE_VarNames(wid) = ((Term)0); + REMOTE_SourceFileName(wid) = NULL; + REMOTE_SourceFileLineno(wid) = 0; REMOTE_GlobalArena(wid) = 0L; REMOTE_GlobalArenaOverflows(wid) = 0L; @@ -121,12 +142,13 @@ static void InitWorker(int wid) { REMOTE_LabelFirstArray(wid) = NULL; REMOTE_LabelFirstArraySz(wid) = 0L; - REMOTE_PL_local_data_p(wid) = Yap_InitThreadIO(wid); + #ifdef THREADS InitThreadHandle(wid); #endif /* THREADS */ #if defined(YAPOR) || defined(TABLING) Yap_init_local_optyap_data(wid); + REMOTE_TabMode(wid) = 0L; #endif /* YAPOR || TABLING */ REMOTE_InterruptsDisabled(wid) = FALSE; REMOTE_execution(wid) = NULL; @@ -159,10 +181,14 @@ static void InitWorker(int wid) { + REMOTE_BreakLevel(wid) = 0; REMOTE_PrologMode(wid) = BootMode; REMOTE_CritLocks(wid) = 0; + + + #ifdef ANALYST diff --git a/H/ratoms.h b/H/ratoms.h index d8558bcbc..00c54e4dc 100644 --- a/H/ratoms.h +++ b/H/ratoms.h @@ -34,9 +34,10 @@ AtomB = AtomAdjust(AtomB); AtomBatched = AtomAdjust(AtomBatched); AtomBetween = AtomAdjust(AtomBetween); - AtomHugeInt = AtomAdjust(AtomHugeInt); + AtomBinary = AtomAdjust(AtomBinary); AtomBigNum = AtomAdjust(AtomBigNum); AtomBinaryStream = AtomAdjust(AtomBinaryStream); + AtomBoolean = AtomAdjust(AtomBoolean); AtomBraces = AtomAdjust(AtomBraces); AtomBreak = AtomAdjust(AtomBreak); AtomByte = AtomAdjust(AtomByte); @@ -51,6 +52,7 @@ AtomCharsio = AtomAdjust(AtomCharsio); AtomCharacter = AtomAdjust(AtomCharacter); AtomCharacterCode = AtomAdjust(AtomCharacterCode); + AtomChars = AtomAdjust(AtomChars); AtomCharset = AtomAdjust(AtomCharset); AtomCleanCall = AtomAdjust(AtomCleanCall); AtomColomn = AtomAdjust(AtomColomn); @@ -59,6 +61,7 @@ AtomCoInductive = AtomAdjust(AtomCoInductive); AtomComma = AtomAdjust(AtomComma); AtomCommentHook = AtomAdjust(AtomCommentHook); + AtomCompact = AtomAdjust(AtomCompact); AtomCompound = AtomAdjust(AtomCompound); AtomConsistencyError = AtomAdjust(AtomConsistencyError); AtomConsultOnBoot = AtomAdjust(AtomConsultOnBoot); @@ -78,20 +81,23 @@ AtomDBTerm = AtomAdjust(AtomDBTerm); AtomDBref = AtomAdjust(AtomDBref); AtomDInteger = AtomAdjust(AtomDInteger); - AtomDOUBLE = AtomAdjust(AtomDOUBLE); + AtomDebuggerInput = AtomAdjust(AtomDebuggerInput); AtomDec10 = AtomAdjust(AtomDec10); AtomDefault = AtomAdjust(AtomDefault); AtomDevNull = AtomAdjust(AtomDevNull); AtomDiff = AtomAdjust(AtomDiff); AtomDiscontiguous = AtomAdjust(AtomDiscontiguous); + AtomDiscontiguousWarnings = AtomAdjust(AtomDiscontiguousWarnings); AtomDollar = AtomAdjust(AtomDollar); AtomDoLogUpdClause = AtomAdjust(AtomDoLogUpdClause); AtomDoLogUpdClause0 = AtomAdjust(AtomDoLogUpdClause0); AtomDoLogUpdClauseErase = AtomAdjust(AtomDoLogUpdClauseErase); - AtomDoStaticClause = AtomAdjust(AtomDoStaticClause); AtomDollarU = AtomAdjust(AtomDollarU); AtomDollarUndef = AtomAdjust(AtomDollarUndef); AtomDomainError = AtomAdjust(AtomDomainError); + AtomDoStaticClause = AtomAdjust(AtomDoStaticClause); + AtomDots = AtomAdjust(AtomDots); + AtomDOUBLE = AtomAdjust(AtomDOUBLE); AtomE = AtomAdjust(AtomE); AtomEOFBeforeEOT = AtomAdjust(AtomEOFBeforeEOT); AtomEQ = AtomAdjust(AtomEQ); @@ -99,8 +105,10 @@ AtomEncoding = AtomAdjust(AtomEncoding); AtomEndOfStream = AtomAdjust(AtomEndOfStream); AtomEof = AtomAdjust(AtomEof); + AtomEOfCode = AtomAdjust(AtomEOfCode); AtomEq = AtomAdjust(AtomEq); AtomError = AtomAdjust(AtomError); + AtomException = AtomAdjust(AtomException); AtomEvaluable = AtomAdjust(AtomEvaluable); AtomEvaluationError = AtomAdjust(AtomEvaluationError); AtomExecute = AtomAdjust(AtomExecute); @@ -124,6 +132,7 @@ AtomFloatUnderflow = AtomAdjust(AtomFloatUnderflow); AtomFormat = AtomAdjust(AtomFormat); AtomFormatAt = AtomAdjust(AtomFormatAt); + AtomFull = AtomAdjust(AtomFull); AtomFunctor = AtomAdjust(AtomFunctor); AtomGT = AtomAdjust(AtomGT); AtomGVar = AtomAdjust(AtomGVar); @@ -135,6 +144,7 @@ AtomGeneratePredInfo = AtomAdjust(AtomGeneratePredInfo); AtomGetwork = AtomAdjust(AtomGetwork); AtomGetworkSeq = AtomAdjust(AtomGetworkSeq); + AtomGlobal = AtomAdjust(AtomGlobal); AtomGlobalSp = AtomAdjust(AtomGlobalSp); AtomGlobalTrie = AtomAdjust(AtomGlobalTrie); AtomGoalExpansion = AtomAdjust(AtomGoalExpansion); @@ -143,9 +153,11 @@ AtomHandleThrow = AtomAdjust(AtomHandleThrow); AtomHeap = AtomAdjust(AtomHeap); AtomHeapUsed = AtomAdjust(AtomHeapUsed); + AtomHugeInt = AtomAdjust(AtomHugeInt); AtomIDB = AtomAdjust(AtomIDB); AtomIOMode = AtomAdjust(AtomIOMode); AtomId = AtomAdjust(AtomId); + AtomIgnore = AtomAdjust(AtomIgnore); AtomInf = AtomAdjust(AtomInf); AtomInfinity = AtomAdjust(AtomInfinity); AtomInitGoal = AtomAdjust(AtomInitGoal); @@ -162,12 +174,14 @@ AtomLDLibraryPath = AtomAdjust(AtomLDLibraryPath); AtomLONGINT = AtomAdjust(AtomLONGINT); AtomLOOP = AtomAdjust(AtomLOOP); + AtomLoopStream = AtomAdjust(AtomLoopStream); AtomLT = AtomAdjust(AtomLT); AtomLastExecuteWithin = AtomAdjust(AtomLastExecuteWithin); AtomLeash = AtomAdjust(AtomLeash); AtomLeast = AtomAdjust(AtomLeast); AtomLength = AtomAdjust(AtomLength); AtomList = AtomAdjust(AtomList); + AtomLine = AtomAdjust(AtomLine); AtomLive = AtomAdjust(AtomLive); AtomLoadAnswers = AtomAdjust(AtomLoadAnswers); AtomLocal = AtomAdjust(AtomLocal); @@ -184,7 +198,9 @@ AtomMinimum = AtomAdjust(AtomMinimum); AtomMinus = AtomAdjust(AtomMinus); AtomModify = AtomAdjust(AtomModify); + AtomModule = AtomAdjust(AtomModule); AtomMost = AtomAdjust(AtomMost); + AtomMulti = AtomAdjust(AtomMulti); AtomMultiFile = AtomAdjust(AtomMultiFile); AtomMultiple = AtomAdjust(AtomMultiple); AtomMutable = AtomAdjust(AtomMutable); @@ -228,7 +244,9 @@ AtomOutOfStackError = AtomAdjust(AtomOutOfStackError); AtomOutOfTrailError = AtomAdjust(AtomOutOfTrailError); AtomOutput = AtomAdjust(AtomOutput); + AtomParameter = AtomAdjust(AtomParameter); AtomPrologCommonsDir = AtomAdjust(AtomPrologCommonsDir); + AtomPast = AtomAdjust(AtomPast); AtomPastEndOfStream = AtomAdjust(AtomPastEndOfStream); AtomPermissionError = AtomAdjust(AtomPermissionError); AtomPi = AtomAdjust(AtomPi); @@ -250,17 +268,21 @@ AtomRadix = AtomAdjust(AtomRadix); AtomRandom = AtomAdjust(AtomRandom); AtomRange = AtomAdjust(AtomRange); + AtomRDiv = AtomAdjust(AtomRDiv); AtomRead = AtomAdjust(AtomRead); + AtomReadOnly = AtomAdjust(AtomReadOnly); + AtomReadWrite = AtomAdjust(AtomReadWrite); AtomReadutil = AtomAdjust(AtomReadutil); AtomRecordedP = AtomAdjust(AtomRecordedP); AtomRecordedWithKey = AtomAdjust(AtomRecordedWithKey); + AtomRedefineWarnings = AtomAdjust(AtomRedefineWarnings); AtomRedoFreeze = AtomAdjust(AtomRedoFreeze); AtomRefoundVar = AtomAdjust(AtomRefoundVar); AtomRepeat = AtomAdjust(AtomRepeat); AtomRepeatSpace = AtomAdjust(AtomRepeatSpace); AtomReposition = AtomAdjust(AtomReposition); AtomRepresentationError = AtomAdjust(AtomRepresentationError); - AtomRDiv = AtomAdjust(AtomRDiv); + AtomReset = AtomAdjust(AtomReset); AtomResize = AtomAdjust(AtomResize); AtomResourceError = AtomAdjust(AtomResourceError); AtomRestoreRegs = AtomAdjust(AtomRestoreRegs); @@ -289,9 +311,13 @@ AtomSigUsr2 = AtomAdjust(AtomSigUsr2); AtomSigVTAlarm = AtomAdjust(AtomSigVTAlarm); AtomSigWakeUp = AtomAdjust(AtomSigWakeUp); + AtomSilent = AtomAdjust(AtomSilent); + AtomSingle = AtomAdjust(AtomSingle); + AtomSingleVarWarnings = AtomAdjust(AtomSingleVarWarnings); AtomSingleton = AtomAdjust(AtomSingleton); AtomSlash = AtomAdjust(AtomSlash); AtomSocket = AtomAdjust(AtomSocket); + AtomSource = AtomAdjust(AtomSource); AtomSourceSink = AtomAdjust(AtomSourceSink); AtomSpy = AtomAdjust(AtomSpy); AtomStack = AtomAdjust(AtomStack); @@ -309,6 +335,7 @@ AtomString = AtomAdjust(AtomString); AtomSTRING = AtomAdjust(AtomSTRING); AtomSwi = AtomAdjust(AtomSwi); + AtomSymbolChar = AtomAdjust(AtomSymbolChar); AtomSyntaxError = AtomAdjust(AtomSyntaxError); AtomSyntaxErrorHandler = AtomAdjust(AtomSyntaxErrorHandler); AtomSystem = AtomAdjust(AtomSystem); @@ -319,6 +346,7 @@ AtomTermExpansion = AtomAdjust(AtomTermExpansion); AtomText = AtomAdjust(AtomText); AtomTextStream = AtomAdjust(AtomTextStream); + AtomThread = AtomAdjust(AtomThread); AtomThreads = AtomAdjust(AtomThreads); AtomThrow = AtomAdjust(AtomThrow); AtomTimeOutSpec = AtomAdjust(AtomTimeOutSpec); @@ -344,12 +372,15 @@ AtomVBar = AtomAdjust(AtomVBar); AtomVar = AtomAdjust(AtomVar); AtomVarBranches = AtomAdjust(AtomVarBranches); + AtomVariableNames = AtomAdjust(AtomVariableNames); AtomHiddenVar = AtomAdjust(AtomHiddenVar); AtomVariable = AtomAdjust(AtomVariable); AtomVersionNumber = AtomAdjust(AtomVersionNumber); AtomWakeUpGoal = AtomAdjust(AtomWakeUpGoal); + AtomWarning = AtomAdjust(AtomWarning); AtomWhen = AtomAdjust(AtomWhen); AtomWrite = AtomAdjust(AtomWrite); + AtomXml = AtomAdjust(AtomXml); AtomYapHacks = AtomAdjust(AtomYapHacks); AtomZeroDivisor = AtomAdjust(AtomZeroDivisor); FunctorAfInet = FuncAdjust(FunctorAfInet); @@ -370,9 +401,12 @@ FunctorCall = FuncAdjust(FunctorCall); FunctorCatch = FuncAdjust(FunctorCatch); FunctorChangeModule = FuncAdjust(FunctorChangeModule); + FunctorChars = FuncAdjust(FunctorChars); + FunctorChars1 = FuncAdjust(FunctorChars1); FunctorCleanCall = FuncAdjust(FunctorCleanCall); FunctorClist = FuncAdjust(FunctorClist); FunctorCodes = FuncAdjust(FunctorCodes); + FunctorCodes1 = FuncAdjust(FunctorCodes1); FunctorComma = FuncAdjust(FunctorComma); FunctorCommentHook = FuncAdjust(FunctorCommentHook); FunctorContext2 = FuncAdjust(FunctorContext2); @@ -462,6 +496,7 @@ FunctorStream = FuncAdjust(FunctorStream); FunctorStreamEOS = FuncAdjust(FunctorStreamEOS); FunctorStreamPos = FuncAdjust(FunctorStreamPos); + FunctorString1 = FuncAdjust(FunctorString1); FunctorSyntaxError = FuncAdjust(FunctorSyntaxError); FunctorShortSyntaxError = FuncAdjust(FunctorShortSyntaxError); FunctorTermExpansion = FuncAdjust(FunctorTermExpansion); diff --git a/H/rglobals.h b/H/rglobals.h index a39343419..55789b3c9 100644 --- a/H/rglobals.h +++ b/H/rglobals.h @@ -35,6 +35,7 @@ static void RestoreGlobal(void) { + #if __ANDROID__ @@ -75,6 +76,8 @@ static void RestoreGlobal(void) { + + #ifdef COROUTINING @@ -133,4 +136,9 @@ static void RestoreGlobal(void) { REINIT_LOCK(GLOBAL_MUT_ACCESS); #endif + + + + + } diff --git a/H/rheap.h b/H/rheap.h index 5b861082a..1e2530f0d 100644 --- a/H/rheap.h +++ b/H/rheap.h @@ -716,6 +716,7 @@ CleanSIndex(StaticIndex *idx, int recurse USES_REGS) } } + static void RestoreSWIAtoms__( USES_REGS1 ) { @@ -729,16 +730,20 @@ RestoreSWIAtoms__( USES_REGS1 ) RestoreSWIHash(); } -static void -RestoreSWIBlobTypes__( USES_REGS1 ) +#define RestoreBlobTypes() RestoreBlobTypes__( PASS_REGS1 ) +#define RestoreBlobs() RestoreBlobs__( PASS_REGS1); + + +static void +RestoreBlobTypes__( USES_REGS1 ) { } static void -RestoreSWIBlobs__( USES_REGS1 ) +RestoreBlobs__( USES_REGS1 ) { - SWI_Blobs = AtomAdjust(SWI_Blobs); - RestoreAtomList(SWI_Blobs PASS_REGS); + Blobs = AtomAdjust(Blobs); + RestoreAtomList(Blobs PASS_REGS); } static void @@ -1609,8 +1614,8 @@ RestoreEntries(PropEntry *pp, int int_key USES_REGS) PropAdjust(pp->NextOfPE); { BlobPropEntry *bpe = (BlobPropEntry *)pp; - bpe->blob_t = - BlobTypeAdjust(bpe->blob_t); + bpe->blob_type = + BlobTypeAdjust(bpe->blob_type); } break; default: diff --git a/H/rhstruct.h b/H/rhstruct.h index f0fd7bc90..064efb018 100644 --- a/H/rhstruct.h +++ b/H/rhstruct.h @@ -85,8 +85,51 @@ #ifdef EUROTRA TermDollarU = AtomTermAdjust(TermDollarU); #endif + TermAppend = AtomTermAdjust(TermAppend); + TermAtom = AtomTermAdjust(TermAtom); + TermBinary = AtomTermAdjust(TermBinary); + TermBoolean = AtomTermAdjust(TermBoolean); + TermChars = AtomTermAdjust(TermChars); + TermCodes = AtomTermAdjust(TermCodes); + TermCompact = AtomTermAdjust(TermCompact); + TermDec10 = AtomTermAdjust(TermDec10); + TermDots = AtomTermAdjust(TermDots); + TermEof = AtomTermAdjust(TermEof); + TermEOfCode = AtomTermAdjust(TermEOfCode); + TermError = AtomTermAdjust(TermError); + TermException = AtomTermAdjust(TermException); + TermFail = AtomTermAdjust(TermFail); + TermFalse = AtomTermAdjust(TermFalse); + TermFloat = AtomTermAdjust(TermFloat); + TermGlobal = AtomTermAdjust(TermGlobal); + TermIgnore = AtomTermAdjust(TermIgnore); + TermInteger = AtomTermAdjust(TermInteger); + TermMax = AtomTermAdjust(TermMax); + TermModule = AtomTermAdjust(TermModule); + TermMulti = AtomTermAdjust(TermMulti); + TermOff = AtomTermAdjust(TermOff); + TermOn = AtomTermAdjust(TermOn); + TermPortray = AtomTermAdjust(TermPortray); TermProlog = AtomTermAdjust(TermProlog); + TermQuiet = AtomTermAdjust(TermQuiet); + TermRead = AtomTermAdjust(TermRead); + TermReadOnly = AtomTermAdjust(TermReadOnly); + TermReadWrite = AtomTermAdjust(TermReadWrite); TermReFoundVar = AtomTermAdjust(TermReFoundVar); + TermReset = AtomTermAdjust(TermReset); + TermSilent = AtomTermAdjust(TermSilent); + TermSingle = AtomTermAdjust(TermSingle); + TermSource = AtomTermAdjust(TermSource); + TermString = AtomTermAdjust(TermString); + TermSymbolChar = AtomTermAdjust(TermSymbolChar); + TermTerm = AtomTermAdjust(TermTerm); + TermText = AtomTermAdjust(TermText); + TermThread = AtomTermAdjust(TermThread); + TermTrue = AtomTermAdjust(TermTrue); + TermWarning = AtomTermAdjust(TermWarning); + TermWrite = AtomTermAdjust(TermWrite); + TermXml = AtomTermAdjust(TermXml); + USER_MODULE = AtomTermAdjust(USER_MODULE); IDB_MODULE = AtomTermAdjust(IDB_MODULE); ATTRIBUTES_MODULE = AtomTermAdjust(ATTRIBUTES_MODULE); @@ -113,6 +156,12 @@ + + + + + + RestorePredHash(); #if defined(YAPOR) || defined(THREADS) @@ -267,22 +316,8 @@ #endif - - OpList = OpListAdjust(OpList); - CharConversionTable = CodeCharPAdjust(CharConversionTable); - CharConversionTable2 = CodeCharPAdjust(CharConversionTable2); - - - - Yap_LibDir = CodeConstCharPAdjust(Yap_LibDir); - Yap_ForeignDir = CodeConstCharPAdjust(Yap_ForeignDir); - Yap_CommonsDir = CodeConstCharPAdjust(Yap_CommonsDir); - Yap_BinDir = CodeConstCharPAdjust(Yap_BinDir); - - LastWtimePtr = CodeVoidPAdjust(LastWtimePtr); - RestoreForeignCode(); @@ -299,10 +334,10 @@ RestoreEmptyWakeups(); - RestoreSWIBlobTypes(); - RestoreSWIBlobs(); + RestoreBlobTypes(); + RestoreBlobs(); #if defined(YAPOR) || defined(THREADS) - REINIT_LOCK(SWI_Blobs_Lock); + REINIT_LOCK(Blobs_Lock); #endif diff --git a/H/rlocals.h b/H/rlocals.h index 19eea3ef0..d7cf7155e 100644 --- a/H/rlocals.h +++ b/H/rlocals.h @@ -26,6 +26,27 @@ static void RestoreWorker(int wid USES_REGS) { + + + + + + + + + + + + + + + + + + + + + @@ -127,6 +148,7 @@ static void RestoreWorker(int wid USES_REGS) { #endif /* THREADS */ #if defined(YAPOR) || defined(TABLING) + #endif /* YAPOR || TABLING */ @@ -158,6 +180,10 @@ static void RestoreWorker(int wid USES_REGS) { + + + + diff --git a/H/tatoms.h b/H/tatoms.h index ce1e0c8cc..61c94c5e6 100644 --- a/H/tatoms.h +++ b/H/tatoms.h @@ -66,12 +66,14 @@ #define AtomBatched Yap_heap_regs->AtomBatched_ Atom AtomBetween_; #define AtomBetween Yap_heap_regs->AtomBetween_ - Atom AtomHugeInt_; -#define AtomHugeInt Yap_heap_regs->AtomHugeInt_ + Atom AtomBinary_; +#define AtomBinary Yap_heap_regs->AtomBinary_ Atom AtomBigNum_; #define AtomBigNum Yap_heap_regs->AtomBigNum_ Atom AtomBinaryStream_; #define AtomBinaryStream Yap_heap_regs->AtomBinaryStream_ + Atom AtomBoolean_; +#define AtomBoolean Yap_heap_regs->AtomBoolean_ Atom AtomBraces_; #define AtomBraces Yap_heap_regs->AtomBraces_ Atom AtomBreak_; @@ -100,6 +102,8 @@ #define AtomCharacter Yap_heap_regs->AtomCharacter_ Atom AtomCharacterCode_; #define AtomCharacterCode Yap_heap_regs->AtomCharacterCode_ + Atom AtomChars_; +#define AtomChars Yap_heap_regs->AtomChars_ Atom AtomCharset_; #define AtomCharset Yap_heap_regs->AtomCharset_ Atom AtomCleanCall_; @@ -116,6 +120,8 @@ #define AtomComma Yap_heap_regs->AtomComma_ Atom AtomCommentHook_; #define AtomCommentHook Yap_heap_regs->AtomCommentHook_ + Atom AtomCompact_; +#define AtomCompact Yap_heap_regs->AtomCompact_ Atom AtomCompound_; #define AtomCompound Yap_heap_regs->AtomCompound_ Atom AtomConsistencyError_; @@ -154,8 +160,8 @@ #define AtomDBref Yap_heap_regs->AtomDBref_ Atom AtomDInteger_; #define AtomDInteger Yap_heap_regs->AtomDInteger_ - Atom AtomDOUBLE_; -#define AtomDOUBLE Yap_heap_regs->AtomDOUBLE_ + Atom AtomDebuggerInput_; +#define AtomDebuggerInput Yap_heap_regs->AtomDebuggerInput_ Atom AtomDec10_; #define AtomDec10 Yap_heap_regs->AtomDec10_ Atom AtomDefault_; @@ -166,6 +172,8 @@ #define AtomDiff Yap_heap_regs->AtomDiff_ Atom AtomDiscontiguous_; #define AtomDiscontiguous Yap_heap_regs->AtomDiscontiguous_ + Atom AtomDiscontiguousWarnings_; +#define AtomDiscontiguousWarnings Yap_heap_regs->AtomDiscontiguousWarnings_ Atom AtomDollar_; #define AtomDollar Yap_heap_regs->AtomDollar_ Atom AtomDoLogUpdClause_; @@ -174,14 +182,18 @@ #define AtomDoLogUpdClause0 Yap_heap_regs->AtomDoLogUpdClause0_ Atom AtomDoLogUpdClauseErase_; #define AtomDoLogUpdClauseErase Yap_heap_regs->AtomDoLogUpdClauseErase_ - Atom AtomDoStaticClause_; -#define AtomDoStaticClause Yap_heap_regs->AtomDoStaticClause_ Atom AtomDollarU_; #define AtomDollarU Yap_heap_regs->AtomDollarU_ Atom AtomDollarUndef_; #define AtomDollarUndef Yap_heap_regs->AtomDollarUndef_ Atom AtomDomainError_; #define AtomDomainError Yap_heap_regs->AtomDomainError_ + Atom AtomDoStaticClause_; +#define AtomDoStaticClause Yap_heap_regs->AtomDoStaticClause_ + Atom AtomDots_; +#define AtomDots Yap_heap_regs->AtomDots_ + Atom AtomDOUBLE_; +#define AtomDOUBLE Yap_heap_regs->AtomDOUBLE_ Atom AtomE_; #define AtomE Yap_heap_regs->AtomE_ Atom AtomEOFBeforeEOT_; @@ -196,10 +208,14 @@ #define AtomEndOfStream Yap_heap_regs->AtomEndOfStream_ Atom AtomEof_; #define AtomEof Yap_heap_regs->AtomEof_ + Atom AtomEOfCode_; +#define AtomEOfCode Yap_heap_regs->AtomEOfCode_ Atom AtomEq_; #define AtomEq Yap_heap_regs->AtomEq_ Atom AtomError_; #define AtomError Yap_heap_regs->AtomError_ + Atom AtomException_; +#define AtomException Yap_heap_regs->AtomException_ Atom AtomEvaluable_; #define AtomEvaluable Yap_heap_regs->AtomEvaluable_ Atom AtomEvaluationError_; @@ -246,6 +262,8 @@ #define AtomFormat Yap_heap_regs->AtomFormat_ Atom AtomFormatAt_; #define AtomFormatAt Yap_heap_regs->AtomFormatAt_ + Atom AtomFull_; +#define AtomFull Yap_heap_regs->AtomFull_ Atom AtomFunctor_; #define AtomFunctor Yap_heap_regs->AtomFunctor_ Atom AtomGT_; @@ -268,6 +286,8 @@ #define AtomGetwork Yap_heap_regs->AtomGetwork_ Atom AtomGetworkSeq_; #define AtomGetworkSeq Yap_heap_regs->AtomGetworkSeq_ + Atom AtomGlobal_; +#define AtomGlobal Yap_heap_regs->AtomGlobal_ Atom AtomGlobalSp_; #define AtomGlobalSp Yap_heap_regs->AtomGlobalSp_ Atom AtomGlobalTrie_; @@ -284,12 +304,16 @@ #define AtomHeap Yap_heap_regs->AtomHeap_ Atom AtomHeapUsed_; #define AtomHeapUsed Yap_heap_regs->AtomHeapUsed_ + Atom AtomHugeInt_; +#define AtomHugeInt Yap_heap_regs->AtomHugeInt_ Atom AtomIDB_; #define AtomIDB Yap_heap_regs->AtomIDB_ Atom AtomIOMode_; #define AtomIOMode Yap_heap_regs->AtomIOMode_ Atom AtomId_; #define AtomId Yap_heap_regs->AtomId_ + Atom AtomIgnore_; +#define AtomIgnore Yap_heap_regs->AtomIgnore_ Atom AtomInf_; #define AtomInf Yap_heap_regs->AtomInf_ Atom AtomInfinity_; @@ -322,6 +346,8 @@ #define AtomLONGINT Yap_heap_regs->AtomLONGINT_ Atom AtomLOOP_; #define AtomLOOP Yap_heap_regs->AtomLOOP_ + Atom AtomLoopStream_; +#define AtomLoopStream Yap_heap_regs->AtomLoopStream_ Atom AtomLT_; #define AtomLT Yap_heap_regs->AtomLT_ Atom AtomLastExecuteWithin_; @@ -334,6 +360,8 @@ #define AtomLength Yap_heap_regs->AtomLength_ Atom AtomList_; #define AtomList Yap_heap_regs->AtomList_ + Atom AtomLine_; +#define AtomLine Yap_heap_regs->AtomLine_ Atom AtomLive_; #define AtomLive Yap_heap_regs->AtomLive_ Atom AtomLoadAnswers_; @@ -366,8 +394,12 @@ #define AtomMinus Yap_heap_regs->AtomMinus_ Atom AtomModify_; #define AtomModify Yap_heap_regs->AtomModify_ + Atom AtomModule_; +#define AtomModule Yap_heap_regs->AtomModule_ Atom AtomMost_; #define AtomMost Yap_heap_regs->AtomMost_ + Atom AtomMulti_; +#define AtomMulti Yap_heap_regs->AtomMulti_ Atom AtomMultiFile_; #define AtomMultiFile Yap_heap_regs->AtomMultiFile_ Atom AtomMultiple_; @@ -454,8 +486,12 @@ #define AtomOutOfTrailError Yap_heap_regs->AtomOutOfTrailError_ Atom AtomOutput_; #define AtomOutput Yap_heap_regs->AtomOutput_ + Atom AtomParameter_; +#define AtomParameter Yap_heap_regs->AtomParameter_ Atom AtomPrologCommonsDir_; #define AtomPrologCommonsDir Yap_heap_regs->AtomPrologCommonsDir_ + Atom AtomPast_; +#define AtomPast Yap_heap_regs->AtomPast_ Atom AtomPastEndOfStream_; #define AtomPastEndOfStream Yap_heap_regs->AtomPastEndOfStream_ Atom AtomPermissionError_; @@ -498,14 +534,22 @@ #define AtomRandom Yap_heap_regs->AtomRandom_ Atom AtomRange_; #define AtomRange Yap_heap_regs->AtomRange_ + Atom AtomRDiv_; +#define AtomRDiv Yap_heap_regs->AtomRDiv_ Atom AtomRead_; #define AtomRead Yap_heap_regs->AtomRead_ + Atom AtomReadOnly_; +#define AtomReadOnly Yap_heap_regs->AtomReadOnly_ + Atom AtomReadWrite_; +#define AtomReadWrite Yap_heap_regs->AtomReadWrite_ Atom AtomReadutil_; #define AtomReadutil Yap_heap_regs->AtomReadutil_ Atom AtomRecordedP_; #define AtomRecordedP Yap_heap_regs->AtomRecordedP_ Atom AtomRecordedWithKey_; #define AtomRecordedWithKey Yap_heap_regs->AtomRecordedWithKey_ + Atom AtomRedefineWarnings_; +#define AtomRedefineWarnings Yap_heap_regs->AtomRedefineWarnings_ Atom AtomRedoFreeze_; #define AtomRedoFreeze Yap_heap_regs->AtomRedoFreeze_ Atom AtomRefoundVar_; @@ -518,8 +562,8 @@ #define AtomReposition Yap_heap_regs->AtomReposition_ Atom AtomRepresentationError_; #define AtomRepresentationError Yap_heap_regs->AtomRepresentationError_ - Atom AtomRDiv_; -#define AtomRDiv Yap_heap_regs->AtomRDiv_ + Atom AtomReset_; +#define AtomReset Yap_heap_regs->AtomReset_ Atom AtomResize_; #define AtomResize Yap_heap_regs->AtomResize_ Atom AtomResourceError_; @@ -576,12 +620,20 @@ #define AtomSigVTAlarm Yap_heap_regs->AtomSigVTAlarm_ Atom AtomSigWakeUp_; #define AtomSigWakeUp Yap_heap_regs->AtomSigWakeUp_ + Atom AtomSilent_; +#define AtomSilent Yap_heap_regs->AtomSilent_ + Atom AtomSingle_; +#define AtomSingle Yap_heap_regs->AtomSingle_ + Atom AtomSingleVarWarnings_; +#define AtomSingleVarWarnings Yap_heap_regs->AtomSingleVarWarnings_ Atom AtomSingleton_; #define AtomSingleton Yap_heap_regs->AtomSingleton_ Atom AtomSlash_; #define AtomSlash Yap_heap_regs->AtomSlash_ Atom AtomSocket_; #define AtomSocket Yap_heap_regs->AtomSocket_ + Atom AtomSource_; +#define AtomSource Yap_heap_regs->AtomSource_ Atom AtomSourceSink_; #define AtomSourceSink Yap_heap_regs->AtomSourceSink_ Atom AtomSpy_; @@ -616,6 +668,8 @@ #define AtomSTRING Yap_heap_regs->AtomSTRING_ Atom AtomSwi_; #define AtomSwi Yap_heap_regs->AtomSwi_ + Atom AtomSymbolChar_; +#define AtomSymbolChar Yap_heap_regs->AtomSymbolChar_ Atom AtomSyntaxError_; #define AtomSyntaxError Yap_heap_regs->AtomSyntaxError_ Atom AtomSyntaxErrorHandler_; @@ -636,6 +690,8 @@ #define AtomText Yap_heap_regs->AtomText_ Atom AtomTextStream_; #define AtomTextStream Yap_heap_regs->AtomTextStream_ + Atom AtomThread_; +#define AtomThread Yap_heap_regs->AtomThread_ Atom AtomThreads_; #define AtomThreads Yap_heap_regs->AtomThreads_ Atom AtomThrow_; @@ -686,6 +742,8 @@ #define AtomVar Yap_heap_regs->AtomVar_ Atom AtomVarBranches_; #define AtomVarBranches Yap_heap_regs->AtomVarBranches_ + Atom AtomVariableNames_; +#define AtomVariableNames Yap_heap_regs->AtomVariableNames_ Atom AtomHiddenVar_; #define AtomHiddenVar Yap_heap_regs->AtomHiddenVar_ Atom AtomVariable_; @@ -694,10 +752,14 @@ #define AtomVersionNumber Yap_heap_regs->AtomVersionNumber_ Atom AtomWakeUpGoal_; #define AtomWakeUpGoal Yap_heap_regs->AtomWakeUpGoal_ + Atom AtomWarning_; +#define AtomWarning Yap_heap_regs->AtomWarning_ Atom AtomWhen_; #define AtomWhen Yap_heap_regs->AtomWhen_ Atom AtomWrite_; #define AtomWrite Yap_heap_regs->AtomWrite_ + Atom AtomXml_; +#define AtomXml Yap_heap_regs->AtomXml_ Atom AtomYapHacks_; #define AtomYapHacks Yap_heap_regs->AtomYapHacks_ Atom AtomZeroDivisor_; @@ -738,12 +800,18 @@ #define FunctorCatch Yap_heap_regs->FunctorCatch_ Functor FunctorChangeModule_; #define FunctorChangeModule Yap_heap_regs->FunctorChangeModule_ + Functor FunctorChars_; +#define FunctorChars Yap_heap_regs->FunctorChars_ + Functor FunctorChars1_; +#define FunctorChars1 Yap_heap_regs->FunctorChars1_ Functor FunctorCleanCall_; #define FunctorCleanCall Yap_heap_regs->FunctorCleanCall_ Functor FunctorClist_; #define FunctorClist Yap_heap_regs->FunctorClist_ Functor FunctorCodes_; #define FunctorCodes Yap_heap_regs->FunctorCodes_ + Functor FunctorCodes1_; +#define FunctorCodes1 Yap_heap_regs->FunctorCodes1_ Functor FunctorComma_; #define FunctorComma Yap_heap_regs->FunctorComma_ Functor FunctorCommentHook_; @@ -922,6 +990,8 @@ #define FunctorStreamEOS Yap_heap_regs->FunctorStreamEOS_ Functor FunctorStreamPos_; #define FunctorStreamPos Yap_heap_regs->FunctorStreamPos_ + Functor FunctorString1_; +#define FunctorString1 Yap_heap_regs->FunctorString1_ Functor FunctorSyntaxError_; #define FunctorSyntaxError Yap_heap_regs->FunctorSyntaxError_ Functor FunctorShortSyntaxError_; diff --git a/H/pl-codelist.h b/library/dialect/swi/os/pl-codelist.h similarity index 100% rename from H/pl-codelist.h rename to library/dialect/swi/os/pl-codelist.h diff --git a/H/pl-read.h b/library/dialect/swi/os/pl-read.h similarity index 98% rename from H/pl-read.h rename to library/dialect/swi/os/pl-read.h index 63d8596ce..8a1d106d4 100644 --- a/H/pl-read.h +++ b/library/dialect/swi/os/pl-read.h @@ -35,12 +35,12 @@ typedef struct read_data_t unsigned char *base; /* base of clause */ unsigned char *end; /* end of the clause */ unsigned char *token_start; /* start of most recent read token */ - + int magic; /* RD_MAGIC */ IOPOS position; /* Line, line pos, char and byte */ unsigned char *posp; /* position pointer */ size_t posi; /* position number */ - + term_t subtpos; /* Report Subterm positions */ bool cycles; /* Re-establish cycles */ source_location start_of_term; /* Position of start of term */ @@ -57,7 +57,7 @@ typedef struct read_data_t term_t exception; /* raised exception */ term_t variables; /* report variables */ term_t singles; /* Report singleton variables */ - term_t varnames; /* Report variables+names */ + term_t varnames; /* Report variables+names */ int strictness; /* Strictness level */ #ifdef O_QUASIQUOTATIONS diff --git a/misc/ATOMS b/misc/ATOMS index 9da0be411..1ea92c4fe 100644 --- a/misc/ATOMS +++ b/misc/ATOMS @@ -39,9 +39,10 @@ A Attributes N "attributes" A B F "$last_choice_pt" A Batched N "batched" A Between N "between" -A HugeInt N "huge_int" +A Binary N "binary" A BigNum N "big_num" A BinaryStream N "binary_stream" +A Boolean N "boolean" A Braces N "{}" A Break F "$break" A Byte N "byte" @@ -56,14 +57,16 @@ A Char N "char" A Charsio N "charsio" A Character N "character" A CharacterCode N "character_code" +A Chars N "chars" A Charset N "charset" A CleanCall F "$clean_call" A Colomn N ":" A CodeSpace N "code_space" A Codes N "codes" -A CoInductive N "coinductive" +A CoInductive N "coinductive" A Comma N "," A CommentHook N "comment_hook" +A Compact N "compact" A Compound N "compound" A ConsistencyError N "consistency_error" A ConsultOnBoot F "$consult_on_boot" @@ -83,20 +86,23 @@ A DBReference N "db_reference" A DBTerm N "db_term" A DBref F "$dbref" A DInteger F "$integer" -A DOUBLE F "Double" +A DebuggerInput N "debugger_input" A Dec10 N "dec10" A Default N "default" A DevNull N "/dev/null" A Diff N "\\=" A Discontiguous N "discontiguous" +A DiscontiguousWarnings N "discontiguous_warnings" A Dollar F "$" A DoLogUpdClause F "$do_log_upd_clause" A DoLogUpdClause0 F "$do_log_upd_clause0" A DoLogUpdClauseErase F "$do_log_upd_clause_erase" -A DoStaticClause F "$do_static_clause" A DollarU F "$u" A DollarUndef F "$undef" A DomainError N "domain_error" +A DoStaticClause F "$do_static_clause" +A Dots N "dots" +A DOUBLE F "Double" A E N "e" A EOFBeforeEOT N "end_of_file_found_before_end_of_term" A EQ N "=" @@ -104,8 +110,10 @@ A EmptyAtom N "" A Encoding N "encoding" A EndOfStream N "$end_of_stream" A Eof N "end_of_file" +A EOfCode N "eof_code" A Eq N "=" A Error N "error" +A Exception N "exception" A Evaluable N "evaluable" A EvaluationError N "evaluation_error" A Execute N "execute" @@ -129,6 +137,7 @@ A FloatOverflow N "float_overflow" A FloatUnderflow N "float_underflow" A Format N "format" A FormatAt F "$format@" +A Full N "full" A Functor N "functor" A GT N ">" A GVar N "var" @@ -140,6 +149,7 @@ A GcVeryVerbose F "$gc_very_verbose" A GeneratePredInfo F "$generate_pred_info" A Getwork F "$getwork" A GetworkSeq F "$getwork_seq" +A Global N "global" A GlobalSp N "global_sp" A GlobalTrie N "global_trie" A GoalExpansion N "goal_expansion" @@ -148,9 +158,11 @@ A HERE N "\n <====HERE====> \n" A HandleThrow F "$handle_throw" A Heap N "heap" A HeapUsed N "heapused" +A HugeInt N "huge_int" A IDB N "idb" A IOMode N "io_mode" A Id N "id" +A Ignore N "ignore" A Inf N "inf" A Infinity N "infinity" A InitGoal F "$init_goal" @@ -167,12 +179,14 @@ A Key N "key" A LDLibraryPath N "LD_LIBRARY_PATH" A LONGINT N "LongInt" A LOOP N "_LOOP_" +A LoopStream N "loop_stream" A LT N "<" A LastExecuteWithin F "$last_execute_within" A Leash F "$leash" A Least N "least" A Length F "length" A List N "list" +A Line N "line" A Live F "$live" A LoadAnswers N "load_answers" A Local N "local" @@ -189,7 +203,9 @@ A Min N "min" A Minimum N "minimum" A Minus N "-" A Modify N "modify" +A Module N "module" A Most N "most" +A Multi N "multi" A MultiFile F "$mf" A Multiple F "multiple" A Mutable N "mutable" @@ -233,7 +249,9 @@ A OutOfRange N "out_of_range" A OutOfStackError N "out_of_stack_error" A OutOfTrailError N "out_of_trail_error" A Output N "output" +A Parameter N "parameter" A PrologCommonsDir N "prolog_commons_directory" +A Past N "past" A PastEndOfStream N "past_end_of_stream" A PermissionError N "permission_error" A Pi N "pi" @@ -255,17 +273,21 @@ A Quiet N "quiet" A Radix N "radix" A Random N "random" A Range N "range" +A RDiv N "rdiv" A Read N "read" +A ReadOnly N "read_only" +A ReadWrite N "read_write" A Readutil N "readutil" A RecordedP F "$recordep" A RecordedWithKey F "$recorded_with_key" +A RedefineWarnings N "redefine_warnings" A RedoFreeze F "$redo_freeze" A RefoundVar F "$I_FOUND_THE_VARIABLE_AGAIN" A Repeat N "repeat" A RepeatSpace N "repeat " A Reposition N "reposition" A RepresentationError N "representation_error" -A RDiv N "rdiv" +A Reset N "reset" A Resize N "resize" A ResourceError N "resource_error" A RestoreRegs F "$restore_regs" @@ -294,9 +316,13 @@ A SigUsr1 N "sig_usr1" A SigUsr2 N "sig_usr2" A SigVTAlarm N "sig_vtalarm" A SigWakeUp N "sig_wake_up" +A Silent N "Silent" +A Single N "single" +A SingleVarWarnings N "single_var_warnings" A Singleton N "singleton" A Slash N "/" A Socket N "socket" +A Source N "source" A SourceSink N "source_sink" A Spy F "$spy" A Stack N "stack" @@ -314,6 +340,7 @@ A StreamPosition N "stream_position" A String N "string" A STRING F "String" A Swi N "swi" +A SymbolChar N "symbol_char" A SyntaxError N "syntax_error" A SyntaxErrorHandler N "syntax_error_handler" A System N "system" @@ -324,6 +351,7 @@ A Terms N "terms" A TermExpansion N "term_expansion" A Text N "text" A TextStream N "text_stream" +A Thread N "thread" A Threads N "threads" A Throw N "throw" A TimeOutSpec N "time_out_spec" @@ -349,12 +377,15 @@ A UserOut N "user_output" A VBar N "|" A Var F "$VAR" A VarBranches N "var_branches" +A VariableNames N "variable_names" A HiddenVar F "$V" A Variable N "variable" A VersionNumber F "$version_name" A WakeUpGoal F "$wake_up_goal" +A Warning N "warning" A When F "$when" A Write N "write" +A Xml N "xml" A YapHacks N "yap_hacks" A ZeroDivisor N "zero_divisor" F AfInet AfInet 2 @@ -375,9 +406,12 @@ F Braces Braces 1 F Call Call 1 F Catch Catch 3 F ChangeModule ChangeModule 1 +F Chars Chars 2 +F Chars1 Chars 1 F CleanCall CleanCall 2 F Clist When 4 F Codes Codes 2 +F Codes1 Codes 1 F Comma Comma 2 F CommentHook CommentHook 3 F Context2 Context 2 @@ -467,6 +501,7 @@ F StaticClause StaticClause 2 F Stream Stream 1 F StreamEOS EndOfStream 1 F StreamPos StreamPos 4 +F String1 String 1 F SyntaxError SyntaxError 7 F ShortSyntaxError SyntaxError 1 F TermExpansion TermExpansion 2 diff --git a/misc/GLOBALS b/misc/GLOBALS index cc44c04ec..c498df085 100755 --- a/misc/GLOBALS +++ b/misc/GLOBALS @@ -22,6 +22,7 @@ int Initialised =FALSE int InitialisedFromPL =FALSE int PL_Argc =0 char** PL_Argv =NULL +bool FAST_BOOT_FLAG =false // halt hooks struct halt_hook* HaltHooks =NULL @@ -71,20 +72,23 @@ int PrologShouldHandleInterrupts void /* This is the guy who actually started the system, and who has the correct registers */ #if defined(THREADS) pthread_t master_thread void -struct thread_mbox* named_mboxes =NULL -lockvar mboxq_lock MkLock -UInt mbox_count =0 -struct swi_mutex* WithMutex void +struct thread_mbox* named_mboxes =NULL +lockvar mboxq_lock MkLock +UInt mbox_count =0 +struct swi_mutex* WithMutex void #endif /* THREADS */ // streams -struct io_stream* stdout =Soutput -struct io_stream* stderr =Serror +struct stream_desc* Stream void // access to yap initial arguments char** argv void int argc void +// Prolog execution and state flags +union flagTerm* Flags void +UInt flagCount void + // extensions to Terms #ifdef COROUTINING /* array with the ops for your favourite extensions */ @@ -157,6 +161,15 @@ lockvar MUT_ACCESS MkLock char* Home =NULL +/* ISO char conversion: I will make no comments */ +char* CharConversionTable =NULL +char* CharConversionTable2 =NULL + + +/* time */ +void* LastWtimePtr =NULL + + END_GLOBAL_DATA diff --git a/misc/HEAPFIELDS b/misc/HEAPFIELDS index a8a94d8ae..290738778 100644 --- a/misc/HEAPFIELDS +++ b/misc/HEAPFIELDS @@ -87,8 +87,52 @@ ATOMS #ifdef EUROTRA Term term_dollar_u TermDollarU MkAT AtomDollarU #endif +Term term_append TermAppend MkAT AtomAppend +Term term_atomd TermAtom MkAT AtomAtom +Term term_binary TermBinary MkAT AtomBinary +Term term_boolean TermBoolean MkAT AtomBoolean +Term term_chars TermChars MkAT AtomChars +Term term_codes TermCodes MkAT AtomCodes +Term term_compact TermCompact MkAT AtomCompact +Term term_dec10 TermDec10 MkAT AtomDec10 +Term term_dots TermDots MkAT AtomDots +Term term_eof TermEof MkAT AtomEof +Term term_eof_code TermEOfCode MkAT AtomEOfCode +Term term_error TermError MkAT AtomError +Term term_exception TermException MkAT AtomException +Term term_fail TermFail MkAT AtomFail +Term term_false TermFalse MkAT AtomFalse +Term term_float TermFloat MkAT AtomFloat +Term term_global TermGlobal MkAT AtomGlobal +Term term_ignore TermIgnore MkAT AtomIgnore +Term term_integer TermInteger MkAT AtomInteger +Term term_max TermMax MkAT AtomMax +Term term_module TermModule MkAT AtomModule +Term term_multi TermMulti MkAT AtomMulti +Term term_off TermOff MkAT AtomOff +Term term_on TermOn MkAT AtomOn +Term term_portray TermPortray MkAT AtomPortray Term term_prolog TermProlog MkAT AtomProlog +Term term_quiet TermQuiet MkAT AtomQuiet +Term term_read TermRead MkAT AtomRead +Term term_read_only TermReadOnly MkAT AtomReadOnly +Term term_read_write TermReadWrite MkAT AtomReadWrite Term term_refound_var TermReFoundVar MkAT AtomRefoundVar +Term term_reset TermReset MkAT AtomReset +Term term_silent TermSilent MkAT AtomSilent +Term term_single TermSingle MkAT AtomSingle +Term term_source TermSource MkAT AtomSource +Term term_string TermString MkAT AtomString +Term term_symbolchar TermSymbolChar MkAT AtomSymbolChar +Term term_term TermTerm MkAT AtomTerm +Term term_text TermText MkAT AtomText +Term term_thread TermThread MkAT AtomThread +Term term_true TermTrue MkAT AtomTrue +Term term_warning TermWarning MkAT AtomWarning +Term term_write TermWrite MkAT AtomWrite +Term term_xml TermXml MkAT AtomXml + +//modules Term user_module USER_MODULE MkAT AtomUser Term idb_module IDB_MODULE MkAT AtomIDB Term attributes_module ATTRIBUTES_MODULE MkAT AtomAttributes @@ -115,6 +159,14 @@ struct mod_entry *current_modules CurrentModules =NULL ModEntryPtrAdjust // don't actually want to define a field void void void Yap_InitModules() void +// make sure we have the streams set at this point. +// don't actually want to define a field +void void void Yap_InitPlIO() void + +// make sure we have the flags set at this point. +// don't actually want to define a field +void void void Yap_InitFlags(true) void + /* Anderson's JIT */ yap_exec_mode execution_mode Yap_ExecutionMode =INTERPRETED void @@ -295,28 +347,9 @@ int num_of_atts NUM_OF_ATTS =1 void UInt atts_size Yap_AttsSize void void #endif -/* YAP control flags */ -Int yap_flags_field[NUMBER_OF_YAP_FLAGS] yap_flags InitFlags() void - /* Operators */ struct operator_entry *op_list OpList =NULL OpListAdjust -/* ISO char conversion: I will make no comments */ -char *char_conversion_table CharConversionTable =NULL CodeCharPAdjust -char *char_conversion_table2 CharConversionTable2 =NULL CodeCharPAdjust - -/* what to do when the parser gives an error: should be thread bound? */ -int parser_error_style ParserErrorStyle =EXCEPTION_ON_PARSER_ERROR void - -/* library location. */ -const char *yap_lib_dir Yap_LibDir =NULL CodeConstCharPAdjust -const char *yap_foreign_dir Yap_ForeignDir =NULL CodeConstCharPAdjust -const char *yap_commons_dir Yap_CommonsDir =NULL CodeConstCharPAdjust -const char *yap_bin_dir Yap_BinDir =NULL CodeConstCharPAdjust - -/* time */ -void *last_wtime LastWtimePtr =NULL CodeVoidPAdjust - /* foreign code loaded */ struct ForeignLoadItem *foreign_code_loaded ForeignCodeLoaded =NULL RestoreForeignCode() ADDR foreign_code_base ForeignCodeBase =NULL void @@ -340,10 +373,10 @@ Atom empty_wakeups[MAX_EMPTY_WAKEUPS] EmptyWakeups InitEmptyWakeups() RestoreE int max_empty_wakeups MaxEmptyWakeups =0 /* SWI blobs */ -struct PL_blob_t *swi_blob_types SWI_BlobTypes =NULL RestoreSWIBlobTypes() -struct AtomEntryStruct *swi_blobs SWI_Blobs =NULL RestoreSWIBlobs() +struct YAP_blob_t *swi_blob_types BlobTypes =NULL RestoreBlobTypes() +struct AtomEntryStruct *swi_blobs Blobs =NULL RestoreBlobs() UInt nofblobs NOfBlobs =0 UInt nofblobsmax NOfBlobsMax =256 #if defined(YAPOR) || defined(THREADS) -lockvar swi_blobs_lock SWI_Blobs_Lock MkLock +lockvar blobs_lock Blobs_Lock MkLock #endif diff --git a/misc/LOCALS b/misc/LOCALS index 48df57e3b..c6d311fac 100755 --- a/misc/LOCALS +++ b/misc/LOCALS @@ -2,10 +2,37 @@ START_WORKER_LOCAL // Streams +struct AliasDescS* FileAliases =Yap_InitStandardAliases() +int NOfFileAliases void +int SzOfFileAliases void + int c_input_stream =0 int c_output_stream =1 int c_error_stream =2 +bool sockets_io =false + +// +// Used by the prompts to check if they are after a newline, and then a +// prompt should be output, or if we are in the middle of a line. +// +bool newline =true + +struct format_status* FormatInfo =NULL + +Atom AtPrompt =AtomNil +char Prompt[MAX_PROMPT+1] void + +encoding_t encoding =Yap_InitialEncoding() +bool quasi_quotations =false +UInt default_priority =1200 + +bool eot_before_eof =false +UInt max_depth =0 +UInt max_list =0 +UInt max_write_args =0 + + // Restore info CELL* OldASP =NULL CELL* OldLCL0 =NULL @@ -46,6 +73,8 @@ union CONSULT_OBJ* ConsultBase =NULL /* low-water mark for consult */ union CONSULT_OBJ* ConsultLow =NULL Term VarNames =((Term)0) +Atom SourceFileName =NULL +UInt SourceFileLineno =0 //global variables Term GlobalArena =0L TermToGlobalOrAtomAdjust @@ -60,7 +89,7 @@ char* ScannerStack =NULL struct scanner_extra_alloc* ScannerExtraBlocks =NULL struct DB_TERM* BallTerm =NULL RestoreBallTerm(wid) UInt MaxActiveSignals =64L -uint64_t Signals =0L +uint64_t Signals =0L UInt IPredArity =0L yamop* ProfEnd =NULL int UncaughtThrow =FALSE @@ -131,7 +160,7 @@ Int* LabelFirstArray =NULL UInt LabelFirstArraySz =0L // Thread Local Area for SWI-Prolog emulation routines. -struct PL_local_data* PL_local_data_p =Yap_InitThreadIO(wid) +// struct PL_local_data* PL_local_data_p =Yap_InitThreadIO(wid) #ifdef THREADS struct thandle ThreadHandle InitThreadHandle(wid) @@ -139,6 +168,7 @@ struct thandle ThreadHandle InitThreadHandle(wid) #if defined(YAPOR) || defined(TABLING) struct local_optyap_data optyap_data Yap_init_local_optyap_data(wid) +UInt TabMode =0L #endif /* YAPOR || TABLING */ int InterruptsDisabled =FALSE @@ -177,10 +207,14 @@ char FileNameBuf[YAP_FILENAME_MAX] void char FileNameBuf2[YAP_FILENAME_MAX] void // Prolog State - +UInt BreakLevel =0 Int PrologMode =BootMode int CritLocks =0 +// Prolog execution and state flags +union flagTerm* Flags void +UInt flagCount void + //analyst.c /* used to find out how many instructions of each kind are executed */ #ifdef ANALYST diff --git a/misc/buildatoms b/misc/buildatoms index 2f8b27dee..dbac06987 100644 --- a/misc/buildatoms +++ b/misc/buildatoms @@ -1,6 +1,6 @@ :- use_module(library(lineutils), - [file_filter_with_initialization/5, + [file_filter_with_init/5, split/3]). :- use_module(library(lists), @@ -12,9 +12,9 @@ main :- warning(Warning), - file_filter_with_initialization('misc/ATOMS','H/tatoms.h',gen_fields, Warning, ['tatoms.h']), - file_filter_with_initialization('misc/ATOMS','H/iatoms.h',gen_decl, Warning, ['iatoms.h']), - file_filter_with_initialization('misc/ATOMS','H/ratoms.h',gen_rcov, Warning, ['ratoms.h']). + file_filter_with_init('misc/ATOMS','H/tatoms.h',gen_fields, Warning, ['tatoms.h']), + file_filter_with_init('misc/ATOMS','H/iatoms.h',gen_decl, Warning, ['iatoms.h']), + file_filter_with_init('misc/ATOMS','H/ratoms.h',gen_rcov, Warning, ['ratoms.h']). warning('~n /* This file, ~a, was generated automatically by \"yap -L misc/buildatoms\"~n please do not update, update misc/ATOMS instead */~n~n').