| Bill Allombert on Fri, 12 Mar 2004 10:35:22 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| marginal speed up of the GP interpretor |
Hello,
Here a patch that (is supposed to) make a marginal speed up
in the interpretor.
A better way to proceed would be to add a return_type field to entree,
store the value at installation time and discard the matching letter
from the prototype. This is the way gp2c handle it.
Cheers,
Bill.
PS:
I have made a third snapshot of the new parser experiment.
<http://pari.math.u-bordeaux.fr/~bill/pari-2.2.8.bill-3.tar.bz2>
Index: src/language/anal.c
===================================================================
RCS file: /home/cvs/pari/src/language/anal.c,v
retrieving revision 1.157
diff -u -r1.157 anal.c
--- src/language/anal.c 26 Jan 2004 09:25:09 -0000 1.157
+++ src/language/anal.c 11 Mar 2004 21:51:10 -0000
@@ -1831,7 +1831,8 @@
noparen=1; /* no argument, but valence is ok */
}
/* return type */
- if (*s == 'v') { ret = RET_VOID; s++; }
+ if (*s < 'a') ret = RET_GEN;
+ else if (*s == 'v') { ret = RET_VOID; s++; }
else if (*s == 'i') { ret = RET_INT; s++; }
else if (*s == 'l') { ret = RET_LONG; s++; }
else ret = RET_GEN;
@@ -2011,11 +2012,11 @@
err(talker2, "can't derive this", mark.identifier, mark.start);
res = num_deriv(call, argvec);
}
else switch (ret)
{
- default: /* case RET_GEN: */
+ case RET_GEN:
res = ((PFGEN)call)(_ARGS_);
break;