YAP 7.1.0
h0struct.h
1
2 /* This file, d0hstruct.h, was generated automatically by "yap -L misc/buildlocalglobal"
3 please do not update, update H/HEAPFIELDS instead */
4
5//
6// File defining fields in the Yap_heap_codes global structure
7//
8// these fields used to spread all over the place, because they must be used in 4 ways:
9// - they must be defined somewhere
10// - they have an #ifdef to get a shorter name
11// - they must be initialised somewhere
12// - they must be restorable and collectable (from the atom gc).
13//
14//
15// The defs include 4+ components:
16// Type
17// name in structured
18// global name
19// init code and restore code (optional)
20//
21//
22//
23// MkAT (MkAtomTerm) cvts from a predefined atom to a term
24// MkPred constructs a pred_entry
25// MkOp gets an opcode
26// void does nothing
27// =VALUE inits as VALUE
28// Init... sets up call to InitFunc
29// Restore... sets up call to RestoreFunc
30//
31
32/* memory management */
33EXTERNAL UInt Yap_HoleSize;
34#if USE_DL_MALLOC
35EXTERNAL struct malloc_state *Yap_av;
36EXTERNAL struct memory_hole Yap_MemoryHoles[MAX_DLMALLOC_HOLES];
37EXTERNAL UInt Yap_NOfMemoryHoles;
38#if defined(YAPOR) || defined(THREADS)
39EXTERNAL lockvar DLMallocLock;
40#endif
41#endif
42#if USE_DL_MALLOC || (USE_SYSTEM_MALLOC && HAVE_MALLINFO)
43#ifndef HeapUsed
44#define HeapUsed Yap_givemallinfo()
45#endif
46EXTERNAL Int NotHeapUsed;
47#else
48EXTERNAL Int HeapUsed;
49#endif
50EXTERNAL Int HeapMax;
51EXTERNAL ADDR HeapTop;
52EXTERNAL ADDR HeapLim;
53EXTERNAL struct FREEB *FreeBlocks;
54#if defined(YAPOR) || defined(THREADS)
55EXTERNAL lockvar FreeBlocksLock;
56EXTERNAL lockvar HeapUsedLock;
57EXTERNAL lockvar HeapTopLock;
58EXTERNAL int HeapTopOwner;
59#endif
60EXTERNAL UInt MaxStack;
61EXTERNAL UInt MaxTrail;
62/* execution info */
63/* OPCODE REVERSE TABLE, needed to recover op tables */
64#if USE_THREADED_CODE
65EXTERNAL struct opcode_optab_entry *OP_RTABLE;
66#endif
67/* popular opcodes */
68EXTERNAL OPCODE EITHER_OPCODE;
69EXTERNAL OPCODE EXECUTE_CPRED_OPCODE;
70EXTERNAL OPCODE EXECUTE_CPRED_OP_CODE;
71EXTERNAL OPCODE EXPAND_OP_CODE;
72EXTERNAL OPCODE FAIL_OPCODE;
73EXTERNAL OPCODE INDEX_OPCODE;
74EXTERNAL OPCODE LOCKPRED_OPCODE;
75EXTERNAL OPCODE ORLAST_OPCODE;
76EXTERNAL OPCODE UNDEF_OPCODE;
77EXTERNAL OPCODE RETRY_USERC_OPCODE;
78EXTERNAL OPCODE EXECUTE_CPRED_OPCODE;
79EXTERNAL OPCODE FCALL_OPCODE;
80/* atom tables */
81EXTERNAL UInt NOfAtoms;
82EXTERNAL UInt AtomHashTableSize;
83EXTERNAL UInt WideAtomHashTableSize;
84EXTERNAL UInt NOfWideAtoms;
85EXTERNAL AtomHashEntry INVISIBLECHAIN;
86EXTERNAL AtomHashEntry *WideHashChain;
87EXTERNAL AtomHashEntry *HashChain;
88/* use atom defs here */
89#include "tatoms.h"
90#ifdef EUROTRA
91EXTERNAL Term TermDollarU;
92#endif
93//modules
94EXTERNAL Term USER_MODULE;
95EXTERNAL Term IDB_MODULE;
96EXTERNAL Term ATTRIBUTES_MODULE;
97EXTERNAL Term CHARSIO_MODULE;
98EXTERNAL Term CHTYPE_MODULE;
99EXTERNAL Term TERMS_MODULE;
100EXTERNAL Term SYSTEM_MODULE;
101EXTERNAL Term READUTIL_MODULE;
102EXTERNAL Term HACKS_MODULE;
103EXTERNAL Term ARG_MODULE;
104EXTERNAL Term GLOBALS_MODULE;
105EXTERNAL Term SWI_MODULE;
106EXTERNAL Term DBLOAD_MODULE;
107EXTERNAL Term RANGE_MODULE;
108EXTERNAL Term ERROR_MODULE;
109//
110// Module list
111//
112EXTERNAL struct mod_entry *CurrentModules;
113// make sure we have the modules set at this point.
114// don't actually want to define a field
115
116// hidden predicates
117EXTERNAL Prop HIDDEN_PREDICATES;
118// make sure we have the streams set at this point.
119// don't actually want to define a field
120
121EXTERNAL union flagTerm* GLOBAL_Flags;
122EXTERNAL UInt GLOBAL_flagCount;
123/* Anderson's JIT */
124EXTERNAL yap_exec_mode Yap_ExecutionMode;
125/* The Predicate Hash Table: fast access to predicates. */
126EXTERNAL UInt PredsInHashTable;
127EXTERNAL uint64_t PredHashTableSize;
128EXTERNAL struct pred_entry **PredHash;
129#if defined(YAPOR) || defined(THREADS)
130EXTERNAL rwlock_t PredHashRWLock;
131#endif
132/* Well-Known Predicates */
133EXTERNAL struct pred_entry *CreepCode;
134EXTERNAL struct pred_entry *UndefHook;
135EXTERNAL struct pred_entry *UndefHook0;
136EXTERNAL struct pred_entry *UserUndefHook;
137EXTERNAL struct pred_entry *SpyCode;
138EXTERNAL struct pred_entry *PredFail;
139EXTERNAL struct pred_entry *PredTrue;
140#ifdef COROUTINING
141EXTERNAL struct pred_entry *WakeUpCode;
142#endif
143EXTERNAL struct pred_entry *PredCsult;
144EXTERNAL struct pred_entry *PredDollarCatch;
145#ifdef YAPOR
146EXTERNAL struct pred_entry *PredGetwork;
147#endif /* YAPOR */
148EXTERNAL struct pred_entry *PredGoalExpansion;
149EXTERNAL struct pred_entry *PredHandleThrow;
150EXTERNAL struct pred_entry *PredIs;
151EXTERNAL struct pred_entry *PredLogUpdClause;
152EXTERNAL struct pred_entry *PredLogUpdClauseErase;
153EXTERNAL struct pred_entry *PredLogUpdClause0;
154EXTERNAL struct pred_entry *PredCall;
155EXTERNAL struct pred_entry *PredMetaCall;
156EXTERNAL struct pred_entry *PredPrologCutTo;
157EXTERNAL struct pred_entry *PredProtectStack;
158EXTERNAL struct pred_entry *PredRecordedWithKey;
159EXTERNAL struct pred_entry *PredRestoreRegs;
160EXTERNAL struct pred_entry *PredSafeCallCleanup;
161EXTERNAL struct pred_entry *PredStaticClause;
162EXTERNAL struct pred_entry *PredThrow;
163EXTERNAL struct pred_entry *PredTraceMetaCall;
164EXTERNAL struct pred_entry *PredCommentHook;
165EXTERNAL struct pred_entry *PredProcedure;
166EXTERNAL struct pred_entry *PredUndefinedQuery;
167EXTERNAL struct pred_entry *PredComma;
168EXTERNAL struct pred_entry *PredCatch;
169/* low-level tracer */
170#ifdef LOW_LEVEL_TRACER
171EXTERNAL int Yap_do_low_level_trace;
172#if defined(YAPOR) || defined(THREADS)
173EXTERNAL lockvar Yap_low_level_trace_lock;
174#endif
175#endif
176/* code management info */
177EXTERNAL UInt Yap_ClauseSpace;
178EXTERNAL UInt Yap_IndexSpace_Tree;
179EXTERNAL UInt Yap_IndexSpace_EXT;
180EXTERNAL UInt Yap_IndexSpace_SW;
181EXTERNAL UInt Yap_LUClauseSpace;
182EXTERNAL UInt Yap_LUIndexSpace_Tree;
183EXTERNAL UInt Yap_LUIndexSpace_CP;
184EXTERNAL UInt Yap_LUIndexSpace_EXT;
185EXTERNAL UInt Yap_LUIndexSpace_SW;
186/* static code: may be shared by many predicate or may be used for meta-execution */
187EXTERNAL yamop COMMA_CODE[5];
188EXTERNAL yamop DUMMYCODE[1];
189EXTERNAL yamop FAILCODE[1];
190EXTERNAL yamop NOCODE[1];
191EXTERNAL yamop EXITCODE[1];
192EXTERNAL yamop ENV_FOR_TRUSTFAIL[2];
193EXTERNAL yamop *TRUSTFAILCODE;
194EXTERNAL yamop ENV_FOR_YESCODE[2];
195EXTERNAL yamop *YESCODE;
196EXTERNAL yamop RTRYCODE[1];
197#ifdef BEAM
198EXTERNAL yamop BEAM_RETRY_CODE[1];
199#endif /* BEAM */
200#ifdef YAPOR
201EXTERNAL yamop GETWORK[1];
202EXTERNAL yamop GETWORK_SEQ[1];
203EXTERNAL yamop GETWORK_FIRST_TIME[1];
204#endif /* YAPOR */
205#ifdef TABLING
206EXTERNAL yamop LOAD_ANSWER[1];
207EXTERNAL yamop TRY_ANSWER[1];
208EXTERNAL yamop ANSWER_RESOLUTION[1];
209EXTERNAL yamop COMPLETION[1];
210#ifdef THREADS_CONSUMER_SHARING
211EXTERNAL yamop ANSWER_RESOLUTION_COMPLETION[1];
212#endif /* THREADS_CONSUMER_SHARING */
213#endif /* TABLING */
214/* */
215/* PREG just before we enter $spy. We use that to find out the clause which */
216/* was calling the debugged goal. */
217/* */
218EXTERNAL yamop *P_before_spy;
219/* support recorded_k */
220EXTERNAL yamop *RETRY_C_RECORDEDP_CODE;
221EXTERNAL yamop *RETRY_C_RECORDED_K_CODE;
222/* compiler flags */
223EXTERNAL int PROFILING;
224EXTERNAL int CALL_COUNTING;
225EXTERNAL int optimizer_on;
226EXTERNAL int compile_mode;
227EXTERNAL int profiling;
228EXTERNAL int call_counting;
229/********* whether we should try to compile array references ******************/
230EXTERNAL int compile_arrays;
231/* DBTerms: pre-compiled ground terms */
232#if defined(YAPOR) || defined(THREADS)
233EXTERNAL lockvar DBTermsListLock;
234#endif
235EXTERNAL struct dbterm_list *DBTermsList;
236/* JITI support */
237EXTERNAL yamop *ExpandClausesFirst;
238EXTERNAL yamop *ExpandClausesLast;
239EXTERNAL UInt Yap_ExpandClauses;
240#if defined(YAPOR) || defined(THREADS)
241EXTERNAL lockvar ExpandClausesListLock;
242EXTERNAL lockvar OpListLock;
243#endif
244/* instrumentation */
245#ifdef DEBUG
246EXTERNAL UInt Yap_NewCps;
247EXTERNAL UInt Yap_LiveCps;
248EXTERNAL UInt Yap_DirtyCps;
249EXTERNAL UInt Yap_FreedCps;
250#endif
251EXTERNAL UInt Yap_expand_clauses_sz;
252/* UDI support */
253EXTERNAL struct udi_info *UdiControlBlocks;
254/* data-base statistics */
255/* system boots in compile mode */
256EXTERNAL Int STATIC_PREDICATES_MARKED;
257/* Internal Database */
258EXTERNAL Prop *INT_KEYS;
259EXTERNAL Prop *INT_LU_KEYS;
260EXTERNAL Prop *INT_BB_KEYS;
261/* Internal Database Statistics */
262EXTERNAL UInt INT_KEYS_SIZE;
263EXTERNAL UInt INT_KEYS_TIMESTAMP;
264EXTERNAL UInt INT_BB_KEYS_SIZE;
265/* Internal Data-Base Control */
266EXTERNAL int UPDATE_MODE;
267/* nasty IDB stuff */
268EXTERNAL struct DB_STRUCT *DBErasedMarker;
269EXTERNAL struct logic_upd_clause *LogDBErasedMarker;
270/* Dead clauses and IDB entries */
271EXTERNAL struct static_clause *DeadStaticClauses;
272EXTERNAL struct static_mega_clause *DeadMegaClauses;
273EXTERNAL struct static_index *DeadStaticIndices;
274EXTERNAL struct logic_upd_clause *DBErasedList;
275EXTERNAL struct logic_upd_index *DBErasedIList;
276#if defined(YAPOR) || defined(THREADS)
277EXTERNAL lockvar DeadStaticClausesLock;
278EXTERNAL lockvar DeadMegaClausesLock;
279EXTERNAL lockvar DeadStaticIndicesLock;
280#endif
281#ifdef COROUTINING
282/* number of attribute modules */
283EXTERNAL int NUM_OF_ATTS;
284/* initialised by memory allocator */
285EXTERNAL UInt Yap_AttsSize;
286#endif
288EXTERNAL UInt setup_call_catcher_cleanup_tag;
289/* Operators */
290EXTERNAL struct operator_entry *OpList;
291/* foreign code loaded */
292EXTERNAL struct ForeignLoadItem *ForeignCodeLoaded;
293EXTERNAL ADDR ForeignCodeBase;
294EXTERNAL ADDR ForeignCodeTop;
295EXTERNAL ADDR ForeignCodeMax;
296/* recorded terms */
297EXTERNAL struct record_list *Yap_Records;
298EXTERNAL Atom EmptyWakeups[MAX_EMPTY_WAKEUPS];
299EXTERNAL int MaxEmptyWakeups;
300/* SWI blobs */
301EXTERNAL struct _PL_blob_t *BlobTypes;
302EXTERNAL struct AtomEntryStruct *Blobs;
303EXTERNAL UInt NOfBlobs;
304EXTERNAL UInt NOfBlobsMax;
305#if defined(YAPOR) || defined(THREADS)
306EXTERNAL lockvar Blobs_Lock;
307#endif
308
Definition: alloc.h:63
@ profiling
profiling
Definition: YapGFlagInfo.h:479
@ call_counting
Predicates compiled with this flag set maintain a counter on the numbers of proceduree calls and of r...
Definition: YapLFlagInfo.h:56
Definition: YapHeap.h:81
Module property: low-level data used to manage modes.
Definition: Yatom.h:209
Definition: Yatom.h:295
Definition: Yatom.h:544
Definition: amidefs.h:264
a flag is represented as a Prolog term
Definition: YapFlags.h:189