Fix asserta_static

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@882 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2003-10-02 18:20:11 +00:00
parent 57c6e21bcd
commit cf148cd0cb
2 changed files with 21 additions and 4 deletions

View File

@ -818,8 +818,13 @@ asserta_stat_clause(PredEntry *p, yamop *cp, int spy_flag)
}
}
p->cs.p_code.FirstClause = cp;
if (!(p->PredFlags & IndexedPredFlag)) {
p->cs.p_code.TrueCodeOfPred = cp;
if (p->PredFlags & SpiedPredFlag) {
p->OpcodeOfPred = Yap_opcode(_spy_pred);
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
} else if (!(p->PredFlags & IndexedPredFlag)) {
p->OpcodeOfPred = INDEX_OPCODE;
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
}
p->cs.p_code.LastClause->u.ld.d = cp;
}

View File

@ -3314,16 +3314,28 @@ yamop *
Yap_PredIsIndexable(PredEntry *ap)
{
yamop *indx_out;
int setjres;
Yap_Error_Size = 0;
if (setjmp(Yap_CompilerBotch) == 3) {
if ((setjres = setjmp(Yap_CompilerBotch)) == 3) {
restore_machine_regs();
Yap_gcl(Yap_Error_Size, ap->ArityOfPE, ENV, CP);
} else if (setjres == 2) {
restore_machine_regs();
if (!Yap_growheap(FALSE, Yap_Error_Size)) {
Yap_Error(SYSTEM_ERROR, TermNil, Yap_ErrorMessage);
return FAILCODE;
}
} else if (setjres != 0) {
if (!Yap_growheap(FALSE, Yap_Error_Size)) {
Yap_Error(SYSTEM_ERROR, TermNil, Yap_ErrorMessage);
return FAILCODE;
}
}
restart_index:
Yap_ErrorMessage = NULL;
if (compile_index(ap) == (UInt)FAILCODE) {
return NULL;
return FAILCODE;
}
#ifdef DEBUG
if (Yap_Option['i' - 'a' + 1]) {