2015-09-21 23:05:36 +01:00
|
|
|
|
2016-09-30 23:11:13 +01:00
|
|
|
/* This file, hlocals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
|
|
|
please do not update, update H/LOCALS instead */
|
2014-06-22 17:35:05 +01:00
|
|
|
|
2016-01-03 02:02:41 +00:00
|
|
|
// Stuff that must be considered local to a thread or worker
|
2014-06-22 17:35:05 +01:00
|
|
|
typedef struct worker_local {
|
2016-09-30 23:11:13 +01:00
|
|
|
// Streams
|
|
|
|
int c_input_stream_;
|
|
|
|
int c_output_stream_;
|
|
|
|
int c_error_stream_;
|
|
|
|
bool sockets_io_;
|
|
|
|
bool within_print_message_;
|
|
|
|
//
|
|
|
|
// 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_;
|
|
|
|
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_;
|
|
|
|
// Restore info
|
|
|
|
CELL* OldASP_;
|
|
|
|
CELL* OldLCL0_;
|
|
|
|
tr_fr_ptr OldTR_;
|
|
|
|
CELL* OldGlobalBase_;
|
|
|
|
CELL* OldH_;
|
|
|
|
CELL* OldH0_;
|
|
|
|
ADDR OldTrailBase_;
|
|
|
|
ADDR OldTrailTop_;
|
|
|
|
ADDR OldHeapBase_;
|
|
|
|
ADDR OldHeapTop_;
|
|
|
|
Int ClDiff_;
|
|
|
|
Int GDiff_;
|
|
|
|
Int HDiff_;
|
|
|
|
Int GDiff0_;
|
|
|
|
CELL* GSplit_;
|
|
|
|
Int LDiff_;
|
|
|
|
Int TrDiff_;
|
|
|
|
Int XDiff_;
|
|
|
|
Int DelayDiff_;
|
|
|
|
Int BaseDiff_;
|
|
|
|
// Reduction counters
|
|
|
|
YAP_ULONG_LONG ReductionsCounter_;
|
|
|
|
YAP_ULONG_LONG PredEntriesCounter_;
|
|
|
|
YAP_ULONG_LONG RetriesCounter_;
|
|
|
|
int ReductionsCounterOn_;
|
|
|
|
int PredEntriesCounterOn_;
|
|
|
|
int RetriesCounterOn_;
|
|
|
|
// support for consulting files
|
|
|
|
/* current consult stack */
|
|
|
|
union CONSULT_OBJ* ConsultSp_;
|
|
|
|
/* current maximum number of cells in consult stack */
|
|
|
|
UInt ConsultCapacity_;
|
|
|
|
/* top of consult stack */
|
|
|
|
union CONSULT_OBJ* ConsultBase_;
|
|
|
|
/* low-water mark for consult */
|
|
|
|
union CONSULT_OBJ* ConsultLow_;
|
|
|
|
Term VarNames_;
|
|
|
|
Atom SourceFileName_;
|
|
|
|
UInt SourceFileLineno_;
|
|
|
|
//global variables
|
|
|
|
Term GlobalArena_;
|
|
|
|
UInt GlobalArenaOverflows_;
|
|
|
|
Int ArenaOverflows_;
|
|
|
|
Int DepthArenas_;
|
|
|
|
struct pred_entry* LastAssertedPred_;
|
|
|
|
struct pred_entry* TmpPred_;
|
|
|
|
char* ScannerStack_;
|
|
|
|
struct scanner_extra_alloc* ScannerExtraBlocks_;
|
|
|
|
/// worker control information
|
|
|
|
/// stack limit after which the stack is managed by C-code.
|
|
|
|
Int CBorder_;
|
|
|
|
/// max number of signals (uint64_t)
|
|
|
|
UInt MaxActiveSignals_;
|
|
|
|
/// actual life signals
|
|
|
|
uint64_t Signals_;
|
|
|
|
/// indexing help data?
|
|
|
|
UInt IPredArity_;
|
|
|
|
yamop* ProfEnd_;
|
|
|
|
int DoingUndefp_;
|
|
|
|
Int StartCharCount_;
|
|
|
|
Int StartLineCount_;
|
|
|
|
Int StartLinePos_;
|
|
|
|
scratch_block ScratchPad_;
|
|
|
|
#ifdef COROUTINING
|
|
|
|
Term WokenGoals_;
|
|
|
|
Term AttsMutableList_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif
|
2016-09-30 23:11:13 +01:00
|
|
|
// gc_stuff
|
|
|
|
Term GcGeneration_;
|
|
|
|
Term GcPhase_;
|
|
|
|
UInt GcCurrentPhase_;
|
|
|
|
UInt GcCalls_;
|
|
|
|
Int TotGcTime_;
|
|
|
|
YAP_ULONG_LONG TotGcRecovered_;
|
|
|
|
Int LastGcTime_;
|
|
|
|
Int LastSSTime_;
|
|
|
|
CELL* OpenArray_;
|
|
|
|
/* in a single gc */
|
|
|
|
Int total_marked_;
|
|
|
|
Int total_oldies_;
|
|
|
|
struct choicept* current_B_;
|
|
|
|
CELL* prev_HB_;
|
|
|
|
CELL* HGEN_;
|
|
|
|
CELL** iptop_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#if defined(GC_NO_TAGS)
|
2016-09-30 23:11:13 +01:00
|
|
|
char* bp_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif
|
2016-09-30 23:11:13 +01:00
|
|
|
tr_fr_ptr sTR_;
|
|
|
|
tr_fr_ptr sTR0_;
|
|
|
|
tr_fr_ptr new_TR_;
|
|
|
|
struct gc_mark_continuation* cont_top0_;
|
|
|
|
struct gc_mark_continuation* cont_top_;
|
|
|
|
int discard_trail_entries_;
|
|
|
|
gc_ma_hash_entry gc_ma_hash_table_[GC_MAVARS_HASH_SIZE];
|
|
|
|
gc_ma_hash_entry* gc_ma_h_top_;
|
|
|
|
gc_ma_hash_entry* gc_ma_h_list_;
|
|
|
|
UInt gc_timestamp_;
|
|
|
|
ADDR db_vec_;
|
|
|
|
ADDR db_vec0_;
|
|
|
|
struct RB_red_blk_node* db_root_;
|
|
|
|
struct RB_red_blk_node* db_nil_;
|
|
|
|
sigjmp_buf gc_restore_;
|
|
|
|
CELL* extra_gc_cells_;
|
|
|
|
CELL* extra_gc_cells_base_;
|
|
|
|
CELL* extra_gc_cells_top_;
|
|
|
|
UInt extra_gc_cells_size_;
|
|
|
|
struct array_entry* DynamicArrays_;
|
|
|
|
struct static_array_entry* StaticArrays_;
|
|
|
|
struct global_entry* GlobalVariables_;
|
|
|
|
int AllowRestart_;
|
|
|
|
// Thread Local Area for Fast Storage of Intermediate Compiled Code
|
|
|
|
struct mem_blk* CMemFirstBlock_;
|
|
|
|
UInt CMemFirstBlockSz_;
|
|
|
|
// Variable used by the compiler to store number of permanent vars in a clause
|
|
|
|
int nperm_;
|
|
|
|
// Thread Local Area for Labels
|
|
|
|
Int* LabelFirstArray_;
|
|
|
|
UInt LabelFirstArraySz_;
|
2016-01-03 02:02:41 +00:00
|
|
|
// Thread Local Area for SWI-Prolog emulation routines.
|
2016-09-30 23:11:13 +01:00
|
|
|
// struct PL_local_data* PL_local_data_p =Yap_InitThreadIO(wid)
|
2014-06-22 17:35:05 +01:00
|
|
|
#ifdef THREADS
|
2016-09-30 23:11:13 +01:00
|
|
|
struct thandle ThreadHandle_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif /* THREADS */
|
|
|
|
#if defined(YAPOR) || defined(TABLING)
|
2016-09-30 23:11:13 +01:00
|
|
|
struct local_optyap_data optyap_data_;
|
|
|
|
UInt TabMode_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif /* YAPOR || TABLING */
|
2016-09-30 23:11:13 +01:00
|
|
|
int InterruptsDisabled_;
|
|
|
|
struct open_query_struct* execution_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#if LOW_LEVEL_TRACER
|
2016-09-30 23:11:13 +01:00
|
|
|
Int total_choicepoints_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif
|
2016-09-30 23:11:13 +01:00
|
|
|
int consult_level_;
|
|
|
|
// Variables related to memory allocation
|
|
|
|
ADDR LocalBase_;
|
|
|
|
ADDR GlobalBase_;
|
|
|
|
ADDR TrailBase_;
|
|
|
|
ADDR TrailTop_;
|
2016-10-20 04:44:59 +01:00
|
|
|
/* error handling info, designed to be easy to pass to the foreign world */
|
|
|
|
yap_error_descriptor_t* ActiveError_;
|
2016-09-30 23:11:13 +01:00
|
|
|
/// pointer to an exception term, from throw
|
|
|
|
jmp_buf IOBotch_;
|
|
|
|
TokEntry* tokptr_;
|
|
|
|
TokEntry* toktide_;
|
|
|
|
VarEntry* VarTable_;
|
|
|
|
VarEntry* AnonVarTable_;
|
|
|
|
Term Comments_;
|
|
|
|
CELL* CommentsTail_;
|
|
|
|
CELL* CommentsNextChar_;
|
|
|
|
wchar_t* CommentsBuff_;
|
|
|
|
size_t CommentsBuffPos_;
|
|
|
|
size_t CommentsBuffLim_;
|
|
|
|
sigjmp_buf RestartEnv_;
|
|
|
|
char FileNameBuf_[YAP_FILENAME_MAX+1];
|
|
|
|
char FileNameBuf2_[YAP_FILENAME_MAX+1];
|
2016-10-20 04:44:59 +01:00
|
|
|
struct TextBuffer_manager* TextBuffer_;
|
2016-09-30 23:11:13 +01:00
|
|
|
// Prolog State
|
|
|
|
UInt BreakLevel_;
|
|
|
|
Int PrologMode_;
|
|
|
|
int CritLocks_;
|
|
|
|
// Prolog execution and state flags
|
|
|
|
union flagTerm* Flags_;
|
|
|
|
UInt flagCount_;
|
|
|
|
//analyst.c
|
2016-01-03 02:02:41 +00:00
|
|
|
/* used to find out how many instructions of each kind are executed */
|
2014-06-22 17:35:05 +01:00
|
|
|
#ifdef ANALYST
|
2016-09-30 23:11:13 +01:00
|
|
|
YAP_ULONG_LONG opcount_[_std_top+1];
|
|
|
|
YAP_ULONG_LONG 2opcount[_std_top+1][_std_top+1]_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif /* ANALYST */
|
2016-09-30 23:11:13 +01:00
|
|
|
//dbase.c
|
|
|
|
struct db_globs* s_dbg_;
|
|
|
|
//eval.c
|
|
|
|
Term mathtt_;
|
|
|
|
char* mathstring_;
|
|
|
|
//grow.c
|
|
|
|
int heap_overflows_;
|
|
|
|
Int total_heap_overflow_time_;
|
|
|
|
int stack_overflows_;
|
|
|
|
Int total_stack_overflow_time_;
|
|
|
|
int delay_overflows_;
|
|
|
|
Int total_delay_overflow_time_;
|
|
|
|
int trail_overflows_;
|
|
|
|
Int total_trail_overflow_time_;
|
|
|
|
int atom_table_overflows_;
|
|
|
|
Int total_atom_table_overflow_time_;
|
|
|
|
//load_dyld
|
2014-06-22 17:35:05 +01:00
|
|
|
#ifdef LOAD_DYLD
|
2016-09-30 23:11:13 +01:00
|
|
|
int dl_errno_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif
|
2016-09-30 23:11:13 +01:00
|
|
|
//tracer.c
|
2014-06-22 17:35:05 +01:00
|
|
|
#ifdef LOW_LEVEL_TRACER
|
2016-09-30 23:11:13 +01:00
|
|
|
int do_trace_primitives_;
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif
|
2016-09-30 23:11:13 +01:00
|
|
|
//quick loader
|
|
|
|
struct export_atom_hash_entry_struct *ExportAtomHashChain_;
|
|
|
|
UInt ExportAtomHashTableSize_;
|
|
|
|
UInt ExportAtomHashTableNum_;
|
|
|
|
struct export_functor_hash_entry_struct *ExportFunctorHashChain_;
|
|
|
|
UInt ExportFunctorHashTableSize_;
|
|
|
|
UInt ExportFunctorHashTableNum_;
|
|
|
|
struct export_pred_entry_hash_entry_struct *ExportPredEntryHashChain_;
|
|
|
|
UInt ExportPredEntryHashTableSize_;
|
|
|
|
UInt ExportPredEntryHashTableNum_;
|
|
|
|
struct export_dbref_hash_entry_struct *ExportDBRefHashChain_;
|
|
|
|
UInt ExportDBRefHashTableSize_;
|
|
|
|
UInt ExportDBRefHashTableNum_;
|
|
|
|
struct import_atom_hash_entry_struct **ImportAtomHashChain_;
|
|
|
|
UInt ImportAtomHashTableSize_;
|
|
|
|
UInt ImportAtomHashTableNum_;
|
|
|
|
struct import_functor_hash_entry_struct **ImportFunctorHashChain_;
|
|
|
|
UInt ImportFunctorHashTableSize_;
|
|
|
|
UInt ImportFunctorHashTableNum_;
|
|
|
|
struct import_opcode_hash_entry_struct **ImportOPCODEHashChain_;
|
|
|
|
UInt ImportOPCODEHashTableSize_;
|
|
|
|
struct import_pred_entry_hash_entry_struct **ImportPredEntryHashChain_;
|
|
|
|
UInt ImportPredEntryHashTableSize_;
|
|
|
|
UInt ImportPredEntryHashTableNum_;
|
|
|
|
struct import_dbref_hash_entry_struct **ImportDBRefHashChain_;
|
|
|
|
UInt ImportDBRefHashTableSize_;
|
|
|
|
UInt ImportDBRefHashTableNum_;
|
|
|
|
yamop *ImportFAILCODE_;
|
|
|
|
// exo indexing
|
|
|
|
UInt ibnds_[256];
|
|
|
|
struct index_t* exo_it_;
|
|
|
|
CELL* exo_base_;
|
|
|
|
UInt exo_arity_;
|
|
|
|
UInt exo_arg_;
|
|
|
|
// atom completion
|
|
|
|
struct scan_atoms* search_atoms_;
|
|
|
|
struct pred_entry* SearchPreds_;
|
|
|
|
/// Slots Status
|
|
|
|
yhandle_t CurSlot_;
|
|
|
|
yhandle_t FrozenHandles_;
|
|
|
|
yhandle_t NSlots_;
|
|
|
|
CELL* SlotBase_;
|
|
|
|
// Mutexes
|
|
|
|
struct swi_mutex* Mutexes_;
|
|
|
|
Term SourceModule_;
|
|
|
|
Term Including_;
|
|
|
|
size_t MAX_SIZE_;
|
|
|
|
/* last call to walltime. */
|
|
|
|
uint64_t LastWTime_;
|
|
|
|
void* shared_;
|
2014-06-22 17:35:05 +01:00
|
|
|
} w_local;
|