< prev index next >

src/jdk/nashorn/internal/codegen/FoldConstants.java

Print this page

        

*** 305,317 **** } final Type widest = Type.widest(lhs.getType(), rhs.getType()); boolean isInteger = widest.isInteger(); ! boolean isLong = widest.isLong(); ! ! double value; switch (parent.tokenType()) { case DIV: value = lhs.getNumber() / rhs.getNumber(); break; --- 305,315 ---- } final Type widest = Type.widest(lhs.getType(), rhs.getType()); boolean isInteger = widest.isInteger(); ! final double value; switch (parent.tokenType()) { case DIV: value = lhs.getNumber() / rhs.getNumber(); break;
*** 334,344 **** break; case SUB: value = lhs.getNumber() - rhs.getNumber(); break; case SHR: ! return LiteralNode.newInstance(token, finish, JSType.toUint32(lhs.getInt32() >>> rhs.getInt32())); case SAR: return LiteralNode.newInstance(token, finish, lhs.getInt32() >> rhs.getInt32()); case SHL: return LiteralNode.newInstance(token, finish, lhs.getInt32() << rhs.getInt32()); case BIT_XOR: --- 332,343 ---- break; case SUB: value = lhs.getNumber() - rhs.getNumber(); break; case SHR: ! final long result = JSType.toUint32(lhs.getInt32() >>> rhs.getInt32()); ! return LiteralNode.newInstance(token, finish, JSType.isRepresentableAsInt(result) ? (int) result : (double) result); case SAR: return LiteralNode.newInstance(token, finish, lhs.getInt32() >> rhs.getInt32()); case SHL: return LiteralNode.newInstance(token, finish, lhs.getInt32() << rhs.getInt32()); case BIT_XOR:
*** 366,381 **** default: return null; } isInteger &= JSType.isStrictlyRepresentableAsInt(value); - isLong &= JSType.isStrictlyRepresentableAsLong(value); if (isInteger) { return LiteralNode.newInstance(token, finish, (int)value); - } else if (isLong) { - return LiteralNode.newInstance(token, finish, (long)value); } return LiteralNode.newInstance(token, finish, value); } } --- 365,377 ----
< prev index next >