diff --git a/C/init.c b/C/init.c index 86d9ee51b..638e23574 100644 --- a/C/init.c +++ b/C/init.c @@ -963,6 +963,9 @@ InitFlags(void) static void InitCodes(void) { + /* initialise invisible chain */ + Yap_heap_regs->invisiblechain.Entry = NIL; + INIT_RWLOCK(Yap_heap_regs->invisiblechain.AERWLock); #include "iatoms.h" Yap_heap_regs->term_prolog = MkAtomTerm(AtomProlog); Yap_heap_regs->user_module = MkAtomTerm(AtomUser); @@ -1136,9 +1139,6 @@ InitCodes(void) Yap_heap_regs->clausecode->clause = NULL; Yap_heap_regs->clausecode->func = NIL; - Yap_heap_regs->invisiblechain.Entry = NIL; - INIT_RWLOCK(Yap_heap_regs->invisiblechain.AERWLock); - { Atom at; PredEntry *pred; diff --git a/H/Heap.h b/H/Heap.h index c64152913..79deee11f 100644 --- a/H/Heap.h +++ b/H/Heap.h @@ -14,7 +14,6 @@ *************************************************************************/ /* information that can be stored in Code Space */ -#include #ifndef HEAP_H #define HEAP_H 1 @@ -814,27 +813,4 @@ Yap_PreAllocCodeSpace(void) return Yap_InitPreAllocCodeSpace(); } -#ifdef ATOMS_H -#ifdef THREADS -Prop STD_PROTO(Yap_NewThreadPred, (struct pred_entry *)); -Prop STD_PROTO(Yap_NewPredPropByFunctor, (Functor, Term)); - -EXTERN inline PredEntry * -Yap_GetThreadPred(struct pred_entry *ap) -{ - Functor f = ap->FunctorOfPred; - Term mod = ap->ModuleOfPred; - Prop p0 = AbsPredProp(Yap_heap_regs->thread_handle[worker_id].local_preds); - - while(p0) { - PredEntry *ap = RepPredProp(p0); - if (ap->FunctorOfPred == f && - ap->ModuleOfPred == mod) return ap; - p0 = ap->NextOfPE; - } - return RepPredProp(Yap_NewThreadPred(ap)); -} -#endif -#endif - #endif /* HEAP_H */ diff --git a/H/Yatom.h b/H/Yatom.h index 692eb7c68..8bcb14374 100644 --- a/H/Yatom.h +++ b/H/Yatom.h @@ -17,6 +17,9 @@ /* This code can only be defined *after* including Regs.h!!! */ +#ifndef YATOM_H +#define YATOM_H 1 + #ifdef USE_OFFSETS inline EXTERN Atom AbsAtom (AtomEntry * p); @@ -1369,10 +1372,6 @@ Atom STD_PROTO (Yap_GetOp, (OpEntry *, int *, int)); Prop STD_PROTO (Yap_GetAProp, (Atom, PropFlags)); Prop STD_PROTO (Yap_GetAPropHavingLock, (AtomEntry *, PropFlags)); -#ifdef THREADS -EXTERN inline PredEntry *STD_PROTO (Yap_GetThreadPred, (PredEntry *)); -#endif - typedef enum { PROLOG_MODULE = 0, @@ -1395,6 +1394,30 @@ PRED_HASH(FunctorEntry *fe, Term cur_mod, UInt size) EXTERN inline Prop STD_PROTO(GetPredPropByFuncHavingLock, (FunctorEntry *, Term)); +#ifdef THREADS + +Prop STD_PROTO(Yap_NewThreadPred, (struct pred_entry *)); +Prop STD_PROTO(Yap_NewPredPropByFunctor, (Functor, Term)); +EXTERN inline struct pred_entry *STD_PROTO(Yap_GetThreadPred, (struct pred_entry *)); + +EXTERN inline struct pred_entry * +Yap_GetThreadPred(struct pred_entry *ap) +{ + Functor f = ap->FunctorOfPred; + Term mod = ap->ModuleOfPred; + Prop p0 = AbsPredProp(Yap_heap_regs->thread_handle[worker_id].local_preds); + + while(p0) { + PredEntry *ap = RepPredProp(p0); + if (ap->FunctorOfPred == f && + ap->ModuleOfPred == mod) return ap; + p0 = ap->NextOfPE; + } + return RepPredProp(Yap_NewThreadPred(ap)); +} +#endif + + EXTERN inline Prop GetPredPropByFuncHavingLock (FunctorEntry *fe, Term cur_mod) { @@ -1484,3 +1507,4 @@ PredPropByAtom (Atom at, Term cur_mod) return Yap_NewPredPropByAtom (ae, cur_mod); } +#endif diff --git a/H/threads.h b/H/threads.h index 30b704774..4569198dc 100644 --- a/H/threads.h +++ b/H/threads.h @@ -1,3 +1,10 @@ + +#ifndef THREADS_H + +#define THREADS_H 1 + +#ifdef THREADS + typedef struct{ UInt ssize; UInt tsize; @@ -14,3 +21,6 @@ Int STD_PROTO(Yap_thread_attach_engine,(int)); Int STD_PROTO(Yap_thread_detach_engine,(int)); Int STD_PROTO(Yap_thread_destroy_engine,(int)); +#endif + +#endif