34#if defined(YAPOR) || defined(THREADS)
35 INIT_LOCK(DLMallocLock);
38#if USE_DL_MALLOC || (USE_SYSTEM_MALLOC && HAVE_MALLINFO)
40#define HeapUsed Yap_givemallinfo()
50#if defined(YAPOR) || defined(THREADS)
51 INIT_LOCK(FreeBlocksLock);
52 INIT_LOCK(HeapUsedLock);
53 INIT_LOCK(HeapTopLock);
64 EITHER_OPCODE = Yap_opcode(_execute_cpred);
65 EXECUTE_CPRED_OPCODE = Yap_opcode(_execute_cpred);
66 EXECUTE_CPRED_OP_CODE = Yap_opcode(_execute_cpred);
67 EXPAND_OP_CODE = Yap_opcode(_expand_index);
68 FAIL_OPCODE = Yap_opcode(_op_fail);
69 INDEX_OPCODE = Yap_opcode(_index_pred);
70 LOCKPRED_OPCODE = Yap_opcode(_lock_pred);
71 ORLAST_OPCODE = Yap_opcode(_or_last);
72 UNDEF_OPCODE = Yap_opcode(_undef_p);
73 RETRY_USERC_OPCODE = Yap_opcode(_retry_userc);
74 EXECUTE_CPRED_OPCODE = Yap_opcode(_execute_cpred);
75 FCALL_OPCODE = Yap_opcode(_fcall);
87 TermDollarU = MkAtomTerm(AtomDollarU);
90 USER_MODULE = MkAtomTerm(AtomUser);
91 IDB_MODULE = MkAtomTerm(AtomIDB);
92 ATTRIBUTES_MODULE = MkAtomTerm(AtomAttributes);
93 CHARSIO_MODULE = MkAtomTerm(AtomCharsio);
94 CHTYPE_MODULE = MkAtomTerm(AtomChType);
95 TERMS_MODULE = MkAtomTerm(AtomTerms);
96 SYSTEM_MODULE = MkAtomTerm(AtomSystem);
97 READUTIL_MODULE = MkAtomTerm(AtomReadutil);
98 HACKS_MODULE = MkAtomTerm(AtomYapHacks);
99 ARG_MODULE = MkAtomTerm(AtomArg);
100 GLOBALS_MODULE = MkAtomTerm(AtomNb);
101 SWI_MODULE = MkAtomTerm(AtomSwi);
102 DBLOAD_MODULE = MkAtomTerm(AtomDBLoad);
103 RANGE_MODULE = MkAtomTerm(AtomRange);
104 ERROR_MODULE = MkAtomTerm(AtomError);
108 CurrentModules = NULL;
113 HIDDEN_PREDICATES = NULL;
120 Yap_ExecutionMode = INTERPRETED;
122 PredsInHashTable = 0;
123 PredHashTableSize = 0;
125#if defined(YAPOR) || defined(THREADS)
129 CreepCode = RepPredProp(PredPropByFunc(Yap_MkFunctor(AtomCreep,1),PROLOG_MODULE));
130 UndefHook = RepPredProp(PredPropByFunc(Yap_MkFunctor(AtomUndefp,1),PROLOG_MODULE));
131 UndefHook0 = RepPredProp(PredPropByFunc(Yap_MkFunctor(AtomUndefp0,1),PROLOG_MODULE));
132 UserUndefHook = RepPredProp(PredPropByFunc(FunctorUnknownPredicateHandler,USER_MODULE));
133 SpyCode = RepPredProp(PredPropByFunc(Yap_MkFunctor(AtomSpy,1),PROLOG_MODULE));
134 PredFail = RepPredProp(PredPropByAtom(AtomFail,PROLOG_MODULE));
135 PredTrue = RepPredProp(PredPropByAtom(AtomTrue,PROLOG_MODULE));
137 WakeUpCode = RepPredProp(PredPropByFunc(Yap_MkFunctor(AtomWakeUpGoal,2),PROLOG_MODULE));
139 PredCsult = RepPredProp(PredPropByFunc(FunctorCsult,PROLOG_MODULE));
140 PredDollarCatch = RepPredProp(PredPropByFunc(FunctorCatch,PROLOG_MODULE));
142 PredGetwork = RepPredProp(PredPropByAtom(AtomGetwork,PROLOG_MODULE));
144 PredGoalExpansion = RepPredProp(PredPropByFunc(FunctorGoalExpansion,USER_MODULE));
145 PredHandleThrow = RepPredProp(PredPropByFunc(FunctorHandleThrow,PROLOG_MODULE));
146 PredIs = RepPredProp(PredPropByFunc(FunctorIs,PROLOG_MODULE));
147 PredLogUpdClause = RepPredProp(PredPropByFunc(FunctorDoLogUpdClause,PROLOG_MODULE));
148 PredLogUpdClauseErase = RepPredProp(PredPropByFunc(FunctorDoLogUpdClauseErase,PROLOG_MODULE));
149 PredLogUpdClause0 = RepPredProp(PredPropByFunc(FunctorDoLogUpdClause,PROLOG_MODULE));
150 PredCall = RepPredProp(PredPropByFunc(FunctorCall,PROLOG_MODULE));
151 PredMetaCall = RepPredProp(PredPropByFunc(FunctorMetaCall,PROLOG_MODULE));
152 PredPrologCutTo = RepPredProp(PredPropByFunc(FunctorPrologCutTo,PROLOG_MODULE));
153 PredProtectStack = RepPredProp(PredPropByFunc(FunctorProtectStack,PROLOG_MODULE));
154 PredRecordedWithKey = RepPredProp(PredPropByFunc(FunctorRecordedWithKey,PROLOG_MODULE));
155 PredRestoreRegs = RepPredProp(PredPropByFunc(FunctorRestoreRegs,PROLOG_MODULE));
156 PredSafeCallCleanup = RepPredProp(PredPropByFunc(FunctorSafeCallCleanup,PROLOG_MODULE));
157 PredStaticClause = RepPredProp(PredPropByFunc(FunctorDoStaticClause,PROLOG_MODULE));
158 PredThrow = RepPredProp(PredPropByFunc(FunctorThrow,PROLOG_MODULE));
159 PredTraceMetaCall = RepPredProp(PredPropByFunc(FunctorTraceMetaCall,PROLOG_MODULE));
160 PredCommentHook = RepPredProp(PredPropByFunc(FunctorCommentHook,PROLOG_MODULE));
161 PredProcedure = Yap_MkLogPred(RepPredProp(PredPropByFunc(FunctorProcedure,PROLOG_MODULE)));
162 PredUndefinedQuery = RepPredProp(PredPropByFunc(FunctorUndefinedQuery,PROLOG_MODULE));
163 PredComma = RepPredProp(PredPropByFunc(FunctorComma,PROLOG_MODULE));
164 PredCatch = RepPredProp(PredPropByFunc(FunctorCatch,PROLOG_MODULE));
166#ifdef LOW_LEVEL_TRACER
167 Yap_do_low_level_trace = FALSE;
168#if defined(YAPOR) || defined(THREADS)
169 INIT_LOCK(Yap_low_level_trace_lock);
174 Yap_IndexSpace_Tree = 0;
175 Yap_IndexSpace_EXT = 0;
176 Yap_IndexSpace_SW = 0;
177 Yap_LUClauseSpace = 0;
178 Yap_LUIndexSpace_Tree = 0;
179 Yap_LUIndexSpace_CP = 0;
180 Yap_LUIndexSpace_EXT = 0;
181 Yap_LUIndexSpace_SW = 0;
184 DUMMYCODE->opc = Yap_opcode(_op_fail);
185 FAILCODE->opc = Yap_opcode(_op_fail);
186 NOCODE->opc = Yap_opcode(_Nstop);
187 EXITCODE->opc = Yap_opcode(_Nstop);
188 InitEnvInst(ENV_FOR_TRUSTFAIL,&TRUSTFAILCODE,_trust_fail,PredFail);
190 InitEnvInst(ENV_FOR_YESCODE,&YESCODE,_Ystop,PredFail);
192 InitOtaplInst(RTRYCODE,_retry_and_mark,PredFail);
194 BEAM_RETRY_CODE->opc = Yap_opcode(_beam_retry_code);
197 InitOtaplInst(GETWORK,_getwork,PredGetwork);
198 InitOtaplInst(GETWORK_SEQ,_getwork_seq,PredGetworkSeq);
199 GETWORK_FIRST_TIME->opc = Yap_opcode(_getwork_first_time);
202 InitOtaplInst(LOAD_ANSWER,_table_load_answer,PredFail);
203 InitOtaplInst(TRY_ANSWER,_table_try_answer,PredFail);
204 InitOtaplInst(ANSWER_RESOLUTION,_table_answer_resolution,PredFail);
205 InitOtaplInst(COMPLETION,_table_completion,PredFail);
206#ifdef THREADS_CONSUMER_SHARING
207 InitOtaplInst(ANSWER_RESOLUTION_COMPLETION,_table_answer_resolution_completion,PredFail);
216 RETRY_C_RECORDEDP_CODE = NULL;
217 RETRY_C_RECORDED_K_CODE = NULL;
220 CALL_COUNTING = FALSE;
226 compile_arrays = FALSE;
228#if defined(YAPOR) || defined(THREADS)
229 INIT_LOCK(DBTermsListLock);
233 ExpandClausesFirst = NULL;
234 ExpandClausesLast = NULL;
235 Yap_ExpandClauses = 0;
236#if defined(YAPOR) || defined(THREADS)
237 INIT_LOCK(ExpandClausesListLock);
238 INIT_LOCK(OpListLock);
247 Yap_expand_clauses_sz = 0L;
249 UdiControlBlocks = NULL;
252 STATIC_PREDICATES_MARKED = FALSE;
258 INT_KEYS_SIZE = INT_KEYS_DEFAULT_SIZE;
259 INT_KEYS_TIMESTAMP = 0L;
260 INT_BB_KEYS_SIZE = INT_KEYS_DEFAULT_SIZE;
262 UPDATE_MODE = UPDATE_MODE_LOGICAL;
264 InitDBErasedMarker();
265 InitLogDBErasedMarker();
267 DeadStaticClauses = NULL;
268 DeadMegaClauses = NULL;
269 DeadStaticIndices = NULL;
271 DBErasedIList = NULL;
272#if defined(YAPOR) || defined(THREADS)
273 INIT_LOCK(DeadStaticClausesLock);
274 INIT_LOCK(DeadMegaClausesLock);
275 INIT_LOCK(DeadStaticIndicesLock);
288 ForeignCodeLoaded = NULL;
289 ForeignCodeBase = NULL;
290 ForeignCodeTop = NULL;
291 ForeignCodeMax = NULL;
301#if defined(YAPOR) || defined(THREADS)
302 INIT_LOCK(Blobs_Lock);
void Yap_InitFlags(bool bootstrap)
Init System Prolog flags.
@ call_counting
Predicates compiled with this flag set maintain a counter on the numbers of proceduree calls and of r...