< prev index next >
src/jdk/nashorn/internal/runtime/arrays/ArrayData.java
Print this page
*** 105,122 ****
return ScriptRuntime.EMPTY_ARRAY;
}
@Override
public ArrayData ensure(final long safeIndex) {
! if (safeIndex > 0L) {
if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH) {
return new SparseArrayData(this, safeIndex + 1);
}
//known to fit in int
return toRealArrayData((int)safeIndex);
! }
! return this;
}
@Override
public ArrayData convert(final Class<?> type) {
return toRealArrayData().convert(type);
--- 105,121 ----
return ScriptRuntime.EMPTY_ARRAY;
}
@Override
public ArrayData ensure(final long safeIndex) {
! assert safeIndex >= 0L;
if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH) {
return new SparseArrayData(this, safeIndex + 1);
}
//known to fit in int
return toRealArrayData((int)safeIndex);
!
}
@Override
public ArrayData convert(final Class<?> type) {
return toRealArrayData().convert(type);
*** 131,142 ****
public ArrayData delete(final long fromIndex, final long toIndex) {
return new DeletedRangeArrayFilter(this, fromIndex, toIndex);
}
@Override
! public void shiftLeft(final int by) {
! //nop, always empty or we wouldn't be of this class
}
@Override
public ArrayData shiftRight(final int by) {
return this; //always empty or we wouldn't be of this class
--- 130,141 ----
public ArrayData delete(final long fromIndex, final long toIndex) {
return new DeletedRangeArrayFilter(this, fromIndex, toIndex);
}
@Override
! public ArrayData shiftLeft(final int by) {
! return this; //nop, always empty or we wouldn't be of this class
}
@Override
public ArrayData shiftRight(final int by) {
return this; //always empty or we wouldn't be of this class
*** 449,465 ****
}
/**
* Shift the array data left
*
! * TODO: explore start at an index and not at zero, to make these operations
! * even faster. Offset everything from the index. Costs memory but is probably
! * worth it
*
* @param by offset to shift
*/
! public abstract void shiftLeft(final int by);
/**
* Shift the array right
*
* @param by offset to shift
--- 448,464 ----
}
/**
* Shift the array data left
*
! * TODO: This is used for Array.prototype.shift() which only shifts by 1,
! * so we might consider dropping the offset parameter.
*
* @param by offset to shift
+ * @return New arraydata (or same)
*/
! public abstract ArrayData shiftLeft(final int by);
/**
* Shift the array right
*
* @param by offset to shift
< prev index next >