b3cc23ce64
simplify error handling use get and inject use wide support in OS be stricter in checkin streams and arguments
327 lines
9.1 KiB
Plaintext
Executable File
327 lines
9.1 KiB
Plaintext
Executable File
// Stuff that must be considered local to a thread or worker
|
|
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
|
|
|
|
bool within_print_message =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_DefaultEncoding()
|
|
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
|
|
tr_fr_ptr OldTR =NULL
|
|
CELL* OldGlobalBase =NULL
|
|
CELL* OldH =NULL
|
|
CELL* OldH0 =NULL
|
|
ADDR OldTrailBase =NULL
|
|
ADDR OldTrailTop =NULL
|
|
ADDR OldHeapBase =NULL
|
|
ADDR OldHeapTop =NULL
|
|
Int ClDiff =0L
|
|
Int GDiff =0L
|
|
Int HDiff =0L
|
|
Int GDiff0 =0L
|
|
CELL* GSplit =NULL
|
|
Int LDiff =0L
|
|
Int TrDiff =0L
|
|
Int XDiff =0L
|
|
Int DelayDiff =0L
|
|
Int BaseDiff =0L
|
|
|
|
// Reduction counters
|
|
YAP_ULONG_LONG ReductionsCounter =0L
|
|
YAP_ULONG_LONG PredEntriesCounter =0L
|
|
YAP_ULONG_LONG RetriesCounter =0L
|
|
int ReductionsCounterOn =0L
|
|
int PredEntriesCounterOn =0L
|
|
int RetriesCounterOn =0L
|
|
|
|
// support for consulting files
|
|
/* current consult stack */
|
|
union CONSULT_OBJ* ConsultSp =NULL
|
|
/* current maximum number of cells in consult stack */
|
|
UInt ConsultCapacity void
|
|
/* top of consult stack */
|
|
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
|
|
UInt GlobalArenaOverflows =0L
|
|
Int ArenaOverflows =0L
|
|
Int DepthArenas =0
|
|
|
|
int ArithError =FALSE
|
|
struct pred_entry* LastAssertedPred =NULL
|
|
struct pred_entry* TmpPred =NULL
|
|
char* ScannerStack =NULL
|
|
struct scanner_extra_alloc* ScannerExtraBlocks =NULL
|
|
struct DB_TERM* BallTerm =NULL RestoreBallTerm(wid)
|
|
UInt MaxActiveSignals =64L
|
|
uint64_t Signals =0L
|
|
UInt IPredArity =0L
|
|
yamop* ProfEnd =NULL
|
|
int UncaughtThrow =FALSE
|
|
int DoingUndefp =FALSE
|
|
Int StartCharCount =0L
|
|
Int StartLineCount =0L
|
|
Int StartLinePos =0L
|
|
scratch_block ScratchPad InitScratchPad(wid)
|
|
#ifdef COROUTINING
|
|
Term WokenGoals =0L TermToGlobalAdjust
|
|
Term AttsMutableList =0L TermToGlobalAdjust
|
|
#endif
|
|
|
|
// gc_stuff
|
|
Term GcGeneration =0L TermToGlobalAdjust
|
|
Term GcPhase =0L TermToGlobalAdjust
|
|
UInt GcCurrentPhase =0L
|
|
UInt GcCalls =0L
|
|
Int TotGcTime =0L
|
|
YAP_ULONG_LONG TotGcRecovered =0L
|
|
Int LastGcTime =0L
|
|
Int LastSSTime =0L
|
|
CELL* OpenArray =NULL
|
|
|
|
/* in a single gc */
|
|
Int total_marked =0L
|
|
Int total_oldies =0L
|
|
struct choicept* current_B =NULL
|
|
CELL* prev_HB =NULL
|
|
CELL* HGEN =NULL
|
|
CELL** iptop =NULL
|
|
|
|
#if defined(GC_NO_TAGS)
|
|
char* bp =NULL
|
|
#endif
|
|
tr_fr_ptr sTR =NULL
|
|
tr_fr_ptr sTR0 =NULL
|
|
tr_fr_ptr new_TR =NULL
|
|
struct gc_mark_continuation* cont_top0 =NULL
|
|
struct gc_mark_continuation* cont_top =NULL
|
|
int discard_trail_entries =0
|
|
gc_ma_hash_entry gc_ma_hash_table[GC_MAVARS_HASH_SIZE] void
|
|
gc_ma_hash_entry* gc_ma_h_top =NULL
|
|
gc_ma_hash_entry* gc_ma_h_list =NULL
|
|
UInt gc_timestamp =0L
|
|
ADDR db_vec =NULL
|
|
ADDR db_vec0 =NULL
|
|
struct RB_red_blk_node* db_root =NULL
|
|
struct RB_red_blk_node* db_nil =NULL
|
|
|
|
sigjmp_buf gc_restore void
|
|
CELL* extra_gc_cells void
|
|
CELL* extra_gc_cells_base void
|
|
CELL* extra_gc_cells_top void
|
|
UInt extra_gc_cells_size =256
|
|
struct array_entry* DynamicArrays =NULL PtoArrayEAdjust
|
|
struct static_array_entry* StaticArrays =NULL PtoArraySAdjust
|
|
struct global_entry* GlobalVariables =NULL PtoGlobalEAdjust
|
|
int AllowRestart =FALSE
|
|
|
|
// Thread Local Area for Fast Storage of Intermediate Compiled Code
|
|
struct mem_blk* CMemFirstBlock =NULL
|
|
UInt CMemFirstBlockSz =0L
|
|
|
|
// Variable used by the compiler to store number of permanent vars in a clause
|
|
int nperm =0L
|
|
|
|
// Thread Local Area for Labels
|
|
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)
|
|
|
|
#ifdef THREADS
|
|
struct thandle ThreadHandle InitThreadHandle(wid)
|
|
#endif /* THREADS */
|
|
|
|
#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
|
|
|
|
struct open_query_struct* execution =NULL
|
|
|
|
#if LOW_LEVEL_TRACER
|
|
Int total_choicepoints =0
|
|
#endif
|
|
|
|
int consult_level =0
|
|
|
|
// Variables related to memory allocation
|
|
ADDR LocalBase void
|
|
ADDR GlobalBase void
|
|
ADDR TrailBase void
|
|
ADDR TrailTop void
|
|
char* ErrorMessage void
|
|
Term Error_Term void
|
|
yap_error_number Error_TYPE void
|
|
const char* Error_File void
|
|
const char* Error_Function void
|
|
int Error_Lineno void
|
|
size_t Error_Size void
|
|
char ErrorSay[MAX_ERROR_MSG_SIZE] void
|
|
jmp_buf IOBotch void
|
|
TokEntry* tokptr void
|
|
TokEntry* toktide void
|
|
VarEntry* VarTable void
|
|
VarEntry* AnonVarTable void
|
|
Term Comments void
|
|
CELL* CommentsTail void
|
|
CELL* CommentsNextChar void
|
|
wchar_t* CommentsBuff void
|
|
size_t CommentsBuffPos void
|
|
size_t CommentsBuffLim void
|
|
sigjmp_buf RestartEnv void
|
|
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
|
|
YAP_ULONG_LONG opcount[_std_top+1] void
|
|
YAP_ULONG_LONG 2opcount[_std_top+1][_std_top+1] void
|
|
#endif /* ANALYST */
|
|
|
|
//dbase.c
|
|
struct db_globs* s_dbg void
|
|
|
|
//eval.c
|
|
yap_error_number matherror =YAP_NO_ERROR
|
|
Term mathtt void
|
|
char* mathstring =NULL
|
|
yap_error_number CurrentError =YAP_NO_ERROR
|
|
|
|
//grow.c
|
|
int heap_overflows =0
|
|
Int total_heap_overflow_time =0
|
|
int stack_overflows =0
|
|
Int total_stack_overflow_time =0
|
|
int delay_overflows =0
|
|
Int total_delay_overflow_time =0
|
|
int trail_overflows =0
|
|
Int total_trail_overflow_time =0
|
|
int atom_table_overflows =0
|
|
Int total_atom_table_overflow_time =0
|
|
|
|
//load_dyld
|
|
#ifdef LOAD_DYLD
|
|
int dl_errno =0
|
|
#endif
|
|
|
|
//tracer.c
|
|
#ifdef LOW_LEVEL_TRACER
|
|
int do_trace_primitives =TRUE
|
|
#endif
|
|
|
|
//quick loader
|
|
struct export_atom_hash_entry_struct *ExportAtomHashChain =NULL
|
|
UInt ExportAtomHashTableSize =0
|
|
UInt ExportAtomHashTableNum =0
|
|
struct export_functor_hash_entry_struct *ExportFunctorHashChain =NULL
|
|
UInt ExportFunctorHashTableSize =0
|
|
UInt ExportFunctorHashTableNum =0
|
|
struct export_pred_entry_hash_entry_struct *ExportPredEntryHashChain =NULL
|
|
UInt ExportPredEntryHashTableSize =0
|
|
UInt ExportPredEntryHashTableNum =0
|
|
struct export_dbref_hash_entry_struct *ExportDBRefHashChain =NULL
|
|
UInt ExportDBRefHashTableSize =0
|
|
UInt ExportDBRefHashTableNum =0
|
|
struct import_atom_hash_entry_struct **ImportAtomHashChain =NULL
|
|
UInt ImportAtomHashTableSize =0
|
|
UInt ImportAtomHashTableNum =0
|
|
struct import_functor_hash_entry_struct **ImportFunctorHashChain =NULL
|
|
UInt ImportFunctorHashTableSize =0
|
|
UInt ImportFunctorHashTableNum =0
|
|
struct import_opcode_hash_entry_struct **ImportOPCODEHashChain =NULL
|
|
UInt ImportOPCODEHashTableSize =0
|
|
struct import_pred_entry_hash_entry_struct **ImportPredEntryHashChain =NULL
|
|
UInt ImportPredEntryHashTableSize =0
|
|
UInt ImportPredEntryHashTableNum =0
|
|
struct import_dbref_hash_entry_struct **ImportDBRefHashChain =NULL
|
|
UInt ImportDBRefHashTableSize =0
|
|
UInt ImportDBRefHashTableNum =0
|
|
yamop *ImportFAILCODE =NULL
|
|
|
|
|
|
Functor FunctorVar =FunctorVar
|
|
|
|
#if __ANDROID__
|
|
// current virtual directory.
|
|
struct AAssetManager* assetManager =GLOBAL_assetManager
|
|
char* InAssetDir =NULL
|
|
#endif
|
|
|
|
|
|
// exo indexing
|
|
|
|
UInt ibnds[256] void
|
|
struct index_t* exo_it =NULL
|
|
CELL* exo_base =NULL
|
|
UInt exo_arity =0
|
|
UInt exo_arg =0
|
|
|
|
// atom completion
|
|
struct scan_atoms* search_atoms void
|
|
|
|
// Slots
|
|
yhandle_t CurSlot =0
|
|
yhandle_t NSlots =0
|
|
CELL* SlotBase =InitHandles(wid)
|
|
|
|
// Mutexes
|
|
struct swi_mutex* Mutexes =NULL
|
|
|
|
Term SourceModule =0
|
|
Term Including =TermNil
|
|
|
|
size_t MAX_SIZE =1024L
|
|
|
|
END_WORKER_LOCAL
|