< prev index next >

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

Print this page
rev 1641 : 8144131: ArrayData.getInt implementations do not convert to int32

@@ -232,17 +232,21 @@
 
             switch (parent.tokenType()) {
             case ADD:
                 if (rhsInteger) {
                     literalNode = LiteralNode.newInstance(token, finish, rhs.getInt32());
+                } else if (rhsType.isLong()) {
+                    literalNode = LiteralNode.newInstance(token, finish, rhs.getLong());
                 } else {
                     literalNode = LiteralNode.newInstance(token, finish, rhs.getNumber());
                 }
                 break;
             case SUB:
                 if (rhsInteger && rhs.getInt32() != 0) { // @see test/script/basic/minuszero.js
                     literalNode = LiteralNode.newInstance(token, finish, -rhs.getInt32());
+                } else if (rhsType.isLong() && rhs.getLong() != 0L) {
+                    literalNode = LiteralNode.newInstance(token, finish, -rhs.getLong());
                 } else {
                     literalNode = LiteralNode.newInstance(token, finish, -rhs.getNumber());
                 }
                 break;
             case NOT:
< prev index next >