fixes to reclaim space on error, allow compilation whitout GMP, and

improve docs.


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1493 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2006-01-02 23:19:10 +00:00
parent 72214cb08c
commit 772a6ae805
3 changed files with 20 additions and 5 deletions

View File

@ -228,6 +228,10 @@ p_mod(Term t1, Term t2 E_ARGS)
RERROR();
}
case double_e:
#if USE_GMP
if (bt2 == big_int_e)
mpz_clear(v2.big);
#endif
Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "mod/2");
P = (yamop *)FAILCODE;
RERROR();
@ -404,6 +408,10 @@ p_rem(Term t1, Term t2 E_ARGS)
RERROR();
}
case double_e:
#if USE_GMP
if (bt2 == big_int_e)
mpz_clear(v2.big);
#endif
Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "mod/2");
P = (yamop *)FAILCODE;
RERROR();
@ -795,6 +803,10 @@ p_xor(Term t1, Term t2 E_ARGS)
RERROR();
}
case double_e:
#if USE_GMP
if (bt2 == big_int_e)
mpz_clear(v2.big);
#endif
Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "#/2");
P = (yamop *)FAILCODE;
RERROR();
@ -1394,6 +1406,10 @@ p_gcd(Term t1, Term t2 E_ARGS)
RERROR();
}
case double_e:
#if USE_GMP
if (bt2 == big_int_e)
mpz_clear(v2.big);
#endif
Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "gcd/2");
P = (yamop *)FAILCODE;
RERROR();

View File

@ -1214,9 +1214,9 @@ sll_ovflw(Int x,Int i)
inline static E_FUNC
do_sll(Int i, Int j E_ARGS)
{
#if USE_GMP
Int x = (8*sizeof(CELL)-2)-j;
#if USE_GMP
if (x < 0||
sll_ovflw(x,i)) {
MP_INT *new = TMP_BIG();
@ -1226,11 +1226,7 @@ do_sll(Int i, Int j E_ARGS)
RBIG(new);
}
#endif
#ifdef BEAM
RINT(i << j);
#else
RINT(i << j);
#endif
}
/*
@ -1517,8 +1513,10 @@ p_slr(Term t1, Term t2 E_ARGS)
RERROR();
}
case double_e:
#if USE_GMP
if (bt2 == big_int_e)
mpz_clear(v2.big);
#endif
Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), ">>/2");
P = (yamop *)FAILCODE;
RERROR();

View File

@ -10738,6 +10738,7 @@ p_print_bignum(void)
YAP_BigNumOfTerm(YAP_ARG1, mz);
gmp_printf("Shows up as %Zd\n", mz);
mpz_clear(mz);
return TRUE;
}
@end example