simplify module access

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@981 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2004-02-12 12:37:12 +00:00
parent 08fe01ad98
commit 6662ca157e
31 changed files with 391 additions and 416 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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) {

16
C/bb.c
View File

@ -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 {

View File

@ -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) {

174
C/cdmgr.c
View File

@ -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)) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;
}

View File

@ -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]);

View File

@ -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;

View File

@ -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();

View File

@ -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) {

View File

@ -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;
}

View File

@ -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)) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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_;

View File

@ -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));

View File

@ -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;

View File

@ -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 */

View File

@ -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 *));

View File

@ -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)) {

View File

@ -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)) {

View File

@ -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));

View File

@ -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;

View File

@ -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)).

View File

@ -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).

View File

@ -134,4 +134,3 @@ library_directory(D) :-
getenv('YAPSHAREDIR', D).
:- get_value(system_library_directory,D), assert(library_directory(D)).