[Commit] nickle ChangeLog,1.87,1.88 value.c,1.47,1.48
Keith Packard
commit at keithp.com
Sat Oct 9 15:38:31 PDT 2004
- Previous message: [Commit] twin ChangeLog, 1.19, 1.20 Makefile.am, 1.8, 1.9 twin.h,
1.14, 1.15 twin_pattern.c, NONE, 1.1 twin_pixmap.c, 1.4,
1.5 twin_screen.c, 1.6, 1.7 twin_window.c, 1.1, 1.2 xtwin.c,
1.18, 1.19
- Next message: [Commit] nickle ChangeLog,1.88,1.89 gram.y,1.141,1.142
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Committed by: keithp
Update of /local/src/CVS/nickle
In directory home.keithp.com:/tmp/cvs-serv14417
Modified Files:
ChangeLog value.c
Log Message:
2004-10-09 Keith Packard <keithp at keithp.com>
* value.c: (ShiftL), (ShiftR):
Optimize shifts of small ints by small ints
Index: ChangeLog
===================================================================
RCS file: /local/src/CVS/nickle/ChangeLog,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -d -r1.87 -r1.88
--- ChangeLog 22 Sep 2004 16:51:30 -0000 1.87
+++ ChangeLog 9 Oct 2004 22:38:28 -0000 1.88
@@ -1,3 +1,8 @@
+2004-10-09 Keith Packard <keithp at keithp.com>
+
+ * value.c: (ShiftL), (ShiftR):
+ Optimize shifts of small ints by small ints
+
2004-09-22 Bart Massey <bart at cs.pdx.edu>
* gram.y:
Index: value.c
===================================================================
RCS file: /local/src/CVS/nickle/value.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- value.c 28 May 2004 01:26:38 -0000 1.47
+++ value.c 9 Oct 2004 22:38:28 -0000 1.48
@@ -429,11 +429,25 @@
if (ValueIsInt(bv))
{
Sign sign = Positive;
- if (Negativep (av))
- sign = Negative;
- av = Reduce (NewInteger (sign,
- NaturalLsl (IntegerMag(IntegerRep.promote (av,0)),
- ValueInt(bv))));
+ int b = ValueInt(bv);
+
+ if (ValueIsInt (av) && b < NICKLE_INT_BITS)
+ {
+ signed_digit rd = (signed_digit) ValueInt (av) << b;
+
+ if (rd > (signed_digit) MAX_NICKLE_INT || rd < (signed_digit) MIN_NICKLE_INT)
+ av = NewSignedDigitInteger (rd);
+ else
+ av = NewInt ((int) rd);
+ }
+ else
+ {
+ if (Negativep (av))
+ sign = Negative;
+ av = Reduce (NewInteger (sign,
+ NaturalLsl (IntegerMag(IntegerRep.promote (av,0)),
+ ValueInt(bv))));
+ }
}
else
{
@@ -460,14 +474,23 @@
if (ValueIsInt(bv))
{
Sign sign = Positive;
- if (Negativep (av))
+ int b = ValueInt(bv);
+
+ if (ValueIsInt (av) && b < NICKLE_INT_BITS)
{
- av = Minus (av, Minus (ShiftL (One, bv), One));
- sign = Negative;
+ av = NewInt (ValueInt (av) >> b);
+ }
+ else
+ {
+ if (Negativep (av))
+ {
+ av = Minus (av, Minus (ShiftL (One, bv), One));
+ sign = Negative;
+ }
+ av = Reduce (NewInteger (sign,
+ NaturalRsl (IntegerMag(IntegerRep.promote (av,0)),
+ b)));
}
- av = Reduce (NewInteger (sign,
- NaturalRsl (IntegerMag(IntegerRep.promote (av,0)),
- ValueInt(bv))));
}
else
{
- Previous message: [Commit] twin ChangeLog, 1.19, 1.20 Makefile.am, 1.8, 1.9 twin.h,
1.14, 1.15 twin_pattern.c, NONE, 1.1 twin_pixmap.c, 1.4,
1.5 twin_screen.c, 1.6, 1.7 twin_window.c, 1.1, 1.2 xtwin.c,
1.18, 1.19
- Next message: [Commit] nickle ChangeLog,1.88,1.89 gram.y,1.141,1.142
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Commit
mailing list