1.1 --- a/src/jdk/nashorn/internal/ir/LiteralNode.java Tue Jul 02 13:50:19 2013 +0200 1.2 +++ b/src/jdk/nashorn/internal/ir/LiteralNode.java Tue Jul 02 14:50:39 2013 +0200 1.3 @@ -621,8 +621,10 @@ 1.4 elementType = Type.INT; 1.5 analyzeElements(); 1.6 1.7 - if (elementType == Type.INT) { 1.8 + if (elementType.isInteger()) { 1.9 presetIntArray(); 1.10 + } else if (elementType.isLong()) { 1.11 + presetLongArray(); 1.12 } else if (elementType.isNumeric()) { 1.13 presetNumberArray(); 1.14 } else { 1.15 @@ -649,6 +651,25 @@ 1.16 postsets = Arrays.copyOf(computed, nComputed); 1.17 } 1.18 1.19 + private void presetLongArray() { 1.20 + final long[] array = new long[value.length]; 1.21 + final int[] computed = new int[value.length]; 1.22 + int nComputed = 0; 1.23 + 1.24 + for (int i = 0; i < value.length; i++) { 1.25 + final Object element = objectAsConstant(value[i]); 1.26 + 1.27 + if (element instanceof Number) { 1.28 + array[i] = ((Number)element).longValue(); 1.29 + } else { 1.30 + computed[nComputed++] = i; 1.31 + } 1.32 + } 1.33 + 1.34 + presets = array; 1.35 + postsets = Arrays.copyOf(computed, nComputed); 1.36 + } 1.37 + 1.38 private void presetNumberArray() { 1.39 final double[] array = new double[value.length]; 1.40 final int[] computed = new int[value.length]; 1.41 @@ -746,6 +767,8 @@ 1.42 public Type getType() { 1.43 if (elementType.isInteger()) { 1.44 return Type.INT_ARRAY; 1.45 + } else if (elementType.isLong()) { 1.46 + return Type.LONG_ARRAY; 1.47 } else if (elementType.isNumeric()) { 1.48 return Type.NUMBER_ARRAY; 1.49 } else {