9#define LOCAL_INIT(A, B, C) \
12#define LOCAL_ARRAY(A, B, C) A B[C]
13#define LOCAL_ARRAY_ARRAY(A, B, C,D) A B[C][D]
14#define LOCAL_INIT(A, B, C, D) A B[C][D]
15#define LOCAL_INITF(A, B, C) \
18 #define LOCAL_INIT_RESTORE(A,B,C,D) A B; C; D;
22LOCAL_INIT(
int, c_input_stream, 0);
23LOCAL_INIT(
int, c_output_stream, 1);
24LOCAL_INIT(
int, c_error_stream, 2);
25LOCAL_INIT(
bool, sockets_io,
false);
26LOCAL_INIT(
bool, within_print_message,
false);
32LOCAL_INIT(
bool, newline,
true);
34LOCAL_INIT(
Atom, AtPrompt, AtomNil);
35LOCAL_ARRAY(
char, Prompt, MAX_PROMPT + 1);
37LOCAL_ARRAY(Term, debugger_state, DEBUG_NUMBER_OF_OPTS);
39LOCAL_INITF(encoding_t,
encoding, Yap_DefaultEncoding());
40LOCAL_INIT(
bool, quasi_quotations,
false);
41LOCAL_INIT(UInt, default_priority, 1200);
42LOCAL_INIT(
bool, eot_before_eof,
false);
43LOCAL_INIT(UInt, max_depth, 0);
44LOCAL_INIT(UInt, max_list, 0);
45LOCAL_INIT(UInt, max_write_args, 0);
47LOCAL_INIT(CELL *, OldASP, NULL);
48LOCAL_INIT(CELL *, OldLCL0, NULL);
49LOCAL_INIT(tr_fr_ptr, OldTR, NULL);
50LOCAL_INIT(CELL *, OldGlobalBase, NULL);
51LOCAL_INIT(CELL *, OldH, NULL);
52LOCAL_INIT(CELL *, OldH0, NULL);
53LOCAL_INIT(ADDR, OldTrailBase, NULL);
54LOCAL_INIT(ADDR, OldTrailTop, NULL);
55LOCAL_INIT(ADDR, OldHeapBase, NULL);
56LOCAL_INIT(ADDR, OldHeapTop, NULL);
57LOCAL_INIT(Int, ClDiff, 0L);
58LOCAL_INIT(Int, GDiff, 0L);
59LOCAL_INIT(Int, HDiff, 0L);
60LOCAL_INIT(Int, GDiff0, 0L);
61LOCAL_INIT(CELL *, GSplit, NULL);
62LOCAL_INIT(Int, LDiff, 0L);
63LOCAL_INIT(Int, TrDiff, 0L);
64LOCAL_INIT(Int, XDiff, 0L);
65LOCAL_INIT(Int, DelayDiff, 0L);
66LOCAL_INIT(Int, BaseDiff, 0L);
69LOCAL_INIT(YAP_ULONG_LONG, ReductionsCounter, 0L);
70LOCAL_INIT(YAP_ULONG_LONG, PredEntriesCounter, 0L);
71LOCAL_INIT(YAP_ULONG_LONG, RetriesCounter, 0L);
72LOCAL_INIT(
int, ReductionsCounterOn, 0L);
73LOCAL_INIT(
int, PredEntriesCounterOn, 0L);
74LOCAL_INIT(
int, RetriesCounterOn, 0L);
79LOCAL(UInt, ConsultCapacity);
84LOCAL_INIT(Term, VarNames, ((Term)0));
85LOCAL_INIT(
Atom, SourceFileName, NULL);
86LOCAL_INIT(UInt, SourceFileLineno, 0);
88LOCAL_INIT_RESTORE(Term, GlobalArena, 0L, TermToGlobalOrAtomAdjust);
89LOCAL_INIT(UInt, GlobalArenaOverflows, 0L);
90LOCAL_INIT(Int, ArenaOverflows, 0L);
91LOCAL_INIT(Int, DepthArenas, 0);
92LOCAL_INIT(
struct pred_entry *, LastAssertedPred, NULL);
94LOCAL_INIT(
char *, ScannerStack, NULL);
99LOCAL_INIT(Int, CBorder, 0);
100LOCAL_INIT(yhandle_t , HandleBorder, 1);
102LOCAL_INIT(UInt, MaxActiveSignals, 64L);
104LOCAL_INIT(uint64_t, Signals, 0L);
106LOCAL_INIT(UInt, IPredArity, 0L);
107LOCAL_INIT(
yamop *, ProfEnd, NULL);
108LOCAL_INIT(
int, DoingUndefp, FALSE);
109LOCAL(
yamop, OpBuffer);
110LOCAL_INIT(Int, StartCharCount, 0L);
111LOCAL_INIT(Int, StartLineCount, 0L);
112LOCAL_INIT(Int, StartLinePos, 0L);
114LOCAL_INIT_RESTORE(Term, WokenGoals, 0L, TermToGlobalAdjust);
115LOCAL_INIT(
bool, DoNotWakeUp,
false);
116LOCAL_INIT_RESTORE(Term, AttsMutableList, 0L, TermToGlobalAdjust);
119LOCAL_INIT(Term, GcGeneration, 0);
120LOCAL_INIT(Term, GcPhase, 0L);
121LOCAL_INIT(UInt, GcCurrentPhase, 0L);
122LOCAL_INIT(UInt, GcCalls, 0);
123LOCAL_INIT(Int, TotGcTime, 0L);
124LOCAL_INIT(YAP_ULONG_LONG, TotGcRecovered, 0L);
125LOCAL_INIT(Int, LastGcTime, 0L);
126LOCAL_INIT(Int, LastSSTime, 0L);
127LOCAL_INIT(CELL *, OpenArray, NULL);
129LOCAL_INIT(
int, MallocDepth, 0L);
130LOCAL_INIT(Int, total_marked, 0L);
131LOCAL_INIT(Int, total_oldies, 0L);
132LOCAL_INIT(
struct choicept *, current_B, NULL);
133LOCAL_INIT(CELL *, prev_HB, NULL);
134LOCAL_INIT(CELL *, HGEN, NULL);
135LOCAL_INIT(CELL **, iptop, NULL);
136#if defined(GC_NO_TAGS)
137LOCAL_INIT(
char *, bp, NULL);
139LOCAL_INIT(tr_fr_ptr, sTR, NULL);
140LOCAL_INIT(tr_fr_ptr, sTR0, NULL);
141LOCAL_INIT(tr_fr_ptr, new_TR, NULL);
144LOCAL_INIT(
int, discard_trail_entries, 0);
148LOCAL_INIT(UInt, gc_timestamp, 0L);
149LOCAL_INIT(ADDR, db_vec, NULL);
150LOCAL_INIT(ADDR, db_vec0, NULL);
153LOCAL_INIT(CELL *, GC_min_regs, NULL);
154LOCAL_INIT(CELL *, GC_Max_regs, NULL);
156LOCAL_INIT(
void *, aux, malloc(1024*16) );
157LOCAL_INIT(
size_t, aux_sz, 1024*16 );
160LOCAL( CELL *, ParserAuxSp);
161LOCAL( CELL *, ParserAuxMax);
162LOCAL( CELL *, ParserAuxBase);
164LOCAL(sigjmp_buf , gc_restore);
165LOCAL(CELL *, extra_gc_cells);
166LOCAL(CELL *, extra_gc_cells_base);
167LOCAL(CELL *, extra_gc_cells_top);
168LOCAL_INIT(UInt, extra_gc_cells_size, 256);
169LOCAL_INIT_RESTORE(
struct array_entry *, DynamicArrays, NULL, PtoArrayEAdjust);
171LOCAL_INIT_RESTORE(
struct global_entry *, GlobalVariables, NULL, PtoGlobalEAdjust);
172LOCAL_INIT(
int, AllowRestart, FALSE);
175LOCAL_INIT(
struct mem_blk *, CMemFirstBlock, NULL);
176LOCAL_INIT(UInt, CMemFirstBlockSz, 0L);
179LOCAL_INIT(
int, nperm, 0);
180LOCAL_INIT(
int, jMP, 0);
182LOCAL_INIT(Int *, LabelFirstArray, NULL);
183LOCAL_INIT(UInt, LabelFirstArraySz, 0L);
188LOCAL_INITF(
struct thandle, ThreadHandle, InitThreadHandle(wid));
191#if defined(YAPOR) || defined(TABLING)
192LOCAL_INITF(
struct local_optyap_data, optyap_data,Yap_init_local_optyap_data(wid));
193LOCAL_INIT(UInt, TabMode, 0L);
196LOCAL_INIT(
int, InterruptsDisabled, FALSE);
201LOCAL_INIT(Int, total_choicepoints, 0);
204LOCAL_INIT(
int, consult_level, 0);
207LOCAL(ADDR, LocalBase);
208LOCAL(ADDR, GlobalBase);
209LOCAL(ADDR, TrailBase);
210LOCAL(ADDR, TrailTop);
215LOCAL_INIT(
bool, delay,
false);
217LOCAL(jmp_buf, IOBotch);
226LOCAL(Term, Comments);
227LOCAL(CELL *, CommentsTail);
228LOCAL(CELL *, CommentsNextChar);
229LOCAL(
wchar_t *, CommentsBuff);
230LOCAL(
size_t, CommentsBuffPos);
231LOCAL(
size_t, CommentsBuffLim);
232LOCAL_INIT(sigjmp_buf *, RestartEnv, NULL);
236LOCAL_INIT(UInt, BreakLevel, 0);
237LOCAL_INIT(Int, PrologMode, BootMode);
238LOCAL_INIT(
int, CritLocks, 0);
242LOCAL(UInt, flagCount);
246LOCAL_ARRAY(YAP_ULONG_LONG, opcount, _std_top + 1);
247LOCAL_ARRAY_ARRAY(YAP_ULONG_LONG, 2opcount, _std_top + 1, _std_top + 1);
255LOCAL_INIT(
char *, mathstring, NULL);
256LOCAL_INIT(
struct eval_context *, ctx, NULL);
260LOCAL_INIT(
int, heap_overflows, 0);
261LOCAL_INIT(Int, total_heap_overflow_time, 0);
262LOCAL_INIT(
int, stack_overflows, 0);
263LOCAL_INIT(Int, total_stack_overflow_time, 0);
264LOCAL_INIT(
int, delay_overflows, 0);
265LOCAL_INIT(Int, total_delay_overflow_time, 0);
266LOCAL_INIT(
int, trail_overflows, 0);
267LOCAL_INIT(Int, total_trail_overflow_time, 0);
268LOCAL_INIT(
int, atom_table_overflows, 0);
269LOCAL_INIT(Int, total_atom_table_overflow_time, 0);
273LOCAL_INIT(
int, dl_errno, 0);
277#ifdef LOW_LEVEL_TRACER
278LOCAL_INIT(
int, do_trace_primitives, TRUE);
283LOCAL_INIT(UInt, ExportAtomHashTableSize, 0);
284LOCAL_INIT(UInt, ExportAtomHashTableNum, 0);
286LOCAL_INIT(UInt, ExportFunctorHashTableSize, 0);
287LOCAL_INIT(UInt, ExportFunctorHashTableNum, 0);
289LOCAL_INIT(UInt, ExportPredEntryHashTableSize, 0);
290LOCAL_INIT(UInt, ExportPredEntryHashTableNum, 0);
292LOCAL_INIT(UInt, ExportDBRefHashTableSize, 0);
293LOCAL_INIT(UInt, ExportDBRefHashTableNum, 0);
295LOCAL_INIT(UInt, ImportAtomHashTableSize, 0);
296LOCAL_INIT(UInt, ImportAtomHashTableNum, 0);
298LOCAL_INIT(UInt, ImportFunctorHashTableSize, 0);
299LOCAL_INIT(UInt, ImportFunctorHashTableNum, 0);
301LOCAL_INIT(UInt, ImportOPCODEHashTableSize, 0);
303LOCAL_INIT(UInt, ImportPredEntryHashTableSize, 0);
304LOCAL_INIT(UInt, ImportPredEntryHashTableNum, 0);
306LOCAL_INIT(UInt, ImportDBRefHashTableSize, 0);
307LOCAL_INIT(UInt, ImportDBRefHashTableNum, 0);
308LOCAL_INIT(
yamop *, ImportFAILCODE, NULL);
312LOCAL_ARRAY(UInt, ibnds, 256);
313LOCAL_INIT(
struct index_t *, exo_it, NULL);
314LOCAL_INIT(CELL *, exo_base, NULL);
315LOCAL_INIT(UInt, exo_arity, 0);
316LOCAL_INIT(UInt, exo_arg, 0);
319LOCAL(
struct scan_atoms *, search_atoms);
323LOCAL_INIT(yhandle_t, CurSlot, 0);
324LOCAL_INIT(yhandle_t, FrozenHandles, 0);
325LOCAL_INIT(yhandle_t, NSlots, 0);
326LOCAL_INIT(CELL *, SlotBase, InitHandles(wid));
329LOCAL_INIT(
struct swi_mutex *, Mutexes, NULL);
331LOCAL_INIT(Term, SourceModule, 0);
332LOCAL_INIT(Term, Including, TermNil);
334LOCAL_INIT(
size_t, MAX_SIZE, 1024L);
337LOCAL_INIT(uint64_t, LastWTime, 0);
thread view of the scratch buffer
@ encoding
support for coding systens, YAP relies on UTF-8 internally
all we need to know about an error/throw
a flag is represented as a Prolog term