< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/arrays/ArrayData.java

Print this page

        

@@ -50,13 +50,10 @@
  */
 public abstract class ArrayData {
     /** Minimum chunk size for underlying arrays */
     protected static final int CHUNK_SIZE = 32;
 
-    /** Mask for getting a chunk */
-    protected static final int CHUNK_MASK = CHUNK_SIZE - 1;
-
     /** Untouched data - still link callsites as IntArrayData, but expands to
      *  a proper ArrayData when we try to write to it */
     public static final ArrayData EMPTY_ARRAY = new UntouchedArrayData();
 
     /**

@@ -162,30 +159,20 @@
         public ArrayData set(final int index, final int value, final boolean strict) {
             return toRealArrayData(index).set(index, value, strict);
         }
 
         @Override
-        public ArrayData set(final int index, final long value, final boolean strict) {
-            return toRealArrayData(index).set(index, value, strict);
-        }
-
-        @Override
         public ArrayData set(final int index, final double value, final boolean strict) {
             return toRealArrayData(index).set(index, value, strict);
         }
 
         @Override
         public int getInt(final int index) {
             throw new ArrayIndexOutOfBoundsException(index); //empty
         }
 
         @Override
-        public long getLong(final int index) {
-            throw new ArrayIndexOutOfBoundsException(index); //empty
-        }
-
-        @Override
         public double getDouble(final int index) {
             throw new ArrayIndexOutOfBoundsException(index); //empty
         }
 
         @Override

@@ -286,17 +273,17 @@
      * Factory method for unspecified array with given length - start as int array data
      *
      * @param length the initial length
      * @return ArrayData
      */
-    public static ArrayData allocate(final int length) {
-        if (length == 0) {
+    public static ArrayData allocate(final long length) {
+        if (length == 0L) {
             return new IntArrayData();
         } else if (length >= SparseArrayData.MAX_DENSE_LENGTH) {
             return new SparseArrayData(EMPTY_ARRAY, length);
         } else {
-            return new DeletedRangeArrayFilter(new IntArrayData(length), 0, length - 1);
+            return new DeletedRangeArrayFilter(new IntArrayData((int) length), 0, length - 1);
         }
     }
 
     /**
      * Factory method for unspecified given an array object

@@ -307,12 +294,10 @@
     public static ArrayData allocate(final Object array) {
         final Class<?> clazz = array.getClass();
 
         if (clazz == int[].class) {
             return new IntArrayData((int[])array, ((int[])array).length);
-        } else if (clazz == long[].class) {
-            return new LongArrayData((long[])array, ((long[])array).length);
         } else if (clazz == double[].class) {
             return new NumberArrayData((double[])array, ((double[])array).length);
         } else {
             return new ObjectArrayData((Object[])array, ((Object[])array).length);
         }

@@ -332,20 +317,10 @@
      * Allocate an ArrayData wrapping a given array
      *
      * @param array the array to use for initial elements
      * @return the ArrayData
      */
-    public static ArrayData allocate(final long[] array) {
-        return new LongArrayData(array, array.length);
-    }
-
-    /**
-     * Allocate an ArrayData wrapping a given array
-     *
-     * @param array the array to use for initial elements
-     * @return the ArrayData
-     */
     public static ArrayData allocate(final double[] array) {
         return new NumberArrayData(array, array.length);
     }
 
     /**

@@ -535,20 +510,10 @@
      * @return new array data (or same)
      */
     public abstract ArrayData set(final int index, final int value, final boolean strict);
 
     /**
-     * Set a long value at a given index
-     *
-     * @param index the index
-     * @param value the value
-     * @param strict are we in strict mode
-     * @return new array data (or same)
-     */
-    public abstract ArrayData set(final int index, final long value, final boolean strict);
-
-    /**
      * Set an double value at a given index
      *
      * @param index the index
      * @param value the value
      * @param strict are we in strict mode

@@ -607,30 +572,10 @@
     public int getIntOptimistic(final int index, final int programPoint) {
         throw new UnwarrantedOptimismException(getObject(index), programPoint, getOptimisticType());
     }
 
     /**
-     * Get a long value from a given index
-     *
-     * @param index the index
-     * @return the value
-     */
-    public abstract long getLong(final int index);
-
-    /**
-     * Get optimistic long - default is that it's impossible. Overridden
-     * by arrays that actually represents longs or narrower
-     *
-     * @param index        the index
-     * @param programPoint program point
-     * @return the value
-     */
-    public long getLongOptimistic(final int index, final int programPoint) {
-        throw new UnwarrantedOptimismException(getObject(index), programPoint, getOptimisticType());
-    }
-
-    /**
      * Get a double value from a given index
      *
      * @param index the index
      * @return the value
      */

@@ -819,16 +764,12 @@
         for (final Object item : items) {
             if (item == null) {
                 return Object.class;
             }
             final Class<?> itemClass = item.getClass();
-            if (itemClass == Long.class) {
+            if (itemClass == Double.class || itemClass == Float.class || itemClass == Long.class) {
                 if (widest == Integer.class) {
-                    widest = Long.class;
-                }
-            } else if (itemClass == Double.class || itemClass == Float.class) {
-                if (widest == Integer.class || widest == Long.class) {
                     widest = Double.class;
                 }
             } else if (itemClass != Integer.class && itemClass != Short.class && itemClass != Byte.class) {
                 return Object.class;
             }
< prev index next >