aboutsummaryrefslogtreecommitdiffstats
path: root/insns.def
diff options
context:
space:
mode:
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def11
1 files changed, 6 insertions, 5 deletions
diff --git a/insns.def b/insns.def
index 5e0f49b750..9fc4fcc9d4 100644
--- a/insns.def
+++ b/insns.def
@@ -1677,8 +1677,8 @@ opt_plus
val = (recv + (obj & (~1)));
if ((~(recv ^ obj) & (recv ^ val)) &
((VALUE)0x01 << ((sizeof(VALUE) * CHAR_BIT) - 1))) {
- val = rb_big_plus(rb_int2big(FIX2INT(recv)),
- rb_int2big(FIX2INT(obj)));
+ val = rb_big_plus(rb_int2big(FIX2LONG(recv)),
+ rb_int2big(FIX2LONG(obj)));
}
#else
long a, b, c;
@@ -2304,9 +2304,10 @@ opt_succ
const VALUE obj = INT2FIX(1);
/* fixnum + INT2FIX(1) */
val = (recv + (obj & (~1)));
- if ((~(recv ^ obj) & (recv ^ val)) & 0x80000000) {
- val = rb_big_plus(rb_int2big(FIX2INT(recv)),
- rb_int2big(FIX2INT(obj)));
+ if ((~(recv ^ obj) & (recv ^ val)) &
+ ((VALUE)0x01 << ((sizeof(VALUE) * CHAR_BIT) - 1))) {
+ val = rb_big_plus(rb_int2big(FIX2LONG(recv)),
+ rb_int2big(FIX2LONG(obj)));
}
}
else {