Merge branch 'master' of gitosis@yap.dcc.fc.up.pt:yap-6

This commit is contained in:
Vítor Santos Costa II
2010-03-12 18:03:41 +00:00
11 changed files with 58 additions and 106 deletions

View File

@@ -3510,6 +3510,7 @@ do_pass(int pass_no, yamop **entry_codep, int assembling, int *clause_has_blobsp
if (!ystop_found &&
cip->cpc->nextInst != NULL &&
(cip->cpc->nextInst->op == mark_initialised_pvars_op ||
cip->cpc->nextInst->op == mark_live_regs_op ||
cip->cpc->nextInst->op == blob_op)) {
ystop_found = TRUE;
code_p = a_il((CELL)*entry_codep, _Ystop, code_p, pass_no, cip);

View File

@@ -901,17 +901,7 @@ p_unary_op_as_integer(void)
ExpEntry *p;
if (EndOfPAEntr(p = RepExpProp(Yap_GetExpProp(name, 1)))) {
Term ti[2];
/* error */
ti[0] = t;
ti[1] = MkIntTerm(1);
t = Yap_MkApplTerm(FunctorSlash, 2, ti);
Yap_Error(TYPE_ERROR_EVALUABLE, t,
"functor %s/%d for arithmetic expression",
RepAtom(name)->StrOfAE,2);
P = FAILCODE;
return(FALSE);
return Yap_unify(ARG1,ARG2);
}
return Yap_unify_constant(ARG2,MkIntTerm(p->FOfEE));
}

View File

@@ -1242,17 +1242,7 @@ p_binary_op_as_integer(void)
ExpEntry *p;
if (EndOfPAEntr(p = RepExpProp(Yap_GetExpProp(name, 2)))) {
Term ti[2];
/* error */
ti[0] = t;
ti[1] = MkIntTerm(1);
t = Yap_MkApplTerm(FunctorSlash, 2, ti);
Yap_Error(TYPE_ERROR_EVALUABLE, t,
"functor %s/%d for arithmetic expression",
RepAtom(name)->StrOfAE,2);
P = FAILCODE;
return(FALSE);
return Yap_unify(ARG1,ARG2);
}
return Yap_unify_constant(ARG2,MkIntTerm(p->FOfEE));
}

View File

@@ -643,8 +643,11 @@ p_acomp(void)
{ /* $a_compare(?R,+X,+Y) */
Term t1 = Deref(ARG1);
Term t2 = Deref(ARG2);
Int out;
return a_cmp(t1, t2);
out = a_cmp(t1, t2);
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out;
}
static Int
@@ -675,42 +678,48 @@ a_eq(Term t1, Term t2)
}
}
out = a_cmp(t1,t2);
return !ArithError && (out == 0);
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out == 0;
}
static Int
a_dif(Term t1, Term t2)
{
Int out = a_cmp(Deref(t1),Deref(t2));
return !ArithError && out != 0;
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out != 0;
}
static Int
a_gt(Term t1, Term t2)
{ /* A > B */
Int out = a_cmp(Deref(t1),Deref(t2));
return !ArithError && out > 0;
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out > 0;
}
static Int
a_ge(Term t1, Term t2)
{ /* A >= B */
Int out = a_cmp(Deref(t1),Deref(t2));
return !ArithError && out >= 0;
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out >= 0;
}
static Int
a_lt(Term t1, Term t2)
{ /* A < B */
Int out = a_cmp(Deref(t1),Deref(t2));
return !ArithError && out < 0;
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out < 0;
}
static Int
a_le(Term t1, Term t2)
{ /* A <= B */
Int out = a_cmp(Deref(t1),Deref(t2));
return !ArithError && out <= 0;
if (ArithError) { Yap_Error(Yap_Error_TYPE, Yap_Error_Term, Yap_ErrorMessage); return FALSE; }
return out <= 0;
}