Modules now are terms, not integers, even for meta-calls
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@993 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
860ea6d115
commit
41908d49cf
14
C/absmi.c
14
C/absmi.c
@ -6399,8 +6399,8 @@ Yap_absmi(int inp)
|
|||||||
READ_UNLOCK(pe->PRWLock);
|
READ_UNLOCK(pe->PRWLock);
|
||||||
FAIL();
|
FAIL();
|
||||||
}
|
}
|
||||||
READ_UNLOCK(pe->PRWLock);
|
|
||||||
d0 = pe->ArityOfPE;
|
d0 = pe->ArityOfPE;
|
||||||
|
READ_UNLOCK(pe->PRWLock);
|
||||||
if (d0 == 0) {
|
if (d0 == 0) {
|
||||||
H[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
|
H[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
|
||||||
}
|
}
|
||||||
@ -6441,6 +6441,10 @@ Yap_absmi(int inp)
|
|||||||
H[0] = Yap_Module_Name(pe);
|
H[0] = Yap_Module_Name(pe);
|
||||||
ARG1 = (Term) AbsPair(H);
|
ARG1 = (Term) AbsPair(H);
|
||||||
H += 2;
|
H += 2;
|
||||||
|
#ifdef LOW_LEVEL_TRACER
|
||||||
|
if (Yap_do_low_level_trace)
|
||||||
|
low_level_trace(enter_pred,UndefCode,XREGS+1);
|
||||||
|
#endif /* LOW_LEVEL_TRACE */
|
||||||
}
|
}
|
||||||
|
|
||||||
PREG = UndefCode->CodeOfPred;
|
PREG = UndefCode->CodeOfPred;
|
||||||
@ -11330,7 +11334,7 @@ Yap_absmi(int inp)
|
|||||||
execute_comma_nvar:
|
execute_comma_nvar:
|
||||||
if (IsAtomTerm(d1)) {
|
if (IsAtomTerm(d1)) {
|
||||||
E_YREG[-EnvSizeInCells-2] = MkIntegerTerm((Int)PredPropByAtom(AtomOfTerm(d1),mod));
|
E_YREG[-EnvSizeInCells-2] = MkIntegerTerm((Int)PredPropByAtom(AtomOfTerm(d1),mod));
|
||||||
E_YREG[-EnvSizeInCells-3] = MkIntTerm(mod);
|
E_YREG[-EnvSizeInCells-3] = mod;
|
||||||
} else if (IsApplTerm(d1)) {
|
} else if (IsApplTerm(d1)) {
|
||||||
Functor f = FunctorOfTerm(d1);
|
Functor f = FunctorOfTerm(d1);
|
||||||
if (IsExtensionFunctor(f)) {
|
if (IsExtensionFunctor(f)) {
|
||||||
@ -11338,7 +11342,7 @@ Yap_absmi(int inp)
|
|||||||
} else {
|
} else {
|
||||||
if (f == FunctorModule) goto execute_metacall;
|
if (f == FunctorModule) goto execute_metacall;
|
||||||
E_YREG[-EnvSizeInCells-2] = MkIntegerTerm((Int)PredPropByFunc(f,mod));
|
E_YREG[-EnvSizeInCells-2] = MkIntegerTerm((Int)PredPropByFunc(f,mod));
|
||||||
E_YREG[-EnvSizeInCells-3] = MkIntTerm(mod);
|
E_YREG[-EnvSizeInCells-3] = mod;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
goto execute_metacall;
|
goto execute_metacall;
|
||||||
@ -11500,7 +11504,7 @@ Yap_absmi(int inp)
|
|||||||
#endif /* FROZEN_STACKS */
|
#endif /* FROZEN_STACKS */
|
||||||
arity = pen->ArityOfPE;
|
arity = pen->ArityOfPE;
|
||||||
if (pen->PredFlags & MetaPredFlag) {
|
if (pen->PredFlags & MetaPredFlag) {
|
||||||
mod = IntOfTerm(pt0[-EnvSizeInCells-3]);
|
mod = pt0[-EnvSizeInCells-3];
|
||||||
if (pen->FunctorOfPred == FunctorComma) {
|
if (pen->FunctorOfPred == FunctorComma) {
|
||||||
SREG = RepAppl(d0);
|
SREG = RepAppl(d0);
|
||||||
BEGD(d1);
|
BEGD(d1);
|
||||||
@ -11535,7 +11539,7 @@ Yap_absmi(int inp)
|
|||||||
E_YREG[E_DEPTH] = DEPTH;
|
E_YREG[E_DEPTH] = DEPTH;
|
||||||
#endif /* DEPTH_LIMIT */
|
#endif /* DEPTH_LIMIT */
|
||||||
E_YREG[-EnvSizeInCells-1] = d1;
|
E_YREG[-EnvSizeInCells-1] = d1;
|
||||||
E_YREG[-EnvSizeInCells-3] = MkIntTerm(mod);
|
E_YREG[-EnvSizeInCells-3] = mod;
|
||||||
ENV = E_YREG;
|
ENV = E_YREG;
|
||||||
E_YREG -= EnvSizeInCells+3;
|
E_YREG -= EnvSizeInCells+3;
|
||||||
d0 = SREG[1];
|
d0 = SREG[1];
|
||||||
|
Reference in New Issue
Block a user