< prev index next >

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

Print this page




 133     public ArrayData shrink(final long newLength) {
 134         Arrays.fill(array, (int) newLength, array.length, ScriptRuntime.UNDEFINED);
 135         return this;
 136     }
 137 
 138     @Override
 139     public ArrayData set(final int index, final Object value, final boolean strict) {
 140         array[index] = value;
 141         setLength(Math.max(index + 1, length()));
 142         return this;
 143     }
 144 
 145     @Override
 146     public ArrayData set(final int index, final int value, final boolean strict) {
 147         array[index] = value;
 148         setLength(Math.max(index + 1, length()));
 149         return this;
 150     }
 151 
 152     @Override
 153     public ArrayData set(final int index, final long value, final boolean strict) {
 154         array[index] = value;
 155         setLength(Math.max(index + 1, length()));
 156         return this;
 157     }
 158 
 159     @Override
 160     public ArrayData set(final int index, final double value, final boolean strict) {
 161         array[index] = value;
 162         setLength(Math.max(index + 1, length()));
 163         return this;
 164     }
 165 
 166     @Override
 167     public ArrayData setEmpty(final int index) {
 168         array[index] = ScriptRuntime.EMPTY;
 169         return this;
 170     }
 171 
 172     @Override
 173     public ArrayData setEmpty(final long lo, final long hi) {
 174         // hi parameter is inclusive, but Arrays.fill toIndex parameter is exclusive
 175         Arrays.fill(array, (int)Math.max(lo, 0L), (int)Math.min(hi + 1, Integer.MAX_VALUE), ScriptRuntime.EMPTY);
 176         return this;
 177     }
 178 
 179     private static final MethodHandle HAS_GET_ELEM = specialCall(MethodHandles.lookup(), ObjectArrayData.class, "getElem", Object.class, int.class).methodHandle();


 196         throw new ClassCastException();
 197     }
 198 
 199     @Override
 200     public MethodHandle getElementGetter(final Class<?> returnType, final int programPoint) {
 201         if (returnType.isPrimitive()) {
 202             return null;
 203         }
 204         return getContinuousElementGetter(HAS_GET_ELEM, returnType, programPoint);
 205     }
 206 
 207     @Override
 208     public MethodHandle getElementSetter(final Class<?> elementType) {
 209         return getContinuousElementSetter(SET_ELEM, Object.class);
 210     }
 211 
 212 
 213     @Override
 214     public int getInt(final int index) {
 215         return JSType.toInt32(array[index]);
 216     }
 217 
 218     @Override
 219     public long getLong(final int index) {
 220         return JSType.toLong(array[index]);
 221     }
 222 
 223     @Override
 224     public double getDouble(final int index) {
 225         return JSType.toNumber(array[index]);
 226     }
 227 
 228     @Override
 229     public Object getObject(final int index) {
 230         return array[index];
 231     }
 232 
 233     @Override
 234     public boolean has(final int index) {
 235         return 0 <= index && index < length();
 236     }
 237 
 238     @Override
 239     public ArrayData delete(final int index) {
 240         setEmpty(index);




 133     public ArrayData shrink(final long newLength) {
 134         Arrays.fill(array, (int) newLength, array.length, ScriptRuntime.UNDEFINED);
 135         return this;
 136     }
 137 
 138     @Override
 139     public ArrayData set(final int index, final Object value, final boolean strict) {
 140         array[index] = value;
 141         setLength(Math.max(index + 1, length()));
 142         return this;
 143     }
 144 
 145     @Override
 146     public ArrayData set(final int index, final int value, final boolean strict) {
 147         array[index] = value;
 148         setLength(Math.max(index + 1, length()));
 149         return this;
 150     }
 151 
 152     @Override







 153     public ArrayData set(final int index, final double value, final boolean strict) {
 154         array[index] = value;
 155         setLength(Math.max(index + 1, length()));
 156         return this;
 157     }
 158 
 159     @Override
 160     public ArrayData setEmpty(final int index) {
 161         array[index] = ScriptRuntime.EMPTY;
 162         return this;
 163     }
 164 
 165     @Override
 166     public ArrayData setEmpty(final long lo, final long hi) {
 167         // hi parameter is inclusive, but Arrays.fill toIndex parameter is exclusive
 168         Arrays.fill(array, (int)Math.max(lo, 0L), (int)Math.min(hi + 1, Integer.MAX_VALUE), ScriptRuntime.EMPTY);
 169         return this;
 170     }
 171 
 172     private static final MethodHandle HAS_GET_ELEM = specialCall(MethodHandles.lookup(), ObjectArrayData.class, "getElem", Object.class, int.class).methodHandle();


 189         throw new ClassCastException();
 190     }
 191 
 192     @Override
 193     public MethodHandle getElementGetter(final Class<?> returnType, final int programPoint) {
 194         if (returnType.isPrimitive()) {
 195             return null;
 196         }
 197         return getContinuousElementGetter(HAS_GET_ELEM, returnType, programPoint);
 198     }
 199 
 200     @Override
 201     public MethodHandle getElementSetter(final Class<?> elementType) {
 202         return getContinuousElementSetter(SET_ELEM, Object.class);
 203     }
 204 
 205 
 206     @Override
 207     public int getInt(final int index) {
 208         return JSType.toInt32(array[index]);





 209     }
 210 
 211     @Override
 212     public double getDouble(final int index) {
 213         return JSType.toNumber(array[index]);
 214     }
 215 
 216     @Override
 217     public Object getObject(final int index) {
 218         return array[index];
 219     }
 220 
 221     @Override
 222     public boolean has(final int index) {
 223         return 0 <= index && index < length();
 224     }
 225 
 226     @Override
 227     public ArrayData delete(final int index) {
 228         setEmpty(index);


< prev index next >