make Error Handler call throw in C, instead of doing messy

Prolog code.


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@335 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2002-01-29 05:37:31 +00:00
parent a60e61f507
commit 28128ed29c
6 changed files with 346 additions and 57 deletions

View File

@@ -1749,24 +1749,10 @@ Error (yap_error_number type, Term where, char *format,...)
}
nt[1] = MkAtomTerm(LookupAtom(p));
if (serious) {
choiceptr newb;
PredEntry *p = PredThrow;
CreepFlag = CalculateStackGap();
ASP--;
newb = ((choiceptr)ASP)-1;
newb->cp_h = H;
newb->cp_tr = TR;
newb->cp_cp = CP;
newb->cp_ap = (yamop *)(p->CodeOfPred);
newb->cp_env = ENV;
newb->cp_b = B;
if (type == PURE_ABORT)
ARG1 = newb->cp_a1 = MkAtomTerm(LookupAtom("abort"));
JumpToEnv(MkAtomTerm(LookupAtom("abort")));
else
ARG1 = newb->cp_a1 = MkApplTerm(fun, 2, nt);
B = newb;
ASP = YENV = (CELL *)B;
JumpToEnv(CopyTerm(MkApplTerm(fun, 2, nt)));
P = (yamop *)FAILCODE;
}
PrologMode &= ~InErrorMode;