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