make sure we separate betwen async exceptions and synchroneous.

This commit is contained in:
Vítor Santos Costa
2010-12-04 19:05:13 +00:00
parent c6f41e2970
commit 8db05c883b
7 changed files with 36 additions and 4 deletions

View File

@@ -480,6 +480,7 @@ X_API int STD_PROTO(YAP_RecoverSlots,(int));
X_API Int STD_PROTO(YAP_ArgsToSlots,(int));
X_API void STD_PROTO(YAP_SlotsToArgs,(int, Int));
X_API void STD_PROTO(YAP_Throw,(Term));
X_API void STD_PROTO(YAP_AsyncThrow,(Term));
X_API void STD_PROTO(YAP_Halt,(int));
X_API Term *STD_PROTO(YAP_TopOfLocalStack,(void));
X_API void *STD_PROTO(YAP_Predicate,(Atom,UInt,Term));
@@ -2833,6 +2834,16 @@ YAP_Throw(Term t)
RECOVER_MACHINE_REGS();
}
X_API void
YAP_AsyncThrow(Term t)
{
BACKUP_MACHINE_REGS();
Yap_PrologMode |= AsyncIntMode;
Yap_JumpToEnv(t);
Yap_PrologMode &= ~AsyncIntMode;
RECOVER_MACHINE_REGS();
}
X_API void
YAP_Halt(int i)
{