diff --git a/C/absmi.c b/C/absmi.c index bf2c4780d..9bec5a3c3 100644 --- a/C/absmi.c +++ b/C/absmi.c @@ -2532,7 +2532,7 @@ Yap_absmi(int inp) ENDP(pt1); } ENDD(d0); - H[0] = Yap_Module_Name(((CODEADDR)(SREG))); + H[0] = Yap_Module_Name((PredEntry *)SREG); ARG1 = (Term) AbsPair(H); H += 2; @@ -6434,7 +6434,7 @@ Yap_absmi(int inp) ENDP(pt1); } ENDD(d0); - H[0] = Yap_Module_Name((CODEADDR)pe); + H[0] = Yap_Module_Name(pe); ARG1 = (Term) AbsPair(H); H += 2; } @@ -6498,7 +6498,7 @@ Yap_absmi(int inp) ENDP(pt1); } ENDD(d0); - H[0] = Yap_Module_Name((CODEADDR)pe); + H[0] = Yap_Module_Name(pe); } ARG1 = (Term) AbsPair(H); H += 2; @@ -11279,7 +11279,7 @@ Yap_absmi(int inp) BOp(p_execute, sla); { PredEntry *pen; - SMALLUNSGN mod = PREG->u.sla.sla_u.m_num; + Term mod = PREG->u.sla.sla_u.mod; CACHE_Y_AS_ENV(YREG); /* Try to preserve the environment */ @@ -11314,7 +11314,7 @@ Yap_absmi(int inp) Term tmod = ArgOfTerm(1,d0); if (!IsVarTerm(tmod) && IsAtomTerm(tmod)) { d0 = ArgOfTerm(2,d0); - mod = Yap_LookupModule(tmod); + mod = tmod; goto execute_nvar; } } else if (f == FunctorComma) { @@ -11431,7 +11431,10 @@ Yap_absmi(int inp) ARG1 = ARG3 = d0; pen = PredMetaCall; ARG2 = Yap_cp_as_integer(B); - ARG4 = ModuleName[mod]; + if (mod) + ARG4 = mod; + else + ARG4 = TermProlog; CACHE_A1(); goto execute_end; ENDP(pt1); @@ -11462,7 +11465,7 @@ Yap_absmi(int inp) BOp(p_execute_tail, e); { PredEntry *pen; - SMALLUNSGN mod; + Term mod; UInt arity; CACHE_Y_AS_ENV(YREG); @@ -11513,7 +11516,7 @@ Yap_absmi(int inp) Term tmod = ArgOfTerm(1, d1); if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) goto execute_metacall_after_comma; - mod = Yap_LookupModule(tmod); + mod = tmod; d1 = RepAppl(d1)[2]; goto execute_comma_comma; } else { @@ -11565,7 +11568,7 @@ Yap_absmi(int inp) Term tmod = ArgOfTerm(1, d0); if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) goto execute_metacall_after_comma; - mod = Yap_LookupModule(tmod); + mod = tmod; d0 = RepAppl(d0)[2]; goto execute_comma_comma2; } else { @@ -11601,7 +11604,10 @@ Yap_absmi(int inp) ARG1 = ARG3 = d0; pen = PredMetaCall; ARG2 = Yap_cp_as_integer((choiceptr)pt0[E_CB]); - ARG4 = ModuleName[mod]; + if (mod) + ARG4 = mod; + else + ARG4 = TermProlog; CACHE_A1(); goto execute_after_comma; } diff --git a/C/adtdefs.c b/C/adtdefs.c index 45ca800bf..5869f063b 100644 --- a/C/adtdefs.c +++ b/C/adtdefs.c @@ -27,8 +27,8 @@ static char SccsId[] = "%W% %G%"; #include "Yap.h" ADDR STD_PROTO(Yap_PreAllocCodeSpace, (void)); -Prop STD_PROTO(PredPropByFunc,(Functor, SMALLUNSGN)); -Prop STD_PROTO(PredPropByAtom,(Atom, SMALLUNSGN)); +Prop STD_PROTO(PredPropByFunc,(Functor, Term)); +Prop STD_PROTO(PredPropByAtom,(Atom, Term)); #include "Yatom.h" #include "Heap.h" #include "yapio.h" @@ -300,7 +300,7 @@ Yap_GetAProp(Atom a, PropFlags kind) } inline static Prop -GetPredPropByAtomHavingLock(AtomEntry* ae, SMALLUNSGN cur_mod) +GetPredPropByAtomHavingLock(AtomEntry* ae, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -324,7 +324,7 @@ GetPredPropByAtomHavingLock(AtomEntry* ae, SMALLUNSGN cur_mod) } Prop -Yap_GetPredPropByAtom(Atom at, SMALLUNSGN cur_mod) +Yap_GetPredPropByAtom(Atom at, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -338,7 +338,7 @@ Yap_GetPredPropByAtom(Atom at, SMALLUNSGN cur_mod) inline static Prop -GetPredPropByAtomHavingLockInThisModule(AtomEntry* ae, SMALLUNSGN cur_mod) +GetPredPropByAtomHavingLockInThisModule(AtomEntry* ae, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -361,7 +361,7 @@ GetPredPropByAtomHavingLockInThisModule(AtomEntry* ae, SMALLUNSGN cur_mod) } Prop -Yap_GetPredPropByAtomInThisModule(Atom at, SMALLUNSGN cur_mod) +Yap_GetPredPropByAtomInThisModule(Atom at, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -375,7 +375,7 @@ Yap_GetPredPropByAtomInThisModule(Atom at, SMALLUNSGN cur_mod) static inline Prop -GetPredPropByFuncHavingLock(Functor f, SMALLUNSGN cur_mod) +GetPredPropByFuncHavingLock(Functor f, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -400,7 +400,7 @@ GetPredPropByFuncHavingLock(Functor f, SMALLUNSGN cur_mod) } Prop -Yap_GetPredPropByFunc(Functor f, SMALLUNSGN cur_mod) +Yap_GetPredPropByFunc(Functor f, Term cur_mod) /* get predicate entry for ap/arity; */ { Prop p0; @@ -412,7 +412,7 @@ Yap_GetPredPropByFunc(Functor f, SMALLUNSGN cur_mod) } static inline Prop -GetPredPropByFuncHavingLockInThisModule(Functor f, SMALLUNSGN cur_mod) +GetPredPropByFuncHavingLockInThisModule(Functor f, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -436,7 +436,7 @@ GetPredPropByFuncHavingLockInThisModule(Functor f, SMALLUNSGN cur_mod) } Prop -Yap_GetPredPropByFuncInThisModule(Functor f, SMALLUNSGN cur_mod) +Yap_GetPredPropByFuncInThisModule(Functor f, Term cur_mod) /* get predicate entry for ap/arity; */ { Prop p0; @@ -448,7 +448,7 @@ Yap_GetPredPropByFuncInThisModule(Functor f, SMALLUNSGN cur_mod) } Prop -Yap_GetPredPropHavingLock(Atom ap, unsigned int arity, SMALLUNSGN mod) +Yap_GetPredPropHavingLock(Atom ap, unsigned int arity, Term mod) /* get predicate entry for ap/arity; */ { Prop p0; @@ -496,7 +496,7 @@ Yap_GetExpPropHavingLock(AtomEntry *ae, unsigned int arity) /* fe is supposed to be locked */ Prop -Yap_NewPredPropByFunctor(FunctorEntry *fe, SMALLUNSGN cur_mod) +Yap_NewPredPropByFunctor(FunctorEntry *fe, Term cur_mod) { Prop p0; PredEntry *p = (PredEntry *) Yap_AllocAtomSpace(sizeof(*p)); @@ -512,9 +512,11 @@ Yap_NewPredPropByFunctor(FunctorEntry *fe, SMALLUNSGN cur_mod) p->OpcodeOfPred = UNDEF_OPCODE; p->CodeOfPred = p->cs.p_code.TrueCodeOfPred = (yamop *)(&(p->OpcodeOfPred)); p->cs.p_code.ExpandCode = EXPAND_OP_CODE; - p->ModuleOfPred = cur_mod; - p->NextPredOfModule = ModulePred[cur_mod]; - ModulePred[cur_mod] = p; + if (cur_mod == TermProlog) + p->ModuleOfPred = 0; + else + p->ModuleOfPred = cur_mod; + Yap_NewModulePred(cur_mod, p); INIT_LOCK(p->StatisticsForPred.lock); p->StatisticsForPred.NOfEntries = 0; p->StatisticsForPred.NOfHeadSuccesses = 0; @@ -565,12 +567,12 @@ Yap_NewThreadPred(PredEntry *ap) #endif Prop -Yap_NewPredPropByAtom(AtomEntry *ae, SMALLUNSGN cur_mod) +Yap_NewPredPropByAtom(AtomEntry *ae, Term cur_mod) { Prop p0; PredEntry *p = (PredEntry *) Yap_AllocAtomSpace(sizeof(*p)); -/* Printf("entering %s:%s/0\n", RepAtom(AtomOfTerm(ModuleName[cur_mod]))->StrOfAE, ae->StrOfAE); */ +/* Printf("entering %s:%s/0\n", RepAtom(AtomOfTerm(cur_mod))->StrOfAE, ae->StrOfAE); */ INIT_RWLOCK(p->PRWLock); INIT_LOCK(p->PELock); @@ -583,9 +585,11 @@ Yap_NewPredPropByAtom(AtomEntry *ae, SMALLUNSGN cur_mod) p->OpcodeOfPred = UNDEF_OPCODE; p->cs.p_code.ExpandCode = EXPAND_OP_CODE; p->CodeOfPred = p->cs.p_code.TrueCodeOfPred = (yamop *)(&(p->OpcodeOfPred)); - p->ModuleOfPred = cur_mod; - p->NextPredOfModule = ModulePred[cur_mod]; - ModulePred[cur_mod] = p; + if (cur_mod == TermProlog) + p->ModuleOfPred = 0; + else + p->ModuleOfPred = cur_mod; + Yap_NewModulePred(cur_mod, p); INIT_LOCK(p->StatisticsForPred.lock); p->StatisticsForPred.NOfEntries = 0; p->StatisticsForPred.NOfHeadSuccesses = 0; @@ -602,7 +606,7 @@ Yap_NewPredPropByAtom(AtomEntry *ae, SMALLUNSGN cur_mod) } Prop -Yap_PredPropByFunctorNonThreadLocal(Functor f, SMALLUNSGN cur_mod) +Yap_PredPropByFunctorNonThreadLocal(Functor f, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -623,7 +627,7 @@ Yap_PredPropByFunctorNonThreadLocal(Functor f, SMALLUNSGN cur_mod) } Prop -Yap_PredPropByAtomNonThreadLocal(Atom at, SMALLUNSGN cur_mod) +Yap_PredPropByAtomNonThreadLocal(Atom at, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; diff --git a/C/amasm.c b/C/amasm.c index b9a5cf8a8..cf05a7a9a 100644 --- a/C/amasm.c +++ b/C/amasm.c @@ -822,7 +822,7 @@ a_p(op_numbers opcode, clause_info *clinfo, yamop *code_p, int pass_no, struct i if (RepPredProp(fe)->FunctorOfPred != FunctorExecuteInMod) { code_p->u.sla.sla_u.p = RepPredProp(fe); } else { - code_p->u.sla.sla_u.m_num = IntegerOfTerm(cip->cpc->rnd4); + code_p->u.sla.sla_u.mod = cip->cpc->rnd4; } code_p->u.sla.p0 = clinfo->CurrentPred; if (cip->cpc->rnd2) { diff --git a/C/bb.c b/C/bb.c index 808fc306c..cee283cef 100644 --- a/C/bb.c +++ b/C/bb.c @@ -26,7 +26,7 @@ static char SccsId[] = "%W% %G%"; #endif static BBProp -PutBBProp(AtomEntry *ae, SMALLUNSGN mod) /* get BBentry for at; */ +PutBBProp(AtomEntry *ae, Term mod) /* get BBentry for at; */ { Prop p0; BBProp p; @@ -57,7 +57,7 @@ PutBBProp(AtomEntry *ae, SMALLUNSGN mod) /* get BBentry for at; */ } static BBProp -PutIntBBProp(Int key, SMALLUNSGN mod) /* get BBentry for at; */ +PutIntBBProp(Int key, Term mod) /* get BBentry for at; */ { Prop p0; BBProp p; @@ -105,7 +105,7 @@ PutIntBBProp(Int key, SMALLUNSGN mod) /* get BBentry for at; */ } static BBProp -GetBBProp(AtomEntry *ae, SMALLUNSGN mod) /* get BBentry for at; */ +GetBBProp(AtomEntry *ae, Term mod) /* get BBentry for at; */ { Prop p0; BBProp p; @@ -124,7 +124,7 @@ GetBBProp(AtomEntry *ae, SMALLUNSGN mod) /* get BBentry for at; */ } static BBProp -GetIntBBProp(Int key, SMALLUNSGN mod) /* get BBentry for at; */ +GetIntBBProp(Int key, Term mod) /* get BBentry for at; */ { Prop p0; BBProp p; @@ -187,7 +187,7 @@ resize_bb_int_keys(UInt new_size) { } static BBProp -AddBBProp(Term t1, char *msg, SMALLUNSGN mod) +AddBBProp(Term t1, char *msg, Term mod) { BBProp p; @@ -203,7 +203,7 @@ AddBBProp(Term t1, char *msg, SMALLUNSGN mod) Term tmod = ArgOfTerm(1, t1); if (!IsVarTerm(tmod) ) { t1 = ArgOfTerm(2, t1); - mod = Yap_LookupModule(tmod); + mod = tmod; goto restart; } else { Yap_Error(INSTANTIATION_ERROR, t1, msg); @@ -217,7 +217,7 @@ AddBBProp(Term t1, char *msg, SMALLUNSGN mod) } static BBProp -FetchBBProp(Term t1, char *msg, SMALLUNSGN mod) +FetchBBProp(Term t1, char *msg, Term mod) { BBProp p; @@ -232,7 +232,7 @@ FetchBBProp(Term t1, char *msg, SMALLUNSGN mod) } else if (IsApplTerm(t1) && FunctorOfTerm(t1) == FunctorModule) { Term tmod = ArgOfTerm(1, t1); if (!IsVarTerm(tmod) ) { - mod = Yap_LookupModule(tmod); + mod = tmod; t1 = ArgOfTerm(2, t1); goto restart; } else { diff --git a/C/c_interface.c b/C/c_interface.c index 74c5f898e..417596b7b 100644 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -114,7 +114,6 @@ X_API Term *STD_PROTO(YAP_AddressFromSlot,(long)); X_API void STD_PROTO(YAP_PutInSlot,(long, Term)); X_API void STD_PROTO(YAP_RecoverSlots,(int)); X_API void STD_PROTO(YAP_Throw,(Term)); -X_API int STD_PROTO(YAP_LookupModule,(Term)); X_API Term STD_PROTO(YAP_ModuleName,(int)); X_API void STD_PROTO(YAP_Halt,(int)); X_API Term *STD_PROTO(YAP_TopOfLocalStack,(void)); @@ -122,7 +121,7 @@ X_API void *STD_PROTO(YAP_Predicate,(Atom,unsigned long int,int)); X_API void STD_PROTO(YAP_PredicateInfo,(void *,Atom *,unsigned long int *,int *)); X_API void STD_PROTO(YAP_UserCPredicate,(char *,CPredicate,unsigned long int)); X_API void STD_PROTO(YAP_UserBackCPredicate,(char *,CPredicate,CPredicate,unsigned long int,unsigned int)); -X_API void STD_PROTO(YAP_UserCPredicateWithArgs,(char *,CPredicate,unsigned long int,int)); +X_API void STD_PROTO(YAP_UserCPredicateWithArgs,(char *,CPredicate,unsigned long int,Term)); X_API Int STD_PROTO(YAP_CurrentModule,(void)); static int (*do_getf)(void); @@ -567,7 +566,7 @@ X_API Int YAP_CallProlog(Term t) { Int out; - SMALLUNSGN mod = CurrentModule; + Term mod = CurrentModule; BACKUP_MACHINE_REGS(); while (!IsVarTerm(t) && @@ -576,7 +575,7 @@ YAP_CallProlog(Term t) Term tmod = ArgOfTerm(1,t); if (IsVarTerm(tmod)) return(FALSE); if (!IsAtomTerm(tmod)) return(FALSE); - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2,t); } out = Yap_execute_goal(t, 0, mod); @@ -1080,18 +1079,6 @@ YAP_Throw(Term t) RECOVER_MACHINE_REGS(); } -X_API int -YAP_LookupModule(Term t) -{ - return(Yap_LookupModule(t)); -} - -X_API Term -YAP_ModuleName(int i) -{ - return(ModuleName[i]); -} - X_API void YAP_Halt(int i) { @@ -1126,7 +1113,10 @@ YAP_PredicateInfo(void *p, Atom* a, unsigned long int* arity, int* m) *arity = 0; *a = (Atom)(pd->FunctorOfPred); } - *m = pd->ModuleOfPred; + if (pd->ModuleOfPred) + *m = pd->ModuleOfPred; + else + *m = TermProlog; } X_API void @@ -1143,10 +1133,10 @@ YAP_UserBackCPredicate(char *name, CPredicate init, CPredicate cont, } X_API void -YAP_UserCPredicateWithArgs(char *a, CPredicate f, unsigned long int arity, int mod) +YAP_UserCPredicateWithArgs(char *a, CPredicate f, unsigned long int arity, Term mod) { PredEntry *pe; - SMALLUNSGN cm = CurrentModule; + Term cm = CurrentModule; CurrentModule = mod; YAP_UserCPredicate(a,f,arity); if (arity == 0) { diff --git a/C/cdmgr.c b/C/cdmgr.c index f91bef1cc..4a1ecb994 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -79,7 +79,7 @@ STATIC_PROTO(Int p_call_count_set, (void)); STATIC_PROTO(Int p_call_count_reset, (void)); STATIC_PROTO(Int p_toggle_static_predicates_in_use, (void)); STATIC_PROTO(Atom YapConsultingFile, (void)); -STATIC_PROTO(Int PredForCode,(yamop *, Atom *, UInt *, SMALLUNSGN *)); +STATIC_PROTO(Int PredForCode,(yamop *, Atom *, UInt *, Term *)); #define PredArity(p) (p->ArityOfPE) #define TRYCODE(G,F,N) ( (N)<5 ? (op_numbers)((int)F+(N)*3) : G) @@ -153,11 +153,13 @@ IPred(PredEntry *ap) #ifdef DEBUG if (Yap_Option['i' - 'a' + 1]) { - Term tmod = ModuleName[ap->ModuleOfPred]; + Term tmod = ap->ModuleOfPred; + if (!tmod) + tmod = TermProlog; Yap_DebugPutc(Yap_c_error_stream,'\t'); Yap_plwrite(tmod, Yap_DebugPutc, 0); Yap_DebugPutc(Yap_c_error_stream,':'); - if (ap->ModuleOfPred == 2) { + if (ap->ModuleOfPred == IDB_MODULE) { Term t = Deref(ARG1); if (IsAtomTerm(t)) { Yap_plwrite(t, Yap_DebugPutc, 0); @@ -1058,7 +1060,8 @@ addclause(Term t, yamop *cp, int mode, int mod) #endif pflags = p->PredFlags; /* we are redefining a prolog module predicate */ - if (p->ModuleOfPred == 0 && mod != 0) { + if (p->ModuleOfPred == PROLOG_MODULE && + mod != TermProlog && mod) { WRITE_UNLOCK(p->PRWLock); addcl_permission_error(RepAtom(at), Arity, FALSE); return TermNil; @@ -1143,12 +1146,12 @@ addclause(Term t, yamop *cp, int mode, int mod) } void -Yap_addclause(Term t, yamop *cp, int mode, int mod) { +Yap_addclause(Term t, yamop *cp, int mode, Term mod) { addclause(t, cp, mode, mod); } void -Yap_EraseStaticClause(StaticClause *cl, SMALLUNSGN mod) { +Yap_EraseStaticClause(StaticClause *cl, Term mod) { PredEntry *ap; /* ok, first I need to find out the parent predicate */ @@ -1264,7 +1267,7 @@ p_in_this_f_before(void) Term t; register consult_obj *fp; Prop p0; - SMALLUNSGN mod; + Term mod; if (IsVarTerm(t = Deref(ARG1)) || !IsAtomTerm(t)) return (FALSE); @@ -1274,10 +1277,8 @@ p_in_this_f_before(void) return (FALSE); else arity = IntOfTerm(t); - if (IsVarTerm(t = Deref(ARG3)) || !IsAtomTerm(t)) - return (FALSE); - else - mod = Yap_LookupModule(t); + if (IsVarTerm(mod = Deref(ARG3)) || !IsAtomTerm(mod)) + return FALSE; if (arity) p0 = PredPropByFunc(Yap_MkFunctor(at, arity),CurrentModule); else @@ -1303,7 +1304,7 @@ p_first_cl_in_f(void) Term t; register consult_obj *fp; Prop p0; - SMALLUNSGN mod; + Term mod; if (IsVarTerm(t = Deref(ARG1)) || !IsAtomTerm(t)) @@ -1314,10 +1315,8 @@ p_first_cl_in_f(void) return (FALSE); else arity = IntOfTerm(t); - if (IsVarTerm(t = Deref(ARG3)) || !IsAtomTerm(t)) + if (IsVarTerm(mod = Deref(ARG3)) || !IsAtomTerm(mod)) return (FALSE); - else - mod = Yap_LookupModule(t); if (arity) p0 = PredPropByFunc(Yap_MkFunctor(at, arity),mod); else @@ -1379,16 +1378,14 @@ p_compile(void) { /* '$compile'(+C,+Flags, Mod) */ Term t = Deref(ARG1); Term t1 = Deref(ARG2); - Term t3 = Deref(ARG4); + Term mod = Deref(ARG4); yamop *codeadr; - Int mod; if (IsVarTerm(t1) || !IsIntTerm(t1)) return (FALSE); - if (IsVarTerm(t3) || !IsAtomTerm(t3)) + if (IsVarTerm(mod) || !IsAtomTerm(mod)) return (FALSE); - mod = Yap_LookupModule(t3); YAPEnterCriticalSection(); codeadr = Yap_cclause(t, 2, mod, Deref(ARG3)); /* vsc: give the number of arguments to cclause in case there is overflow */ @@ -1412,18 +1409,16 @@ p_compile_dynamic(void) { /* '$compile_dynamic'(+C,+Flags,Mod,-Ref) */ Term t = Deref(ARG1); Term t1 = Deref(ARG2); - Term t3 = Deref(ARG4); + Term mod = Deref(ARG4); yamop *code_adr; int old_optimize; - Int mod; if (IsVarTerm(t1) || !IsIntTerm(t1)) return (FALSE); - if (IsVarTerm(t3) || !IsAtomTerm(t3)) + if (IsVarTerm(mod) || !IsAtomTerm(mod)) return (FALSE); old_optimize = optimizer_on; optimizer_on = FALSE; - mod = Yap_LookupModule(t3); YAPEnterCriticalSection(); code_adr = Yap_cclause(t, 3, mod, Deref(ARG3)); /* vsc: give the number of arguments to cclause() in case there is a overflow */ @@ -1595,16 +1590,14 @@ p_purge_clauses(void) { /* '$purge_clauses'(+Func) */ PredEntry *pred; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); - SMALLUNSGN mod; + Term mod = Deref(ARG2); Yap_PutValue(AtomAbol, MkAtomTerm(AtomNil)); if (IsVarTerm(t)) - return (FALSE); - if (IsVarTerm(t2) || !IsAtomTerm(t2)) { - return (FALSE); + return FALSE; + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { + return FALSE; } - mod = Yap_LookupModule(t2); if (IsAtomTerm(t)) { Atom at = AtomOfTerm(t); pred = RepPredProp(PredPropByAtom(at, mod)); @@ -1645,20 +1638,17 @@ p_setspy(void) Atom at; PredEntry *pred; CELL fg; - Term t; - Term t2; - SMALLUNSGN mod; + Term t, mod; at = Yap_FullLookupAtom("$spy"); pred = RepPredProp(PredPropByFunc(Yap_MkFunctor(at, 1),0)); SpyCode = pred; t = Deref(ARG1); - t2 = Deref(ARG2); + mod = Deref(ARG2); + if (IsVarTerm(mod) || !IsAtomTerm(mod)) + return (FALSE); if (IsVarTerm(t)) return (FALSE); - if (IsVarTerm(t2) || !IsAtomTerm(t2)) - return (FALSE); - mod = Yap_LookupModule(t2); if (IsAtomTerm(t)) { Atom at = AtomOfTerm(t); pred = RepPredProp(Yap_PredPropByAtomNonThreadLocal(at, mod)); @@ -1703,14 +1693,12 @@ p_rmspy(void) Atom at; PredEntry *pred; Term t; - Term t2; - SMALLUNSGN mod; + Term mod; t = Deref(ARG1); - t2 = Deref(ARG2); - if (IsVarTerm(t2) || !IsAtomTerm(t2)) + mod = Deref(ARG2); + if (IsVarTerm(mod) || !IsAtomTerm(mod)) return (FALSE); - mod = Yap_LookupModule(t2); if (IsVarTerm(t)) return (FALSE); if (IsAtomTerm(t)) { @@ -1754,15 +1742,13 @@ static Int p_number_of_clauses(void) { /* '$number_of_clauses'(Predicate,M,N) */ Term t = Deref(ARG1); - Term t2 = Deref(ARG2); + Term mod = Deref(ARG2); int ncl = 0; Prop pe; - int mod; - if (IsVarTerm(t2) || !IsAtomTerm(t2)) { + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return(FALSE); } - mod = Yap_LookupModule(t2); if (IsAtomTerm(t)) { Atom a = AtomOfTerm(t); pe = Yap_GetPredPropByAtom(a, mod); @@ -1784,16 +1770,14 @@ static Int p_in_use(void) { /* '$in_use'(+P,+Mod) */ Term t = Deref(ARG1); - Term t2 = Deref(ARG2); + Term mod = Deref(ARG2); PredEntry *pe; Int out; - int mod; if (IsVarTerm(t)) return (FALSE); - if (IsVarTerm(t2) || !IsAtomTerm(t2)) + if (IsVarTerm(mod) || !IsAtomTerm(mod)) return (FALSE); - mod = Yap_LookupModule(t2); if (IsAtomTerm(t)) { Atom at = AtomOfTerm(t); pe = RepPredProp(Yap_GetPredPropByAtom(at, mod)); @@ -1817,7 +1801,7 @@ p_new_multifile(void) int arity; PredEntry *pe; Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG3)); + Term mod = Deref(ARG3); if (IsVarTerm(t)) return (FALSE); @@ -1852,17 +1836,15 @@ p_is_multifile(void) { /* '$is_multifile'(+S,+Mod) */ PredEntry *pe; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); + Term mod = Deref(ARG2); Int out; - int mod; if (IsVarTerm(t)) return (FALSE); - if (IsVarTerm(t2)) + if (IsVarTerm(mod)) return (FALSE); - if (!IsAtomTerm(t2)) + if (!IsAtomTerm(mod)) return (FALSE); - mod = Yap_LookupModule(t2); if (IsAtomTerm(t)) { pe = RepPredProp(Yap_GetPredPropByAtom(AtomOfTerm(t), mod)); } else if (IsApplTerm(t)) { @@ -1882,9 +1864,8 @@ p_is_log_updatable(void) { /* '$is_dynamic'(+P) */ PredEntry *pe; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); Int out; - SMALLUNSGN mod = Yap_LookupModule(t2); + Term mod = Deref(ARG2); if (IsVarTerm(t)) { return (FALSE); @@ -1909,9 +1890,8 @@ p_is_source(void) { /* '$is_dynamic'(+P) */ PredEntry *pe; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); + Term mod = Deref(ARG2); Int out; - SMALLUNSGN mod = Yap_LookupModule(t2); if (IsVarTerm(t)) { return (FALSE); @@ -1936,9 +1916,8 @@ p_is_dynamic(void) { /* '$is_dynamic'(+P) */ PredEntry *pe; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); + Term mod = Deref(ARG2); Int out; - SMALLUNSGN mod = Yap_LookupModule(t2); if (IsVarTerm(t)) { return (FALSE); @@ -1963,9 +1942,8 @@ p_pred_exists(void) { /* '$pred_exists'(+P,+M) */ PredEntry *pe; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); + Term mod = Deref(ARG2); Int out; - SMALLUNSGN mod = Yap_LookupModule(t2); if (IsVarTerm(t)) { return (FALSE); @@ -1992,7 +1970,7 @@ p_set_pred_module(void) { /* '$set_pred_module'(+P,+Mod) */ PredEntry *pe; Term t = Deref(ARG1); - SMALLUNSGN mod = CurrentModule; + Term mod = CurrentModule; restart_set_pred: if (IsVarTerm(t)) { @@ -2011,7 +1989,7 @@ p_set_pred_module(void) Yap_Error(TYPE_ERROR_ATOM,ARG1,"set_pred_module/1"); return(FALSE); } - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2, t); goto restart_set_pred; } @@ -2021,10 +1999,7 @@ p_set_pred_module(void) if (EndOfPAEntr(pe)) return FALSE; WRITE_LOCK(pe->PRWLock); - { - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG2)); - pe->ModuleOfPred = mod; - } + pe->ModuleOfPred = Deref(ARG2); WRITE_UNLOCK(pe->PRWLock); return(TRUE); } @@ -2034,20 +2009,18 @@ p_undefined(void) { /* '$undefined'(P,Mod) */ PredEntry *pe; Term t; - Term t2; - SMALLUNSGN mod; + Term mod; t = Deref(ARG1); - t2 = Deref(ARG2); - if (IsVarTerm(t2)) { + mod = Deref(ARG2); + if (IsVarTerm(mod)) { Yap_Error(INSTANTIATION_ERROR,ARG2,"undefined/1"); return(FALSE); } - if (!IsAtomTerm(t2)) { + if (!IsAtomTerm(mod)) { Yap_Error(TYPE_ERROR_ATOM,ARG2,"undefined/1"); return(FALSE); } - mod = Yap_LookupModule(t2); restart_undefined: if (IsVarTerm(t)) { Yap_Error(INSTANTIATION_ERROR,ARG1,"undefined/1"); @@ -2068,7 +2041,7 @@ p_undefined(void) Yap_Error(TYPE_ERROR_ATOM,ARG1,"undefined/1"); return(FALSE); } - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2, t); goto restart_undefined; } @@ -2101,19 +2074,17 @@ p_kill_dynamic(void) { /* '$kill_dynamic'(P,M) */ PredEntry *pe; Term t; - Term t2; - SMALLUNSGN mod; + Term mod; - t2 = Deref(ARG2); - if (IsVarTerm(t2)) { + mod = Deref(ARG2); + if (IsVarTerm(mod)) { Yap_Error(INSTANTIATION_ERROR,ARG2,"undefined/1"); return(FALSE); } - if (!IsAtomTerm(t2)) { + if (!IsAtomTerm(mod)) { Yap_Error(TYPE_ERROR_ATOM,ARG2,"undefined/1"); return(FALSE); } - mod = Yap_LookupModule(t2); t = Deref(ARG1); if (IsAtomTerm(t)) { Atom at = AtomOfTerm(t); @@ -2654,7 +2625,7 @@ code_in_pred(PredEntry *pp, Atom *pat, UInt *parity, yamop *codeptr) { } static Int -PredForCode(yamop *codeptr, Atom *pat, UInt *parity, SMALLUNSGN *pmodule) { +PredForCode(yamop *codeptr, Atom *pat, UInt *parity, Term *pmodule) { Int found = 0; Int i_table; @@ -2673,7 +2644,7 @@ PredForCode(yamop *codeptr, Atom *pat, UInt *parity, SMALLUNSGN *pmodule) { } Int -Yap_PredForCode(yamop *codeptr, Atom *pat, UInt *parity, SMALLUNSGN *pmodule) { +Yap_PredForCode(yamop *codeptr, Atom *pat, UInt *parity, Term *pmodule) { return PredForCode(codeptr, pat, parity, pmodule); } @@ -2683,7 +2654,7 @@ p_pred_for_code(void) { yamop *codeptr; Atom at; UInt arity; - SMALLUNSGN module; + Term module; Int cl; Term t = Deref(ARG1); @@ -2697,12 +2668,13 @@ p_pred_for_code(void) { return FALSE; } cl = PredForCode(codeptr, &at, &arity, &module); + if (!module) module = TermProlog; if (cl == 0) { return(Yap_unify(ARG5,MkIntTerm(0))); } else { return(Yap_unify(ARG2,MkAtomTerm(at)) && Yap_unify(ARG3,MkIntegerTerm(arity)) && - Yap_unify(ARG4,ModuleName[module]) && + Yap_unify(ARG4,module) && Yap_unify(ARG5,MkIntegerTerm(cl))); } } @@ -2742,16 +2714,14 @@ p_is_profiled(void) static Int p_profile_info(void) { - Term tmod = Deref(ARG1); + Term mod = Deref(ARG1); Term tfun = Deref(ARG2); - int mod; Term out; PredEntry *pe; Term p[3]; - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) + if (IsVarTerm(mod) || !IsAtomTerm(mod)) return(FALSE); - mod = Yap_LookupModule(tmod); if (IsVarTerm(tfun)) { return(FALSE); } else if (IsApplTerm(tfun)) { @@ -2783,14 +2753,12 @@ p_profile_info(void) static Int p_profile_reset(void) { - Term tmod = Deref(ARG1); + Term mod = Deref(ARG1); Term tfun = Deref(ARG2); - int mod; PredEntry *pe; - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) + if (IsVarTerm(mod) || !IsAtomTerm(mod)) return(FALSE); - mod = Yap_LookupModule(tmod); if (IsVarTerm(tfun)) { return(FALSE); } else if (IsApplTerm(tfun)) { @@ -2903,7 +2871,7 @@ p_parent_pred(void) We assume a sequence of the form a -> b */ Atom at; UInt arity; - SMALLUNSGN module; + Term module; if (!PredForCode(P_before_spy, &at, &arity, &module)) { return(Yap_unify(ARG1, MkIntTerm(0)) && Yap_unify(ARG2, MkAtomTerm(AtomMetaCall)) && @@ -2920,7 +2888,7 @@ p_system_pred(void) PredEntry *pe; Term t1 = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG2)); + Term mod = Deref(ARG2); restart_system_pred: if (IsVarTerm(t1)) @@ -2952,7 +2920,7 @@ p_system_pred(void) return (FALSE); if (EndOfPAEntr(pe)) return(FALSE); - return(pe->ModuleOfPred == 0 || pe->PredFlags & (UserCPredFlag|CPredFlag|BinaryTestPredFlag|AsmPredFlag|TestPredFlag)); + return(!pe->ModuleOfPred || pe->PredFlags & (UserCPredFlag|CPredFlag|BinaryTestPredFlag|AsmPredFlag|TestPredFlag)); } static Int /* $system_predicate(P) */ @@ -2961,7 +2929,7 @@ p_hide_predicate(void) PredEntry *pe; Term t1 = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG2)); + Term mod = Deref(ARG2); restart_system_pred: if (IsVarTerm(t1)) @@ -3003,7 +2971,7 @@ p_hidden_predicate(void) PredEntry *pe; Term t1 = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG2)); + Term mod = Deref(ARG2); restart_system_pred: if (IsVarTerm(t1)) @@ -3039,9 +3007,8 @@ p_hidden_predicate(void) } static PredEntry * -get_pred(Term t1, Term tmod, char *command) +get_pred(Term t1, Term mod, char *command) { - SMALLUNSGN mod = Yap_LookupModule(tmod); restart_system_pred: if (IsVarTerm(t1)) @@ -3366,7 +3333,7 @@ p_nth_clause(void) return FALSE; } /* in case we have to index or to expand code */ - if (pe->ModuleOfPred != 2) { + if (pe->ModuleOfPred != IDB_MODULE) { UInt i; for (i = 1; i <= pe->ArityOfPE; i++) { @@ -3545,8 +3512,7 @@ static Int p_static_pred_statistics(void) { Term t = Deref(ARG1); - Term tmod = Deref(ARG2); - SMALLUNSGN mod = Yap_LookupModule(tmod); + Term mod = Deref(ARG2); PredEntry *pe; if (IsVarTerm(t)) { diff --git a/C/compiler.c b/C/compiler.c index b602c74e5..9b259cf3f 100644 --- a/C/compiler.c +++ b/C/compiler.c @@ -1145,7 +1145,7 @@ c_goal(Term Goal, int mod, compiler_struct *cglobs) longjmp(cglobs->cint.CompilerBotch, 1); } Goal = ArgOfTerm(2, Goal); - mod = Yap_LookupModule(M); + mod = M; } if (IsVarTerm(Goal)) { Goal = Yap_MkApplTerm(FunctorCall, 1, &Goal); diff --git a/C/computils.c b/C/computils.c index 18dc03aae..91c908e26 100644 --- a/C/computils.c +++ b/C/computils.c @@ -74,7 +74,7 @@ Yap_AllocCMem (int size, struct intermediates *cip) } int -Yap_is_a_test_pred (Term arg, SMALLUNSGN mod) +Yap_is_a_test_pred (Term arg, Term mod) { if (IsVarTerm (arg)) return FALSE; @@ -373,10 +373,13 @@ ShowOp (char *f, struct PSEUDO *cpc) PredEntry *p = RepPredProp ((Prop) arg); Functor f = p->FunctorOfPred; UInt arity = p->ArityOfPE; - SMALLUNSGN mod = 0; + Term mod; - if (p->ModuleOfPred) mod = IntOfTerm(p->ModuleOfPred); - Yap_plwrite (ModuleName[mod], Yap_DebugPutc, 0); + if (p->ModuleOfPred) + mod = p->ModuleOfPred; + else + mod = TermProlog; + Yap_plwrite (mod, Yap_DebugPutc, 0); Yap_DebugPutc (Yap_c_error_stream,':'); if (arity == 0) Yap_plwrite (MkAtomTerm ((Atom)f), Yap_DebugPutc, 0); @@ -391,10 +394,10 @@ ShowOp (char *f, struct PSEUDO *cpc) PredEntry *p = RepPredProp((Prop) rn); Functor f = p->FunctorOfPred; UInt arity = p->ArityOfPE; - SMALLUNSGN mod = 0; + Term mod = TermProlog; - if (p->ModuleOfPred) mod = IntOfTerm(p->ModuleOfPred); - Yap_plwrite (ModuleName[mod], Yap_DebugPutc, 0); + if (p->ModuleOfPred) mod = p->ModuleOfPred; + Yap_plwrite (mod, Yap_DebugPutc, 0); Yap_DebugPutc (Yap_c_error_stream,':'); if (arity == 0) Yap_plwrite (MkAtomTerm ((Atom)f), Yap_DebugPutc, 0); diff --git a/C/dbase.c b/C/dbase.c index f08a7c8c7..08f48ebcb 100644 --- a/C/dbase.c +++ b/C/dbase.c @@ -186,7 +186,7 @@ STATIC_PROTO(void linkblk,(link_entry *,CELL *,CELL)); STATIC_PROTO(CELL *linkcells,(CELL *,Int)); #endif STATIC_PROTO(Int cmpclls,(CELL *,CELL *,Int)); -STATIC_PROTO(Prop FindDBProp,(AtomEntry *, int, unsigned int, SMALLUNSGN)); +STATIC_PROTO(Prop FindDBProp,(AtomEntry *, int, unsigned int, Term)); STATIC_PROTO(CELL CalcKey, (Term)); #ifdef COROUTINING STATIC_PROTO(CELL *MkDBTerm, (CELL *, CELL *, CELL *, CELL *, CELL *, CELL *,int *)); @@ -381,7 +381,7 @@ int Yap_DBTrailOverflow(void) /* get DB entry for ap/arity; */ static Prop -FindDBPropHavingLock(AtomEntry *ae, int CodeDB, unsigned int arity, SMALLUNSGN dbmod) +FindDBPropHavingLock(AtomEntry *ae, int CodeDB, unsigned int arity, Term dbmod) { Prop p0; DBProp p; @@ -398,7 +398,7 @@ FindDBPropHavingLock(AtomEntry *ae, int CodeDB, unsigned int arity, SMALLUNSGN d /* get DB entry for ap/arity; */ static Prop -FindDBProp(AtomEntry *ae, int CodeDB, unsigned int arity, SMALLUNSGN dbmod) +FindDBProp(AtomEntry *ae, int CodeDB, unsigned int arity, Term dbmod) { Prop out; @@ -2388,7 +2388,10 @@ UnifyDBKey(DBRef DBSP, PropFlags flags, Term t) } if ((p->KindOfPE & CodeDBBit) && (flags & CodeDBBit)) { Term t[2]; - t[0] = ModuleName[p->ModuleOfDB]; + if (p->ModuleOfDB) + t[0] = p->ModuleOfDB; + else + t[0] = TermProlog; t[1] = t1; tf = Yap_MkApplTerm(FunctorModule, 2, t); } else if (!(flags & CodeDBBit)) { @@ -2609,7 +2612,7 @@ new_lu_int_key(Int key) } fe = Yap_MkFunctor(Yap_FullLookupAtom("$integer"),3); WRITE_LOCK(fe->FRWLock); - p0 = Yap_NewPredPropByFunctor(fe,2); + p0 = Yap_NewPredPropByFunctor(fe,IDB_MODULE); p = RepPredProp(p0); p->NextOfPE = INT_LU_KEYS[hash_key]; p->src.IndxId = key; @@ -2631,15 +2634,15 @@ new_lu_entry(Term t) Functor f = FunctorOfTerm(t); WRITE_LOCK(f->FRWLock); - p0 = Yap_NewPredPropByFunctor(f,2); + p0 = Yap_NewPredPropByFunctor(f,IDB_MODULE); } else if (IsAtomTerm(t)) { Atom at = AtomOfTerm(t); WRITE_LOCK(RepAtom(at)->ARWLock); - p0 = Yap_NewPredPropByAtom(at,2); + p0 = Yap_NewPredPropByAtom(at,IDB_MODULE); } else { WRITE_LOCK(FunctorList->FRWLock); - p0 = Yap_NewPredPropByFunctor(FunctorList,2); + p0 = Yap_NewPredPropByFunctor(FunctorList,IDB_MODULE); } pe = RepPredProp(p0); pe->PredFlags |= LogUpdatePredFlag; @@ -2696,11 +2699,11 @@ find_lu_entry(Term t) Yap_Error(TYPE_ERROR_KEY, t, "while accessing database key"); return NULL; } - p = Yap_GetPredPropByFuncInThisModule(FunctorOfTerm(t),2); + p = Yap_GetPredPropByFuncInThisModule(FunctorOfTerm(t),IDB_MODULE); } else if (IsAtomTerm(t)) { - p = Yap_GetPredPropByAtomInThisModule(AtomOfTerm(t),2); + p = Yap_GetPredPropByAtomInThisModule(AtomOfTerm(t),IDB_MODULE); } else { - p = Yap_GetPredPropByFuncInThisModule(FunctorList,2); + p = Yap_GetPredPropByFuncInThisModule(FunctorList,IDB_MODULE); } if (p == NIL) { if (UPDATE_MODE == UPDATE_MODE_LOGICAL && !find_entry(t)) { @@ -2760,7 +2763,7 @@ FetchDBPropFromKey(Term twork, int flag, int new, char *error_mssg) { Atom At; Int arity; - SMALLUNSGN dbmod; + Term dbmod; if (flag & MkCode) { if (IsVarTerm(twork)) { @@ -2772,21 +2775,19 @@ FetchDBPropFromKey(Term twork, int flag, int new, char *error_mssg) return RepDBProp(NULL); } else { Functor f = FunctorOfTerm(twork); - Term tmod; if (f != FunctorModule) { Yap_Error(SYSTEM_ERROR, twork, "missing module"); return RepDBProp(NULL); } - tmod = ArgOfTerm(1, twork); - if (IsVarTerm(tmod)) { + dbmod = ArgOfTerm(1, twork); + if (IsVarTerm(dbmod)) { Yap_Error(INSTANTIATION_ERROR, twork, "var in module"); return(RepDBProp(NIL)); } - if (!IsAtomTerm(tmod)) { + if (!IsAtomTerm(dbmod)) { Yap_Error(TYPE_ERROR_ATOM, twork, "not atom in module"); return(RepDBProp(NIL)); } - dbmod = Yap_LookupModule(tmod); twork = ArgOfTerm(2, twork); } } else { @@ -4193,7 +4194,7 @@ p_erase_clause(void) if (entryref->Flags & StaticMask) { if (entryref->Flags & ErasedMask) return FALSE; - Yap_EraseStaticClause((StaticClause *)entryref, Yap_LookupModule(Deref(ARG2))); + Yap_EraseStaticClause((StaticClause *)entryref, Deref(ARG2)); return TRUE; } EraseEntry(entryref); @@ -4446,9 +4447,12 @@ p_instance_module(void) if (cl->ClFlags & ErasedMask) { return FALSE; } - return Yap_unify(ARG2, ModuleName[cl->ClPred->ModuleOfPred]); + if (cl->ClPred->ModuleOfPred) + return Yap_unify(ARG2, cl->ClPred->ModuleOfPred); + else + return Yap_unify(ARG2, TermProlog); } else { - return Yap_unify(ARG2, ModuleName[dbr->Parent->ModuleOfDB]); + return Yap_unify(ARG2, dbr->Parent->ModuleOfDB); } } @@ -4920,8 +4924,7 @@ p_install_thread_local(void) #if THREADS PredEntry *pe; Term t = Deref(ARG1); - Term t2 = Deref(ARG2); - SMALLUNSGN mod = Yap_LookupModule(t2); + Term mod = Deref(ARG2); if (IsVarTerm(t)) { return (FALSE); diff --git a/C/errors.c b/C/errors.c index cbc2804c3..c29a9a34a 100644 --- a/C/errors.c +++ b/C/errors.c @@ -107,15 +107,15 @@ DumpActiveGoals (void) if (pe->PredFlags & (CompiledPredFlag | DynamicPredFlag | FastPredFlag)) { Functor f; - SMALLUNSGN mod = 0; + Term mod = TermProlog; f = pe->FunctorOfPred; if (pe->KindOfPE && hidden (NameOfFunctor (f))) goto next; if (first++ == 1) fprintf(stderr,"Active ancestors:\n"); - if (pe->ModuleOfPred) mod = IntOfTerm(pe->ModuleOfPred); - Yap_plwrite (ModuleName[mod], Yap_DebugPutc, 0); + if (pe->ModuleOfPred) mod = pe->ModuleOfPred; + Yap_plwrite (mod, Yap_DebugPutc, 0); Yap_DebugPutc (Yap_c_error_stream,':'); if (pe->ArityOfPE == 0) { Yap_plwrite (MkAtomTerm ((Atom)f), Yap_DebugPutc, 0); @@ -162,11 +162,13 @@ DumpActiveGoals (void) READ_LOCK(pe->PRWLock); { Functor f; - SMALLUNSGN mod = 0; + Term mod = PROLOG_MODULE; f = pe->FunctorOfPred; - if (pe->ModuleOfPred) mod = IntOfTerm(pe->ModuleOfPred); - Yap_plwrite (ModuleName[mod], Yap_DebugPutc, 0); + if (pe->ModuleOfPred) + mod = pe->ModuleOfPred; + else mod = TermProlog; + Yap_plwrite (mod, Yap_DebugPutc, 0); Yap_DebugPutc (Yap_c_error_stream,':'); if (pe->ArityOfPE == 0) { Yap_plwrite (MkAtomTerm (NameOfFunctor(f)), Yap_DebugPutc, 0); @@ -194,7 +196,7 @@ detect_bug_location(yamop *yap_pc, char *tp, int psize) { Atom pred_name; UInt pred_arity; - SMALLUNSGN pred_module; + Term pred_module; Int cl; if ((cl = Yap_PredForCode(yap_pc, &pred_name, &pred_arity, &pred_module)) @@ -211,22 +213,18 @@ detect_bug_location(yamop *yap_pc, char *tp, int psize) /* don't give info on system predicates */ #if HAVE_SNPRINTF #if SHORT_INTS - snprintf(tp, psize, "%s:%s/%ld", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + snprintf(tp, psize, "prolog:%s/%ld", RepAtom(pred_name)->StrOfAE, pred_arity); #else - snprintf(tp, psize, "%s:%s/%d", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + snprintf(tp, psize, "prolog:%s/%d", RepAtom(pred_name)->StrOfAE, pred_arity); #endif #else #if SHORT_INTS - sprintf(tp, "in %s:%s/%ld", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + sprintf(tp, "in prolog:%s/%ld", RepAtom(pred_name)->StrOfAE, pred_arity); #else - sprintf(tp, "in %s:%s/%d", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + sprintf(tp, "in prolog:%s/%d", RepAtom(pred_name)->StrOfAE, pred_arity); #endif #endif @@ -234,21 +232,21 @@ detect_bug_location(yamop *yap_pc, char *tp, int psize) #if HAVE_SNPRINTF #if SHORT_INTS snprintf(tp, psize, "indexing code of %s:%s/%ld", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #else snprintf(tp, psize, "indexing code of %s:%s/%d", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #endif #else #if SHORT_INTS sprintf(tp, "indexing code of %s:%s/%ld", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #else sprintf(tp, "indexing code of %s:%s/%d", - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #endif #endif @@ -256,21 +254,21 @@ detect_bug_location(yamop *yap_pc, char *tp, int psize) #if HAVE_SNPRINTF #if SHORT_INTS snprintf(tp, psize, "clause %ld of %s:%s/%ld", cl, - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #else snprintf(tp, psize, "clause %d of %s:%s/%d", cl, - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #endif #else #if SHORT_INTS sprintf(tp, "clause %ld of %s:%s/%ld", cl, - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #else sprintf(tp, "clause %d of %s:%s/%d", cl, - RepAtom(AtomOfTerm(ModuleName[pred_module]))->StrOfAE, + RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(pred_name)->StrOfAE, pred_arity); #endif #endif diff --git a/C/exec.c b/C/exec.c index 6a12745aa..12a37f579 100644 --- a/C/exec.c +++ b/C/exec.c @@ -22,7 +22,7 @@ static char SccsId[] = "@(#)cdmgr.c 1.1 05/02/98"; #include "yapio.h" STATIC_PROTO(Int CallPredicate, (PredEntry *, choiceptr)); -STATIC_PROTO(Int EnterCreepMode, (Term, SMALLUNSGN)); +STATIC_PROTO(Int EnterCreepMode, (Term, Term)); STATIC_PROTO(Int CallClause, (PredEntry *, Int)); STATIC_PROTO(Int p_save_cp, (void)); STATIC_PROTO(Int p_execute, (void)); @@ -74,25 +74,25 @@ CallPredicate(PredEntry *pen, choiceptr cut_pt) { } inline static Int -CallMetaCall(SMALLUNSGN mod) { +CallMetaCall(Term mod) { ARG2 = cp_as_integer(B); /* p_save_cp */ ARG3 = ARG1; - ARG4 = ModuleName[mod]; + ARG4 = mod; return (CallPredicate(PredMetaCall, B)); } Term -Yap_ExecuteCallMetaCall(SMALLUNSGN mod) { +Yap_ExecuteCallMetaCall(Term mod) { Term ts[4]; ts[0] = ARG1; ts[1] = cp_as_integer(B); /* p_save_cp */ ts[2] = ARG1; - ts[3] = ModuleName[mod]; + ts[3] = mod; return(Yap_MkApplTerm(PredMetaCall->FunctorOfPred,4,ts)); } static Int -CallError(yap_error_number err, SMALLUNSGN mod) +CallError(yap_error_number err, Term mod) { if (yap_flags[LANGUAGE_MODE_FLAG] == 1) { return(CallMetaCall(mod)); @@ -213,7 +213,7 @@ p_save_cp(void) } inline static Int -do_execute(Term t, SMALLUNSGN mod) +do_execute(Term t, Term mod) { if (ActiveSignals) { return(EnterCreepMode(t, mod)); @@ -242,7 +242,7 @@ do_execute(Term t, SMALLUNSGN mod) if (f == FunctorModule) { Term tmod = ArgOfTerm(1,t); if (!IsVarTerm(tmod) && IsAtomTerm(tmod)) { - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2,t); goto restart_exec; } @@ -287,7 +287,7 @@ do_execute(Term t, SMALLUNSGN mod) } static Int -EnterCreepMode(Term t, SMALLUNSGN mod) { +EnterCreepMode(Term t, Term mod) { PredEntry *PredCreep; if (ActiveSignals & YAP_CDOVF_SIGNAL) { @@ -300,7 +300,11 @@ EnterCreepMode(Term t, SMALLUNSGN mod) { } } PredCreep = RepPredProp(PredPropByFunc(FunctorCreep,1)); - ARG1 = MkPairTerm(ModuleName[mod],ARG1); + if (mod) { + ARG1 = MkPairTerm(mod,ARG1); + } else { + ARG1 = MkPairTerm(TermProlog,ARG1); + } LOCK(SignalLock); CreepFlag = CalculateStackGap(); UNLOCK(SignalLock); @@ -325,10 +329,9 @@ static Int p_execute0(void) { /* '$execute0'(Goal,Mod) */ Term t = Deref(ARG1); - Term tmod = Deref(ARG2); + Term mod = Deref(ARG2); unsigned int arity; Prop pe; - SMALLUNSGN mod = Yap_LookupModule(tmod); restart_exec: if (IsVarTerm(t)) { @@ -347,7 +350,7 @@ p_execute0(void) if (f == FunctorModule) { Term tmod = ArgOfTerm(1,t); if (!IsVarTerm(tmod) && IsAtomTerm(tmod)) { - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2,t); goto restart_exec; } @@ -382,7 +385,7 @@ static Int p_execute_0(void) { /* '$execute_0'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG2)); + Term mod = Deref(ARG2); Prop pe; if (IsAtomTerm(t)) { @@ -419,7 +422,7 @@ static Int p_execute_1(void) { /* '$execute_0'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG3)); + Term mod = Deref(ARG3); Prop pe; if (!IsAtomTerm(t)) { @@ -465,7 +468,7 @@ static Int p_execute_2(void) { /* '$execute_2'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG4)); + Term mod = Deref(ARG4); Prop pe; if (IsAtomTerm(t)) { @@ -510,7 +513,7 @@ static Int p_execute_3(void) { /* '$execute_3'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG5)); + Term mod = Deref(ARG5); Prop pe; if (!IsAtomTerm(t)) { @@ -562,7 +565,7 @@ static Int p_execute_4(void) { /* '$execute_4'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG6)); + Term mod = Deref(ARG6); Prop pe; if (IsAtomTerm(t)) { @@ -613,7 +616,7 @@ static Int p_execute_5(void) { /* '$execute_5'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG7)); + Term mod = Deref(ARG7); Prop pe; if (IsAtomTerm(t)) { @@ -667,7 +670,7 @@ static Int p_execute_6(void) { /* '$execute_6'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG8)); + Term mod = Deref(ARG8); Prop pe; if (IsAtomTerm(t)) { @@ -724,7 +727,7 @@ static Int p_execute_7(void) { /* '$execute_7'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG9)); + Term mod = Deref(ARG9); Prop pe; if (IsAtomTerm(t)) { @@ -784,7 +787,7 @@ static Int p_execute_8(void) { /* '$execute_8'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG10)); + Term mod = Deref(ARG10); Prop pe; if (IsAtomTerm(t)) { @@ -847,7 +850,7 @@ static Int p_execute_9(void) { /* '$execute_9'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG11)); + Term mod = Deref(ARG11); Prop pe; if (IsAtomTerm(t)) { @@ -913,7 +916,7 @@ static Int p_execute_10(void) { /* '$execute_10'(Goal) */ Term t = Deref(ARG1); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG12)); + Term mod = Deref(ARG12); Prop pe; if (IsAtomTerm(t)) { @@ -1003,11 +1006,10 @@ p_pred_goal_expansion_on(void) { static Int p_at_execute(void) { /* '$execute'(Goal,ClauseNumber) */ - Term t = Deref(ARG1), tmod = Deref(ARG2), t2 = Deref(ARG3); + Term t = Deref(ARG1), mod = Deref(ARG2), t2 = Deref(ARG3); unsigned int arity; Prop pe; Atom a; - SMALLUNSGN mod = Yap_LookupModule(tmod); restart_exec: if (IsAtomTerm(t)) { @@ -1024,7 +1026,7 @@ p_at_execute(void) if (f == FunctorModule) { Term tmod = ArgOfTerm(1,t); if (!IsVarTerm(tmod) && IsAtomTerm(tmod)) { - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2,t); goto restart_exec; } @@ -1176,7 +1178,7 @@ Yap_exec_absmi(int top) Int -Yap_execute_goal(Term t, int nargs, SMALLUNSGN mod) +Yap_execute_goal(Term t, int nargs, Term mod) { Int out; yamop *CodeAdr; @@ -1307,7 +1309,7 @@ Yap_RunTopGoal(Term t) PredEntry *ppe; CELL *pt; UInt arity; - SMALLUNSGN mod = CurrentModule; + Term mod = CurrentModule; int goal_out = 0; restart_runtopgoal: @@ -1326,7 +1328,7 @@ Yap_RunTopGoal(Term t) if (f == FunctorModule) { Term tmod = ArgOfTerm(1,t); if (!IsVarTerm(tmod) && IsAtomTerm(tmod)) { - mod = Yap_LookupModule(tmod); + mod = tmod; t = ArgOfTerm(2,t); goto restart_runtopgoal; } @@ -1531,7 +1533,7 @@ p_jump_env(void) { static Int p_generate_pred_info(void) { ARG1 = ARG3 = ENV[-EnvSizeInCells-1]; - ARG4 = ModuleName[IntOfTerm(ENV[-EnvSizeInCells-3])]; + ARG4 = ENV[-EnvSizeInCells-3]; ARG2 = cp_as_integer((choiceptr)ENV[E_CB]); return TRUE; } diff --git a/C/heapgc.c b/C/heapgc.c index 772b8ebf5..304439ec2 100644 --- a/C/heapgc.c +++ b/C/heapgc.c @@ -1473,7 +1473,7 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose) { Atom at; UInt arity; - SMALLUNSGN mod; + Term mod; if (Yap_PredForCode(gc_B->cp_ap, &at, &arity, &mod)) { if (arity) fprintf(Yap_stderr,"[GC] %s/%ld marked %ld (%s)\n", RepAtom(at)->StrOfAE, (long int)arity, total_marked, op_names[opnum]); diff --git a/C/index.c b/C/index.c index f1b2c56af..3a0fb633b 100644 --- a/C/index.c +++ b/C/index.c @@ -1943,7 +1943,7 @@ static void add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) { yamop *cl; - if (ap->ModuleOfPred == 2) { + if (ap->ModuleOfPred == IDB_MODULE) { cl = clause->Code; } else { cl = clause->u.WorkPC; @@ -2179,7 +2179,7 @@ skip_to_arg(ClauseDef *clause, PredEntry *ap, UInt argno, int at_point) { yamop *cl; int done = FALSE; - if (ap->ModuleOfPred == 2) { + if (ap->ModuleOfPred == IDB_MODULE) { return; } else { cl = clause->CurrentCode; @@ -3075,7 +3075,7 @@ do_index(ClauseDef *min, ClauseDef* max, struct intermediates *cint, UInt argno, ngroups = groups_in(min, max, group); if (IsVarTerm(t) && max - min > 2 && - ap->ModuleOfPred != 2) { + ap->ModuleOfPred != IDB_MODULE) { lablx = new_label(); Yap_emit(label_op, lablx, Zero, cint); while (IsVarTerm(t)) { @@ -4181,12 +4181,13 @@ ExpandIndex(PredEntry *ap) { Yap_Error_Size = 0; #ifdef DEBUG if (Yap_Option['i' - 'a' + 1]) { - Term tmod = ModuleName[ap->ModuleOfPred]; + Term tmod = ap->ModuleOfPred; + if (!tmod) tmod = TermProlog; Yap_DebugPutc(Yap_c_error_stream,'>'); Yap_DebugPutc(Yap_c_error_stream,'\t'); Yap_plwrite(tmod, Yap_DebugPutc, 0); Yap_DebugPutc(Yap_c_error_stream,':'); - if (ap->ModuleOfPred == 2) { + if (ap->ModuleOfPred == IDB_MODULE) { Term t = Deref(ARG1); if (IsAtomTerm(t)) { Yap_plwrite(t, Yap_DebugPutc, 0); @@ -5596,12 +5597,13 @@ Yap_AddClauseToIndex(PredEntry *ap, yamop *beg, int first) { Yap_ErrorMessage = NULL; #ifdef DEBUG if (Yap_Option['i' - 'a' + 1]) { - Term tmod = ModuleName[ap->ModuleOfPred]; + Term tmod = ap->ModuleOfPred; + if (!tmod) tmod = TermProlog; Yap_DebugPutc(Yap_c_error_stream,'+'); Yap_DebugPutc(Yap_c_error_stream,'\t'); Yap_plwrite(tmod, Yap_DebugPutc, 0); Yap_DebugPutc(Yap_c_error_stream,':'); - if (ap->ModuleOfPred == 2) { + if (ap->ModuleOfPred == IDB_MODULE) { Term t = Deref(ARG1); if (IsAtomTerm(t)) { Yap_plwrite(t, Yap_DebugPutc, 0); @@ -6101,13 +6103,14 @@ Yap_RemoveClauseFromIndex(PredEntry *ap, yamop *beg) { Yap_ErrorMessage = NULL; #ifdef DEBUG if (Yap_Option['i' - 'a' + 1]) { - Term tmod = ModuleName[ap->ModuleOfPred]; + Term tmod = ap->ModuleOfPred; + if (!tmod) tmod = TermProlog; Yap_DebugPutc(Yap_c_error_stream,'-'); Yap_DebugPutc(Yap_c_error_stream,'\t'); Yap_plwrite(tmod, Yap_DebugPutc, 0); Yap_DebugPutc(Yap_c_error_stream,':'); - if (ap->ModuleOfPred != 2) { + if (ap->ModuleOfPred != IDB_MODULE) { if (ap->ArityOfPE == 0) { Atom At = (Atom)ap->FunctorOfPred; Yap_plwrite(MkAtomTerm(At), Yap_DebugPutc, 0); @@ -6248,7 +6251,7 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term t1, Term tb, Term tr, yam yamop **jlbl = NULL; int lu_pred = ap->PredFlags & LogUpdatePredFlag; - if (ap->ModuleOfPred != 2) { + if (ap->ModuleOfPred != IDB_MODULE) { if (ap->ArityOfPE) { CELL *tar = RepAppl(t1); UInt i; @@ -6623,7 +6626,7 @@ Yap_NthClause(PredEntry *ap, Int ncls) else if (ncls < 0) return NULL; - if (ap->ModuleOfPred != 2) { + if (ap->ModuleOfPred != IDB_MODULE) { if (ap->ArityOfPE) { UInt i; diff --git a/C/init.c b/C/init.c index 6a4709df4..814bc6f41 100644 --- a/C/init.c +++ b/C/init.c @@ -495,10 +495,7 @@ Yap_InitCPred(char *Name, unsigned long int Arity, CPredicate code, int flags) } p_code->opc = Yap_opcode(_procceed); pe->OpcodeOfPred = pe->CodeOfPred->opc; - { - Term mod = CurrentModule; - pe->ModuleOfPred = mod; - } + pe->ModuleOfPred = CurrentModule; } void @@ -716,6 +713,12 @@ InitCodes(void) Functor FunctorThrow; + heap_regs->user_module = MkAtomTerm(Yap_LookupAtom("user")); + heap_regs->idb_module = MkAtomTerm(Yap_LookupAtom("idb")); + heap_regs->attributes_module = MkAtomTerm(Yap_LookupAtom("attributes")); + heap_regs->charsio_module = MkAtomTerm(Yap_LookupAtom("charsio")); + heap_regs->terms_module = MkAtomTerm(Yap_LookupAtom("terms")); + Yap_InitModules(); #ifdef YAPOR heap_regs->seq_def = TRUE; heap_regs->getworkfirsttimecode.opc = Yap_opcode(_getwork_first_time); @@ -1006,26 +1009,26 @@ InitCodes(void) heap_regs->env_for_yes_code.p = heap_regs->env_for_yes_code.p0 = RepPredProp(PredPropByAtom(heap_regs->atom_true,0)); - heap_regs->pred_meta_call = RepPredProp(PredPropByFunc(Yap_MkFunctor(heap_regs->atom_meta_call,4),0)); - heap_regs->pred_dollar_catch = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$catch"),3),0)); - heap_regs->pred_recorded_with_key = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$recorded_with_key"),3),0)); - heap_regs->pred_log_upd_clause = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$do_log_upd_clause"),5),0)); - heap_regs->pred_log_upd_clause0 = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$do_log_upd_clause"),4),0)); - heap_regs->pred_static_clause = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$do_static_clause"),5),0)); - heap_regs->pred_throw = RepPredProp(PredPropByFunc(FunctorThrow,0)); - heap_regs->pred_handle_throw = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$handle_throw"),3),0)); - heap_regs->pred_goal_expansion = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_LookupAtom("goal_expansion"),3),1)); + heap_regs->pred_meta_call = RepPredProp(PredPropByFunc(Yap_MkFunctor(heap_regs->atom_meta_call,4),PROLOG_MODULE)); + heap_regs->pred_dollar_catch = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$catch"),3),PROLOG_MODULE)); + heap_regs->pred_recorded_with_key = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$recorded_with_key"),3),PROLOG_MODULE)); + heap_regs->pred_log_upd_clause = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$do_log_upd_clause"),5),PROLOG_MODULE)); + heap_regs->pred_log_upd_clause0 = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$do_log_upd_clause"),4),PROLOG_MODULE)); + heap_regs->pred_static_clause = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$do_static_clause"),5),PROLOG_MODULE)); + heap_regs->pred_throw = RepPredProp(PredPropByFunc(FunctorThrow,PROLOG_MODULE)); + heap_regs->pred_handle_throw = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_FullLookupAtom("$handle_throw"),3),PROLOG_MODULE)); + heap_regs->pred_goal_expansion = RepPredProp(PredPropByFunc(Yap_MkFunctor(Yap_LookupAtom("goal_expansion"),3),USER_MODULE)); heap_regs->env_for_trustfail_code.p = heap_regs->env_for_trustfail_code.p0 = - RepPredProp(PredPropByAtom(heap_regs->atom_false,0)); + RepPredProp(PredPropByAtom(heap_regs->atom_false,PROLOG_MODULE)); { /* make sure we know about the module predicate */ - PredEntry *modp = RepPredProp(PredPropByFunc(heap_regs->functor_module,0)); + PredEntry *modp = RepPredProp(PredPropByFunc(heap_regs->functor_module,PROLOG_MODULE)); modp->PredFlags |= MetaPredFlag; } #ifdef YAPOR - heap_regs->getworkcode.u.ld.p = RepPredProp(PredPropByAtom(Yap_FullLookupAtom("$getwork"), 0)); - heap_regs->getworkcode_seq.u.ld.p = RepPredProp(PredPropByAtom(Yap_FullLookupAtom("$getwork_seq"), 0)); + heap_regs->getworkcode.u.ld.p = RepPredProp(PredPropByAtom(Yap_FullLookupAtom("$getwork"), PROLOG_MODULE)); + heap_regs->getworkcode_seq.u.ld.p = RepPredProp(PredPropByAtom(Yap_FullLookupAtom("$getwork_seq"), PROLOG_MODULE)); #endif heap_regs->db_erased_marker = (DBRef)Yap_AllocCodeSpace(sizeof(DBStruct)); @@ -1181,7 +1184,6 @@ Yap_InitWorkspace(int Heap, #else Yap_InitAbsmi(); #endif - Yap_InitModules(); InitCodes(); InitOps(); InitDebug(); diff --git a/C/load_foreign.c b/C/load_foreign.c index 4bd5a86a0..38d8d1137 100644 --- a/C/load_foreign.c +++ b/C/load_foreign.c @@ -118,7 +118,7 @@ void Yap_ReOpenLoadForeign(void) { ForeignObj *f_code = ForeignCodeLoaded; - SMALLUNSGN OldModule = CurrentModule; + Term OldModule = CurrentModule; YapInitProc InitProc = NULL; while (f_code != NULL) { diff --git a/C/modules.c b/C/modules.c index 31ef54c8e..fe5b0bfb8 100644 --- a/C/modules.c +++ b/C/modules.c @@ -27,10 +27,9 @@ STATIC_PROTO(Int p_current_module1, (void)); #define ByteAdr(X) ((char *) &(X)) Term -Yap_Module_Name(CODEADDR cap) +Yap_Module_Name(PredEntry *ap) { - PredEntry *ap = (PredEntry *)cap; - + Term mod; if (!ap->ModuleOfPred) /* If the system predicate is a metacall I should return the module for the metacall, which I will suppose has to be @@ -39,20 +38,22 @@ Yap_Module_Name(CODEADDR cap) So I will return the current module in case the system predicate is a meta-call. Otherwise it will still work. */ - return(ModuleName[CurrentModule]); + mod = CurrentModule; else { - return (ModuleName[ap->ModuleOfPred]); + mod = ap->ModuleOfPred; } + if (mod) return mod; + return TermProlog; } -static SMALLUNSGN +static Term LookupModule(Term a) { unsigned int i; for (i = 0; i < NoOfModules; ++i) { if (ModuleName[i] == a) { - return (i); + return i; } } ModuleName[i = NoOfModules++] = a; @@ -62,10 +63,18 @@ LookupModule(Term a) return (i); } -SMALLUNSGN -Yap_LookupModule(Term a) +struct pred_entry * +Yap_ModulePred(Term mod) { - return(LookupModule(a)); + return ModulePred[LookupModule(mod)]; +} + +void +Yap_NewModulePred(Term mod, struct pred_entry *ap) +{ + Term imod = LookupModule(mod); + ap->NextPredOfModule = ModulePred[imod]; + ModulePred[imod] = ap; } static Int @@ -73,44 +82,40 @@ p_current_module(void) { /* $current_module(Old,New) */ Term t; - if (!Yap_unify_constant(ARG1, ModuleName[CurrentModule])) - return (0); + if (CurrentModule) { + if(!Yap_unify_constant(ARG1, CurrentModule)) + return FALSE; + } else { + if (!Yap_unify_constant(ARG1, TermProlog)) + return FALSE; + } t = Deref(ARG2); if (IsVarTerm(t) || !IsAtomTerm(t)) - return (0); - CurrentModule = LookupModule(t); + return FALSE; + if (t == TermProlog) { + CurrentModule = 0; + } else { + CurrentModule = t; + LookupModule(CurrentModule); + } return (TRUE); } static Int p_current_module1(void) { /* $current_module(Old) */ - if (!Yap_unify_constant(ARG1, ModuleName[CurrentModule])) - return (0); - return (1); + if (CurrentModule) + return Yap_unify_constant(ARG1, CurrentModule); + return Yap_unify_constant(ARG1, TermProlog); } static Int p_change_module(void) { /* $change_module(New) */ - SMALLUNSGN mod = LookupModule(Deref(ARG1)); + Term mod = Deref(ARG1); + LookupModule(mod); CurrentModule = mod; - return (TRUE); -} - -static Int -p_module_number(void) -{ /* $module_number(Mod,Num) */ - Term tname = Deref(ARG1); - Term t; - if (IsVarTerm(tname)) { - return(Yap_unify(tname, ModuleName[IntOfTerm(Deref(ARG2))])); - } else { - t = MkIntTerm(LookupModule(Deref(ARG1))); - Yap_unify(t,ARG2); - ARG2 = t; - } - return(TRUE); + return TRUE; } static Int @@ -139,7 +144,6 @@ Yap_InitModulesC(void) Yap_InitCPred("$current_module", 2, p_current_module, SafePredFlag|SyncPredFlag); Yap_InitCPred("$current_module", 1, p_current_module1, SafePredFlag|SyncPredFlag); Yap_InitCPred("$change_module", 1, p_change_module, SafePredFlag|SyncPredFlag); - Yap_InitCPred("$module_number", 2, p_module_number, SafePredFlag); Yap_InitCPredBack("$all_current_modules", 1, 1, init_current_module, cont_current_module, SafePredFlag|SyncPredFlag); } @@ -148,18 +152,18 @@ Yap_InitModulesC(void) void Yap_InitModules(void) { - ModuleName[PROLOG_MODULE] = - MkAtomTerm(Yap_LookupAtom("prolog")); - ModuleName[USER_MODULE] = - MkAtomTerm(Yap_LookupAtom("user")); - ModuleName[IDB_MODULE] = - MkAtomTerm(Yap_LookupAtom("idb")); - ModuleName[ATTRIBUTES_MODULE] = - MkAtomTerm(Yap_LookupAtom("attributes")); - ModuleName[CHARSIO_MODULE] = - MkAtomTerm(Yap_LookupAtom("charsio")); - ModuleName[TERMS_MODULE] = - MkAtomTerm(Yap_LookupAtom("terms")); + ModuleName[0] = + TermProlog; + ModuleName[1] = + USER_MODULE; + ModuleName[2] = + IDB_MODULE; + ModuleName[3] = + ATTRIBUTES_MODULE; + ModuleName[4] = + CHARSIO_MODULE; + ModuleName[5] = + TERMS_MODULE; NoOfModules = 6; - CurrentModule = 0; + CurrentModule = PROLOG_MODULE; } diff --git a/C/stdpreds.c b/C/stdpreds.c index bc772d636..413af7116 100644 --- a/C/stdpreds.c +++ b/C/stdpreds.c @@ -302,13 +302,13 @@ showprofres(int tipo) { if (calls) { if (myp->ArityOfPE) { printf("%s:%s/%d -> %uld\n", - RepAtom(AtomOfTerm(ModuleName[myp->ModuleOfPred]))->StrOfAE, + RepAtom(AtomOfTerm(myp->ModuleOfPred))->StrOfAE, RepAtom(NameOfFunctor(myp->FunctorOfPred))->StrOfAE, myp->ArityOfPE, calls); } else { printf("%s:%s -> %uld\n", - RepAtom(AtomOfTerm(ModuleName[myp->ModuleOfPred]))->StrOfAE, + RepAtom(AtomOfTerm(myp->ModuleOfPred))->StrOfAE, RepAtom((Atom)(myp->FunctorOfPred))->StrOfAE, calls); } @@ -1742,7 +1742,7 @@ cont_current_predicate(void) EXTRA_CBACK_ARG(3,1) = (CELL)MkIntegerTerm((Int)(pp->NextPredOfModule)); if (pp->FunctorOfPred == FunctorModule) return(FALSE); - if (pp->ModuleOfPred != 2) { + if (pp->ModuleOfPred != IDB_MODULE) { Arity = pp->ArityOfPE; if (Arity) name = MkAtomTerm(NameOfFunctor(pp->FunctorOfPred)); @@ -1771,7 +1771,7 @@ init_current_predicate(void) Term t1 = Deref(ARG1); if (IsVarTerm(t1) || !IsAtomTerm(t1)) cut_fail(); - EXTRA_CBACK_ARG(3,1) = MkIntegerTerm((Int)ModulePred[Yap_LookupModule(t1)]); + EXTRA_CBACK_ARG(3,1) = t1; return (cont_current_predicate()); } @@ -1779,7 +1779,7 @@ static Int cont_current_predicate_for_atom(void) { Prop pf = (Prop)IntegerOfTerm(EXTRA_CBACK_ARG(3,1)); - SMALLUNSGN mod = Yap_LookupModule(Deref(ARG2)); + Term mod = Deref(ARG2); while (pf != NIL) { FunctorEntry *pp = RepFunctorProp(pf); @@ -1993,15 +1993,11 @@ p_flags(void) PredEntry *pe; Int newFl; Term t1 = Deref(ARG1); - Term t2 = Deref(ARG2); - int mod; + Term mod = Deref(ARG2); - if (IsVarTerm(t1)) - return (FALSE); - if (!IsAtomTerm(t2)) { + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return(FALSE); } - mod = Yap_LookupModule(t2); if (IsVarTerm(t1)) return (FALSE); if (IsAtomTerm(t1)) { diff --git a/C/tracer.c b/C/tracer.c index 62080473c..2e3ddab92 100644 --- a/C/tracer.c +++ b/C/tracer.c @@ -166,7 +166,7 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args) } switch (port) { case enter_pred: - mname = RepAtom(AtomOfTerm(Yap_Module_Name((CODEADDR)pred)))->StrOfAE; + mname = RepAtom(AtomOfTerm(Yap_Module_Name(pred)))->StrOfAE; arity = pred->ArityOfPE; if (arity == 0) s = RepAtom((Atom)pred->FunctorOfPred)->StrOfAE; @@ -189,7 +189,7 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args) if (pred == NULL) { send_tracer_message("RETRY TABLE: ", NULL, 0, NULL, args); } else { - mname = RepAtom(AtomOfTerm(Yap_Module_Name((CODEADDR)pred)))->StrOfAE; + mname = RepAtom(AtomOfTerm(Yap_Module_Name(pred)))->StrOfAE; arity = pred->ArityOfPE; if (arity == 0) s = RepAtom((Atom)pred->FunctorOfPred)->StrOfAE; @@ -206,7 +206,7 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args) if (pred == NULL) { send_tracer_message("RETRY TABLE: ", NULL, 0, NULL, args); } else { - mname = RepAtom(AtomOfTerm(Yap_Module_Name((CODEADDR)pred)))->StrOfAE; + mname = RepAtom(AtomOfTerm(Yap_Module_Name(pred)))->StrOfAE; arity = pred->ArityOfPE; if (arity == 0) s = RepAtom((Atom)pred->FunctorOfPred)->StrOfAE; @@ -220,9 +220,9 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args) case retry_pred: send_tracer_message("FAIL ", NULL, 0, NULL, args); if (pred != NULL) { - mname = RepAtom(AtomOfTerm(Yap_Module_Name((CODEADDR)pred)))->StrOfAE; + mname = RepAtom(AtomOfTerm(Yap_Module_Name(pred)))->StrOfAE; arity = pred->ArityOfPE; - if (pred->ModuleOfPred == 2) { + if (pred->ModuleOfPred == IDB_MODULE) { s = "recorded"; arity = 3; } else if (arity == 0) { diff --git a/H/Heap.h b/H/Heap.h index 481fef1f3..1b4f8a968 100644 --- a/H/Heap.h +++ b/H/Heap.h @@ -10,7 +10,7 @@ * File: Heap.h * * mods: * * comments: Heap Init Structure * -* version: $Id: Heap.h,v 1.56 2004-02-11 13:59:52 vsc Exp $ * +* version: $Id: Heap.h,v 1.57 2004-02-12 12:37:11 vsc Exp $ * *************************************************************************/ /* information that can be stored in Code Space */ @@ -67,7 +67,7 @@ typedef struct thandle { UInt ssize; UInt tsize; Term tdetach; - SMALLUNSGN cmod; + Term cmod; struct DB_TERM *tgoal; int id; int ret; @@ -326,7 +326,12 @@ typedef struct various_codes { term_dollar_u, #endif term_prolog, - term_refound_var; + term_refound_var, + user_module, + idb_module, + attributes_module, + charsio_module, + terms_module; void *last_wtime; struct pred_entry *pred_goal_expansion; struct pred_entry *pred_meta_call; @@ -572,6 +577,12 @@ struct various_codes *heap_regs; #define TermDollarU heap_regs->term_dollar_u #define TermProlog heap_regs->term_prolog #define TermReFoundVar heap_regs->term_refound_var +#define PROLOG_MODULE 0 +#define USER_MODULE heap_regs->user_module +#define IDB_MODULE heap_regs->idb_module +#define ATTRIBUTES_MODULE heap_regs->attributes_module +#define CHARSIO_MODULE heap_regs->charsio_module +#define TERMS_MODULE heap_regs->terms_module #define PredGoalExpansion heap_regs->pred_goal_expansion #define PredMetaCall heap_regs->pred_meta_call #define PredDollarCatch heap_regs->pred_dollar_catch @@ -716,13 +727,13 @@ Yap_PreAllocCodeSpace(void) #if THREADS Prop STD_PROTO(Yap_NewThreadPred, (PredEntry *)); -Prop STD_PROTO(Yap_NewPredPropByFunctor, (Functor, SMALLUNSGN)); +Prop STD_PROTO(Yap_NewPredPropByFunctor, (Functor, Term)); EXTERN inline PredEntry * Yap_GetThreadPred(PredEntry *ap) { Functor f = ap->FunctorOfPred; - SMALLUNSGN mod = ap->ModuleOfPred; + Term mod = ap->ModuleOfPred; Prop p0 = AbsPredProp(heap_regs->thread_handle[worker_id].local_preds); while(p0) { diff --git a/H/Regs.h b/H/Regs.h index fb4791422..6259d3a13 100644 --- a/H/Regs.h +++ b/H/Regs.h @@ -10,7 +10,7 @@ * File: Regs.h * * mods: * * comments: YAP abstract machine registers * -* version: $Id: Regs.h,v 1.25 2004-02-11 13:33:19 vsc Exp $ * +* version: $Id: Regs.h,v 1.26 2004-02-12 12:37:11 vsc Exp $ * *************************************************************************/ @@ -100,7 +100,7 @@ typedef struct Term TermNil_; /* 20 */ #endif #endif - SMALLUNSGN CurrentModule_; + Term CurrentModule_; #if defined(SBA) || defined(TABLING) CELL *H_FZ_; choiceptr B_FZ_; diff --git a/H/Yapproto.h b/H/Yapproto.h index daebd1472..7cf404c51 100644 --- a/H/Yapproto.h +++ b/H/Yapproto.h @@ -10,7 +10,7 @@ * File: Yap.proto * * mods: * * comments: Function declarations for YAP * -* version: $Id: Yapproto.h,v 1.45 2004-02-11 01:20:56 vsc Exp $ * +* version: $Id: Yapproto.h,v 1.46 2004-02-12 12:37:12 vsc Exp $ * *************************************************************************/ /* prototype file for Yap */ @@ -29,10 +29,10 @@ Term STD_PROTO(Yap_GetValue,(Atom)); Atom STD_PROTO(Yap_LookupAtom,(char *)); Atom STD_PROTO(Yap_FullLookupAtom,(char *)); void STD_PROTO(Yap_LookupAtomWithAddress,(char *,AtomEntry *)); -Prop STD_PROTO(Yap_NewPredPropByFunctor,(struct FunctorEntryStruct *, SMALLUNSGN)); -Prop STD_PROTO(Yap_NewPredPropByAtom,(struct AtomEntryStruct *, SMALLUNSGN)); -Prop STD_PROTO(Yap_PredPropByFunctorNonThreadLocal,(struct FunctorEntryStruct *, SMALLUNSGN)); -Prop STD_PROTO(Yap_PredPropByAtomNonThreadLocal,(struct AtomEntryStruct *, SMALLUNSGN)); +Prop STD_PROTO(Yap_NewPredPropByFunctor,(struct FunctorEntryStruct *, Term)); +Prop STD_PROTO(Yap_NewPredPropByAtom,(struct AtomEntryStruct *, Term)); +Prop STD_PROTO(Yap_PredPropByFunctorNonThreadLocal,(struct FunctorEntryStruct *, Term)); +Prop STD_PROTO(Yap_PredPropByAtomNonThreadLocal,(struct AtomEntryStruct *, Term)); Functor STD_PROTO(Yap_UnlockedMkFunctor,(AtomEntry *,unsigned int)); Functor STD_PROTO(Yap_MkFunctor,(Atom,unsigned int)); void STD_PROTO(Yap_MkFunctorWithAddress,(Atom,unsigned int,FunctorEntry *)); @@ -55,11 +55,11 @@ Term STD_PROTO(MkSFTerm,(Functor,int,Term *,Term)); CELL STD_PROTO(*ArgsOfSFTerm,(Term)); #endif -Prop STD_PROTO(Yap_GetPredPropByAtom,(Atom, SMALLUNSGN)); -Prop STD_PROTO(Yap_GetPredPropByFunc,(Functor, SMALLUNSGN)); -Prop STD_PROTO(Yap_GetPredPropByAtomInThisModule,(Atom, SMALLUNSGN)); -Prop STD_PROTO(Yap_GetPredPropByFuncInThisModule,(Functor, SMALLUNSGN)); -Prop STD_PROTO(Yap_GetPredPropHavingLock,(Atom,unsigned int,SMALLUNSGN)); +Prop STD_PROTO(Yap_GetPredPropByAtom,(Atom, Term)); +Prop STD_PROTO(Yap_GetPredPropByFunc,(Functor, Term)); +Prop STD_PROTO(Yap_GetPredPropByAtomInThisModule,(Atom, Term)); +Prop STD_PROTO(Yap_GetPredPropByFuncInThisModule,(Functor, Term)); +Prop STD_PROTO(Yap_GetPredPropHavingLock,(Atom,unsigned int, Term)); Prop STD_PROTO(Yap_GetExpProp,(Atom,unsigned int)); Prop STD_PROTO(Yap_GetExpPropHavingLock,(AtomEntry *,unsigned int)); @@ -107,7 +107,7 @@ Int STD_PROTO(YAP_Execute,(struct pred_entry *, CPredicate)); /* cdmgr.c */ Term STD_PROTO(Yap_all_calls,(void)); Atom STD_PROTO(Yap_ConsultingFile,(void)); -Int STD_PROTO(Yap_PredForCode,(yamop *, Atom *, UInt *, SMALLUNSGN *)); +Int STD_PROTO(Yap_PredForCode,(yamop *, Atom *, UInt *, Term *)); void STD_PROTO(Yap_InitCdMgr,(void)); #if EMACS int STD_PROTO(where_new_clause, (Prop, int)); @@ -148,11 +148,11 @@ yamop *STD_PROTO(Yap_Error,(yap_error_number,Term,char *msg, ...)); void STD_PROTO(Yap_InitEval,(void)); /* exec.c */ -Term STD_PROTO(Yap_ExecuteCallMetaCall,(SMALLUNSGN mod)); +Term STD_PROTO(Yap_ExecuteCallMetaCall,(Term)); void STD_PROTO(Yap_InitExecFs,(void)); Int STD_PROTO(Yap_JumpToEnv,(Term)); int STD_PROTO(Yap_RunTopGoal,(Term)); -Int STD_PROTO(Yap_execute_goal,(Term, int, SMALLUNSGN)); +Int STD_PROTO(Yap_execute_goal,(Term, int, Term)); int STD_PROTO(Yap_exec_absmi,(int)); void STD_PROTO(Yap_trust_last,(void)); @@ -214,8 +214,9 @@ Term STD_PROTO(Yap_ReadTimedVar,(Term)); Term STD_PROTO(Yap_UpdateTimedVar,(Term, Term)); /* modules.c */ -SMALLUNSGN STD_PROTO(Yap_LookupModule,(Term)); -Term STD_PROTO(Yap_Module_Name, (CODEADDR)); +Term STD_PROTO(Yap_Module_Name, (struct pred_entry *)); +struct pred_entry *STD_PROTO(Yap_ModulePred, (Term)); +void STD_PROTO(Yap_NewModulePred, (Term, struct pred_entry *)); void STD_PROTO(Yap_InitModules, (void)); void STD_PROTO(Yap_InitModulesC, (void)); diff --git a/H/amidefs.h b/H/amidefs.h index 28017a6ca..d31d96258 100644 --- a/H/amidefs.h +++ b/H/amidefs.h @@ -386,7 +386,7 @@ typedef struct yami { union { struct yami *l; struct pred_entry *p; - SMALLUNSGN m_num; + Term mod; } sla_u; struct pred_entry *p0; CELL next; diff --git a/H/clause.h b/H/clause.h index 759118f2f..53c9ac558 100644 --- a/H/clause.h +++ b/H/clause.h @@ -169,11 +169,11 @@ void STD_PROTO(Yap_InitComma,(void)); /* cdmgr.c */ void STD_PROTO(Yap_RemoveLogUpdIndex,(LogUpdIndex *)); void STD_PROTO(Yap_IPred,(PredEntry *)); -void STD_PROTO(Yap_addclause,(Term,yamop *,int,int)); +void STD_PROTO(Yap_addclause,(Term,yamop *,int,Term)); void STD_PROTO(Yap_add_logupd_clause,(PredEntry *,LogUpdClause *,int)); void STD_PROTO(Yap_kill_iblock,(ClauseUnion *,ClauseUnion *,PredEntry *)); void STD_PROTO(Yap_cleanup_dangling_indices,(yamop *,yamop *,yamop *,yamop *)); -void STD_PROTO(Yap_EraseStaticClause,(StaticClause *, SMALLUNSGN)); +void STD_PROTO(Yap_EraseStaticClause,(StaticClause *, Term)); ClauseUnion *STD_PROTO(Yap_find_owner_index,(yamop *, PredEntry *)); /* dbase.c */ diff --git a/H/compile.h b/H/compile.h index ab2765ef6..026d37935 100644 --- a/H/compile.h +++ b/H/compile.h @@ -256,7 +256,7 @@ void STD_PROTO(Yap_emit_3ops,(compiler_vm_op,CELL,CELL,CELL, struct intermediate void STD_PROTO(Yap_emit_4ops,(compiler_vm_op,CELL,CELL,CELL,CELL, struct intermediates *)); CELL *STD_PROTO(Yap_emit_extra_size,(compiler_vm_op,CELL,int, struct intermediates *)); char *STD_PROTO(Yap_AllocCMem,(int, struct intermediates *)); -int STD_PROTO(Yap_is_a_test_pred,(Term, SMALLUNSGN)); +int STD_PROTO(Yap_is_a_test_pred,(Term, Term)); void STD_PROTO(Yap_bip_name,(Int, char *)); #ifdef DEBUG void STD_PROTO(Yap_ShowCode,(struct intermediates *)); diff --git a/H/rheap.h b/H/rheap.h index a097a53cf..7fdfbc426 100644 --- a/H/rheap.h +++ b/H/rheap.h @@ -305,6 +305,11 @@ restore_codes(void) #endif heap_regs->term_prolog = AtomTermAdjust(heap_regs->term_prolog); heap_regs->term_refound_var = AtomTermAdjust(heap_regs->term_refound_var); + heap_regs->user_module = AtomTermAdjust(heap_regs->user_module); + heap_regs->idb_module = AtomTermAdjust(heap_regs->idb_module); + heap_regs->attributes_module = AtomTermAdjust(heap_regs->attributes_module); + heap_regs->charsio_module = AtomTermAdjust(heap_regs->charsio_module); + heap_regs->terms_module = AtomTermAdjust(heap_regs->terms_module); if (heap_regs->dyn_array_list != NULL) { heap_regs->dyn_array_list = (struct array_entry *)AddrAdjust((ADDR)heap_regs->dyn_array_list); @@ -1516,8 +1521,8 @@ CleanCode(PredEntry *pp) pp->FunctorOfPred = FuncAdjust(pp->FunctorOfPred); else pp->FunctorOfPred = (Functor)AtomAdjust((Atom)(pp->FunctorOfPred)); - if (pp->ModuleOfPred != 2) { - if (pp->src.OwnerFile && pp->ModuleOfPred != 2) + if (pp->ModuleOfPred != IDB_MODULE) { + if (pp->src.OwnerFile && pp->ModuleOfPred != IDB_MODULE) pp->src.OwnerFile = AtomAdjust(pp->src.OwnerFile); } if (!(pp->PredFlags & NumberDBPredFlag)) { diff --git a/OPTYap/opt.preds.c b/OPTYap/opt.preds.c index 881b4ff1d..1de8c9a8e 100644 --- a/OPTYap/opt.preds.c +++ b/OPTYap/opt.preds.c @@ -151,15 +151,12 @@ int start_yapor(void) { static int p_sequential(void) { - Term t, tmod; - SMALLUNSGN mod; + Term t, mod; PredEntry *pe; - tmod = Deref(ARG2); - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) { + mod = Deref(ARG2); + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return(FALSE); - } else { - mod = Yap_LookupModule(tmod); } t = Deref(ARG1); if (IsAtomTerm(t)) { @@ -447,17 +444,14 @@ void answer_to_stdout(char *answer) { #ifdef TABLING static int p_table(void) { - Term t, tmod; - SMALLUNSGN mod; + Term t, mod; PredEntry *pe; tab_ent_ptr te; sg_node_ptr sg_node; tmod = Deref(ARG2); - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) { + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return (FALSE); - } else { - mod = Yap_LookupModule(tmod); } t = Deref(ARG1); if (IsAtomTerm(t)) { @@ -479,18 +473,15 @@ int p_table(void) { static int p_abolish_trie(void) { - Term t, tmod; - SMALLUNSGN mod; + Term t, mod; tab_ent_ptr tab_ent; sg_hash_ptr hash; sg_node_ptr sg_node; UInt arity; - tmod = Deref(ARG2); - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) { + mod = Deref(ARG2); + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return (FALSE); - } else { - mod = Yap_LookupModule(tmod); } t = Deref(ARG1); if (IsAtomTerm(t)) { @@ -518,17 +509,14 @@ int p_abolish_trie(void) { static int p_show_trie(void) { - Term t1, t2, tmod; - SMALLUNSGN mod; + Term t1, t2, mod; PredEntry *pe; Atom at; UInt arity; - tmod = Deref(ARG2); - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) { + mod = Deref(ARG2); + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return (FALSE); - } else { - mod = Yap_LookupModule(tmod); } t1 = Deref(ARG1); if (IsAtomTerm(t1)) { @@ -564,17 +552,14 @@ int p_show_trie(void) { static int p_resume_trie(void) { - Term t, tmod; - SMALLUNSGN mod; + Term t, mod; PredEntry *pe; Atom at; int arity; - tmod = Deref(ARG2); - if (IsVarTerm(tmod) || !IsAtomTerm(tmod)) { + mod = Deref(ARG2); + if (IsVarTerm(mod) || !IsAtomTerm(mod)) { return (FALSE); - } else { - mod = Yap_LookupModule(tmod); } t = Deref(ARG1); if (IsAtomTerm(t)) { diff --git a/include/YapInterface.h b/include/YapInterface.h index bde099434..e506aff31 100644 --- a/include/YapInterface.h +++ b/include/YapInterface.h @@ -308,7 +308,7 @@ extern X_API void PROTO(YAP_RecoverSlots,(int)); extern X_API void PROTO(YAP_Throw,(YAP_Term)); /* int YAP_LookupModule() */ -extern X_API int PROTO(YAP_LookupModule,(YAP_Term)); +#define YAP_LookupModule(T) (T) /* int YAP_ModuleName() */ extern X_API YAP_Term PROTO(YAP_ModuleName,(int)); diff --git a/m4/Yatom.h.m4 b/m4/Yatom.h.m4 index 9f35a7139..4ce7390f9 100644 --- a/m4/Yatom.h.m4 +++ b/m4/Yatom.h.m4 @@ -64,7 +64,7 @@ Inline(IsFunctorProperty, PropFlags, int, flags, (flags == FunctorProperty) ) typedef struct { Prop NextOfPE; /* used to chain properties */ PropFlags KindOfPE; /* kind of property */ - SMALLUNSGN IndexOfMod; /* indec in module table */ + SMALLUNSGN IndexOfMod; /* index in module table */ } ModEntry; #if USE_OFFSETS_IN_PROPS @@ -237,7 +237,7 @@ typedef struct pred_entry { #ifdef TABLING tab_ent_ptr TableOfPred; #endif /* TABLING */ - SMALLUNSGN ModuleOfPred; /* module for this definition */ + Term ModuleOfPred; /* module for this definition */ /* This must be at an odd number of cells, otherwise it will not be aligned on RISC machines */ profile_data StatisticsForPred; /* enable profiling for predicate */ @@ -342,7 +342,7 @@ typedef struct struct_dbentry { #endif DBRef First; /* first DBase entry */ DBRef Last; /* last DBase entry */ - SMALLUNSGN ModuleOfDB; /* module for this definition */ + Term ModuleOfDB; /* module for this definition */ DBRef F0,L0; /* everyone */ } DBEntry; typedef DBEntry *DBProp; @@ -358,7 +358,7 @@ typedef struct { #endif DBRef First; /* first DBase entry */ DBRef Last; /* last DBase entry */ - SMALLUNSGN ModuleOfDB; /* module for this definition */ + Term ModuleOfDB; /* module for this definition */ Int NOfEntries; /* age counter */ DBRef Index; /* age counter */ } LogUpdDBEntry; @@ -400,7 +400,7 @@ typedef struct { #if defined(YAPOR) || defined(THREADS) rwlock_t BBRWLock; /* a read-write lock to protect the entry */ #endif - SMALLUNSGN ModuleOfBB; /* module for this definition */ + Term ModuleOfBB; /* module for this definition */ } BlackBoardEntry; typedef BlackBoardEntry *BBProp; @@ -509,7 +509,7 @@ EXTERN inline PredEntry *STD_PROTO(Yap_GetThreadPred, (PredEntry *)); #endif EXTERN inline Prop -PredPropByFunc(Functor f, SMALLUNSGN cur_mod) +PredPropByFunc(Functor f, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; @@ -537,7 +537,7 @@ PredPropByFunc(Functor f, SMALLUNSGN cur_mod) } EXTERN inline Prop -PredPropByAtom(Atom at, SMALLUNSGN cur_mod) +PredPropByAtom(Atom at, Term cur_mod) /* get predicate entry for ap/arity; create it if neccessary. */ { Prop p0; diff --git a/pl/arith.yap b/pl/arith.yap index 15a150059..05eb75d20 100644 --- a/pl/arith.yap +++ b/pl/arith.yap @@ -85,14 +85,12 @@ do_not_compile_expressions :- set_value('$c_arith',[]). '$do_c_built_metacall'(G1, Mod, call(Mod:G1)) :- var(G1), var(Mod), !. -'$do_c_built_metacall'(G1, Mod, '$execute_in_mod'(G1,MNum)) :- - var(G1), atom(Mod), !, - '$module_number'(Mod,MNum). +'$do_c_built_metacall'(G1, Mod, '$execute_in_mod'(G1,Mod)) :- + var(G1), atom(Mod), !. '$do_c_built_metacall'(Mod:G1, _, call(Mod:G1)) :- !, '$do_c_built_metacall'(G1, Mod, OUT). -'$do_c_built_metacall'(G1, Mod, '$execute_in_mod'(G1,MNum)) :- - atom(Mod), !, - '$module_number'(Mod,MNum). +'$do_c_built_metacall'(G1, Mod, '$execute_in_mod'(G1,Mod)) :- + atom(Mod), !. '$do_c_built_metacall'(G1, Mod, call(Mod:G1)). diff --git a/pl/corout.yap b/pl/corout.yap index 776f619ce..0ba8f661d 100644 --- a/pl/corout.yap +++ b/pl/corout.yap @@ -83,7 +83,6 @@ '$undefp'([Module1|Continuation]). '$execute_continuation'(Continuation, Mod) :- % do not do meta-expansion nor any fancy stuff. -'$module_number'(Mod,_), '$execute0'(Continuation, Mod). diff --git a/pl/init.yap b/pl/init.yap index 8748c1154..157044919 100644 --- a/pl/init.yap +++ b/pl/init.yap @@ -134,4 +134,3 @@ library_directory(D) :- getenv('YAPSHAREDIR', D). :- get_value(system_library_directory,D), assert(library_directory(D)). -