< prev index next >

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

Print this page




 104             return array.length == len ? array.clone() : Arrays.copyOf(array, len);
 105         }
 106         return super.asArrayOfType(componentType);
 107     }
 108 
 109     private static boolean canWiden(final Class<?> type) {
 110         return TypeUtilities.isWrapperType(type) &&
 111             type != Boolean.class && type != Character.class;
 112     }
 113 
 114     @Override
 115     public ContinuousArrayData convert(final Class<?> type) {
 116         if (! canWiden(type)) {
 117             final int len = (int)length();
 118             return new ObjectArrayData(toObjectArray(false), len);
 119         }
 120         return this;
 121     }
 122 
 123     @Override
 124     public void shiftLeft(final int by) {



 125         System.arraycopy(array, by, array, 0, array.length - by);
 126     }



 127 
 128     @Override
 129     public ArrayData shiftRight(final int by) {
 130         final ArrayData newData = ensure(by + length() - 1);
 131         if (newData != this) {
 132             newData.shiftRight(by);
 133             return newData;
 134         }
 135         System.arraycopy(array, 0, array, by, array.length - by);
 136         return this;
 137     }
 138 
 139     @Override
 140     public ArrayData ensure(final long safeIndex) {
 141         if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH) {
 142             return new SparseArrayData(this, safeIndex + 1);
 143         }
 144         final int alen = array.length;
 145         if (safeIndex >= alen) {
 146             final int newLength = ArrayData.nextSize((int)safeIndex);




 104             return array.length == len ? array.clone() : Arrays.copyOf(array, len);
 105         }
 106         return super.asArrayOfType(componentType);
 107     }
 108 
 109     private static boolean canWiden(final Class<?> type) {
 110         return TypeUtilities.isWrapperType(type) &&
 111             type != Boolean.class && type != Character.class;
 112     }
 113 
 114     @Override
 115     public ContinuousArrayData convert(final Class<?> type) {
 116         if (! canWiden(type)) {
 117             final int len = (int)length();
 118             return new ObjectArrayData(toObjectArray(false), len);
 119         }
 120         return this;
 121     }
 122 
 123     @Override
 124     public ArrayData shiftLeft(final int by) {
 125         if (by >= length()) {
 126             shrink(0);
 127         } else {
 128             System.arraycopy(array, by, array, 0, array.length - by);
 129         }
 130         setLength(Math.max(0, length() - by));
 131         return this;
 132     }
 133 
 134     @Override
 135     public ArrayData shiftRight(final int by) {
 136         final ArrayData newData = ensure(by + length() - 1);
 137         if (newData != this) {
 138             newData.shiftRight(by);
 139             return newData;
 140         }
 141         System.arraycopy(array, 0, array, by, array.length - by);
 142         return this;
 143     }
 144 
 145     @Override
 146     public ArrayData ensure(final long safeIndex) {
 147         if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH) {
 148             return new SparseArrayData(this, safeIndex + 1);
 149         }
 150         final int alen = array.length;
 151         if (safeIndex >= alen) {
 152             final int newLength = ArrayData.nextSize((int)safeIndex);


< prev index next >