From a7e6c5672e3169cdd81827a7f8282a1612b2e207 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 4 Jan 2010 21:16:42 -0200 Subject: [PATCH] try to speed up eval a bit. --- C/eval.c | 4 ++-- H/eval.h | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/C/eval.c b/C/eval.c index f8f2ac491..bcc7721eb 100644 --- a/C/eval.c +++ b/C/eval.c @@ -120,9 +120,9 @@ Eval(Term t) } Term -Yap_Eval(Term t) +Yap_InnerEval(Term t) { - return Yap_FoundArithError(Eval(t), t); + return Eval(t); } #ifdef BEAM diff --git a/H/eval.h b/H/eval.h index 5e6bb8001..621047438 100644 --- a/H/eval.h +++ b/H/eval.h @@ -169,16 +169,24 @@ Term STD_PROTO(Yap_eval_atom,(Int)); Term STD_PROTO(Yap_eval_unary,(Int,Term)); Term STD_PROTO(Yap_eval_binary,(Int,Term,Term)); -Term STD_PROTO(Yap_Eval,(Term)); +Term STD_PROTO(Yap_InnerEval,(Term)); Int STD_PROTO(Yap_ArithError,(yap_error_number,Term,char *msg, ...)); +inline EXTERN Term +Yap_Eval(Term t) +{ + if (t == 0L || !IsVarTerm(t) || IsNumTerm(t)) + return t; + return Yap_InnerEval(t); +} + inline static Term Yap_FoundArithError(Term t, Term inp) { if (Yap_Error_TYPE) { Yap_Error(Yap_Error_TYPE, (inp ? inp : Yap_Error_Term), Yap_ErrorMessage); - P = FAILCODE; - return 0L; + P = FAILCODE; + return 0L; } return t; }