public abstract class AbstractWritableArray extends DynamicArray
| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractWritableArray.SetSupportedProfileAccess |
DynamicArray.DynamicArrayCacheScriptArray.CreateWritableProfileAccess, ScriptArray.DefaultIterator, ScriptArray.SetLengthProfileAccesscache, INTEGRITY_LEVEL_FROZEN, INTEGRITY_LEVEL_FROZEN_LENGTH_READONLY, INTEGRITY_LEVEL_MASK, INTEGRITY_LEVEL_NONE, INTEGRITY_LEVEL_NONE_LENGTH_READONLY, INTEGRITY_LEVEL_NOT_EXTENSIBLE, INTEGRITY_LEVEL_NOT_EXTENSIBLE_LENGTH_READONLY, INTEGRITY_LEVEL_SEALED, INTEGRITY_LEVEL_SEALED_LENGTH_READONLY, INTEGRITY_LEVELS, integrityLevel, LENGTH_NOT_WRITABLE, LENGTH_WRITABLE_MASKEMPTY_OBJECT_ARRAY| Modifier | Constructor and Description |
|---|---|
protected |
AbstractWritableArray(int integrityLevel,
DynamicArray.DynamicArrayCache cache) |
| Modifier and Type | Method and Description |
|---|---|
abstract Object |
allocateArray(int length) |
protected boolean |
assertHoleCount(JSDynamicObject object) |
protected boolean |
checkFillHoles(JSDynamicObject object,
int internalIndex,
int grown) |
protected void |
clearUnusedArea(JSDynamicObject object,
int startIdx,
int endIdx,
int arrayOffset,
com.oracle.truffle.api.nodes.Node node,
ScriptArray.SetLengthProfileAccess profile)
After shortening the array, the now unused area has to be cleared.
|
boolean |
containsHoles(JSDynamicObject object,
long index) |
protected int |
countHoles(JSDynamicObject object) |
protected ScriptArray |
deleteElementHoles(JSDynamicObject object,
long index) |
protected void |
fillHoles(JSDynamicObject object,
int internalIndex,
int grown,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected abstract int |
getArrayCapacity(JSDynamicObject object) |
protected int |
getArrayOffset(JSDynamicObject object)
The arrayOffset (int) is the first element in internal array.
|
Object |
getElement(JSDynamicObject object,
long index) |
Object |
getElementInBounds(JSDynamicObject object,
long index) |
abstract Object |
getInBoundsFast(JSDynamicObject object,
int index) |
double |
getInBoundsFastDouble(JSDynamicObject object,
int index) |
int |
getInBoundsFastInt(JSDynamicObject object,
int index) |
protected long |
getIndexOffset(JSDynamicObject object)
The indexOffset (int) is the first element is in array[indexOffset + arrayOffset].
|
protected static int |
getUsedLength(JSDynamicObject object) |
boolean |
hasElement(JSDynamicObject object,
long index) |
protected void |
incrementHolesCount(JSDynamicObject object,
int offset) |
protected abstract boolean |
isHolePrepared(JSDynamicObject object,
int index)
Returns true when the array contains a hole at that index.
|
boolean |
isInBounds(JSDynamicObject object,
int index) |
boolean |
isInBoundsFast(JSDynamicObject object,
long index)
Returns true if the index can be written using inBoundsFast access mode.
|
boolean |
isSparse(JSDynamicObject object,
long index) |
abstract boolean |
isSupported(JSDynamicObject object,
long index) |
boolean |
isSupportedContiguous(JSDynamicObject object,
long index) |
boolean |
isSupportedHoles(JSDynamicObject object,
long index) |
static boolean |
isSupportedZeroBased(JSDynamicObject object,
int index) |
long |
length(JSDynamicObject object) |
int |
lengthInt(JSDynamicObject object) |
protected abstract void |
moveRangePrepared(JSDynamicObject object,
int src,
int dst,
int len)
Move
len elements from src to dst. |
long |
nextElementIndex(JSDynamicObject object,
long index)
Returns the next index.
|
protected long |
nextElementIndexHoles(JSDynamicObject object,
long index0) |
protected long |
nextElementIndexZeroBased(JSDynamicObject object,
long index) |
protected abstract int |
prepareInBounds(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected int |
prepareInBoundsContiguous(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected abstract int |
prepareInBoundsFast(JSDynamicObject object,
long index) |
protected int |
prepareInBoundsHoles(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected static void |
prepareInBoundsZeroBased(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected abstract int |
prepareSupported(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected int |
prepareSupportedContiguous(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected int |
prepareSupportedHoles(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
protected void |
prepareSupportedZeroBased(JSDynamicObject object,
int index,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
long |
previousElementIndex(JSDynamicObject object,
long index)
Returns the previous index.
|
protected long |
previousElementIndexHoles(JSDynamicObject object,
long index0) |
protected ScriptArray |
removeRangeContiguous(JSDynamicObject object,
long start,
long end) |
protected ScriptArray |
removeRangeHoles(JSDynamicObject object,
long start,
long end) |
protected abstract void |
resizeArray(JSDynamicObject object,
int newCapacity,
int oldCapacity,
int offset) |
protected void |
setArrayOffset(JSDynamicObject object,
int value) |
protected static void |
setArrayProperties(JSDynamicObject object,
long length,
int usedLength,
long indexOffset,
int arrayOffset) |
protected static void |
setArrayProperties(JSDynamicObject object,
Object array,
long length,
int usedLength,
long indexOffset,
int arrayOffset) |
protected abstract void |
setHoleValue(JSDynamicObject object,
int index) |
protected void |
setIndexOffset(JSDynamicObject object,
long value) |
ScriptArray |
setLengthImpl(JSDynamicObject object,
long length,
com.oracle.truffle.api.nodes.Node node,
ScriptArray.SetLengthProfileAccess profile) |
protected abstract void |
setLengthLess(JSDynamicObject object,
long length,
com.oracle.truffle.api.nodes.Node node,
ScriptArray.SetLengthProfileAccess profile) |
protected void |
setLengthLessContiguous(JSDynamicObject object,
long length,
com.oracle.truffle.api.nodes.Node node,
ScriptArray.SetLengthProfileAccess profile) |
protected void |
setLengthLessZeroBased(JSDynamicObject object,
long length,
com.oracle.truffle.api.nodes.Node node,
ScriptArray.SetLengthProfileAccess profile) |
ScriptArray |
shiftRangeImpl(JSDynamicObject object,
long from)
This function shifts all elements in the range from [0..limit[.
|
AbstractWritableArray |
toContiguous(JSDynamicObject object,
long index,
Object value) |
abstract AbstractWritableArray |
toDouble(JSDynamicObject object,
long index,
double value) |
abstract AbstractWritableArray |
toHoles(JSDynamicObject object,
long index,
Object value) |
ScriptArray |
toNonContiguous(JSDynamicObject object,
int index,
Object value,
com.oracle.truffle.api.nodes.Node node,
AbstractWritableArray.SetSupportedProfileAccess profile) |
AbstractWritableArray |
toNonHoles(JSDynamicObject object,
long index,
Object value) |
abstract AbstractWritableArray |
toObject(JSDynamicObject object,
long index,
Object value) |
SparseArray |
toSparse(JSDynamicObject object,
long index,
Object value) |
protected void |
traceWriteValue(String access,
int index,
Object value) |
protected static boolean |
unusedElementsAreHoles(Object[] array,
int usedStart,
int usedLength) |
protected abstract AbstractWritableArray |
withIntegrityLevel(int newIntegrityLevel) |
cloneArray, createCache, freeze, isExtensible, isFrozen, isLengthNotWritable, isSealed, maybePreinitializeCache, preventExtensions, seal, setIntegrityLevel, setLengthNotWritable, toStringaddRange, addRangeImpl, asIterable, canDeleteElement, cast, createConstantArray, createConstantEmptyArray, deleteElement, deleteElementImpl, firstElementIndex, hasHoles, isHolesType, isInstance, lastElementIndex, makeMultiRangeList, makeRangeList, nextPower, ownPropertyKeys, ownPropertyKeysContiguous, ownPropertyKeysHoles, removeRange, removeRange, removeRangeImpl, setElement, setElementImpl, setLength, setLength, shiftRange, toArray, toString, traceArrayTransition, traceWrite, valueIsByteprotected AbstractWritableArray(int integrityLevel,
DynamicArray.DynamicArrayCache cache)
protected static final void setArrayProperties(JSDynamicObject object, Object array, long length, int usedLength, long indexOffset, int arrayOffset)
protected static final void setArrayProperties(JSDynamicObject object, long length, int usedLength, long indexOffset, int arrayOffset)
public final boolean isInBoundsFast(JSDynamicObject object, long index)
isInBoundsFast in class ScriptArrayprotected abstract int prepareInBoundsFast(JSDynamicObject object, long index)
public final boolean isInBounds(JSDynamicObject object, int index)
protected abstract int prepareInBounds(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected static void prepareInBoundsZeroBased(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected static int getUsedLength(JSDynamicObject object)
protected final int prepareInBoundsContiguous(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected final int prepareInBoundsHoles(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
public boolean containsHoles(JSDynamicObject object, long index)
public abstract boolean isSupported(JSDynamicObject object, long index)
public static boolean isSupportedZeroBased(JSDynamicObject object, int index)
public final boolean isSupportedContiguous(JSDynamicObject object, long index)
public final boolean isSupportedHoles(JSDynamicObject object, long index)
protected abstract int prepareSupported(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected final void prepareSupportedZeroBased(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected final int prepareSupportedContiguous(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected final int prepareSupportedHoles(JSDynamicObject object, int index, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected final void incrementHolesCount(JSDynamicObject object, int offset)
protected abstract void setHoleValue(JSDynamicObject object, int index)
protected abstract int getArrayCapacity(JSDynamicObject object)
protected int getArrayOffset(JSDynamicObject object)
protected void setArrayOffset(JSDynamicObject object, int value)
protected long getIndexOffset(JSDynamicObject object)
protected void setIndexOffset(JSDynamicObject object, long value)
protected void fillHoles(JSDynamicObject object, int internalIndex, int grown, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected final boolean checkFillHoles(JSDynamicObject object, int internalIndex, int grown)
public abstract AbstractWritableArray toDouble(JSDynamicObject object, long index, double value)
public abstract AbstractWritableArray toObject(JSDynamicObject object, long index, Object value)
public AbstractWritableArray toContiguous(JSDynamicObject object, long index, Object value)
public abstract AbstractWritableArray toHoles(JSDynamicObject object, long index, Object value)
public AbstractWritableArray toNonHoles(JSDynamicObject object, long index, Object value)
public final SparseArray toSparse(JSDynamicObject object, long index, Object value)
protected abstract void resizeArray(JSDynamicObject object, int newCapacity, int oldCapacity, int offset)
public final boolean isSparse(JSDynamicObject object, long index)
public boolean hasElement(JSDynamicObject object, long index)
hasElement in class ScriptArraypublic long nextElementIndex(JSDynamicObject object, long index)
ScriptArraynextElementIndex in class ScriptArrayprotected abstract boolean isHolePrepared(JSDynamicObject object, int index)
protected final long nextElementIndexHoles(JSDynamicObject object, long index0)
protected final long nextElementIndexZeroBased(JSDynamicObject object, long index)
public long previousElementIndex(JSDynamicObject object, long index)
ScriptArraypreviousElementIndex in class ScriptArrayprotected final long previousElementIndexHoles(JSDynamicObject object, long index0)
public final long length(JSDynamicObject object)
length in class ScriptArraypublic final int lengthInt(JSDynamicObject object)
lengthInt in class ScriptArraypublic final ScriptArray setLengthImpl(JSDynamicObject object, long length, com.oracle.truffle.api.nodes.Node node, ScriptArray.SetLengthProfileAccess profile)
setLengthImpl in class ScriptArrayprotected abstract void setLengthLess(JSDynamicObject object, long length, com.oracle.truffle.api.nodes.Node node, ScriptArray.SetLengthProfileAccess profile)
protected void setLengthLessZeroBased(JSDynamicObject object, long length, com.oracle.truffle.api.nodes.Node node, ScriptArray.SetLengthProfileAccess profile)
protected final void setLengthLessContiguous(JSDynamicObject object, long length, com.oracle.truffle.api.nodes.Node node, ScriptArray.SetLengthProfileAccess profile)
protected void clearUnusedArea(JSDynamicObject object, int startIdx, int endIdx, int arrayOffset, com.oracle.truffle.api.nodes.Node node, ScriptArray.SetLengthProfileAccess profile)
public final Object getElement(JSDynamicObject object, long index)
getElement in class ScriptArraypublic final Object getElementInBounds(JSDynamicObject object, long index)
getElementInBounds in class ScriptArraypublic abstract Object getInBoundsFast(JSDynamicObject object, int index)
public int getInBoundsFastInt(JSDynamicObject object, int index) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultExceptionpublic double getInBoundsFastDouble(JSDynamicObject object, int index) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultExceptionprotected final ScriptArray deleteElementHoles(JSDynamicObject object, long index)
public ScriptArray toNonContiguous(JSDynamicObject object, int index, Object value, com.oracle.truffle.api.nodes.Node node, AbstractWritableArray.SetSupportedProfileAccess profile)
protected abstract AbstractWritableArray withIntegrityLevel(int newIntegrityLevel)
withIntegrityLevel in class DynamicArraypublic abstract Object allocateArray(int length)
protected final ScriptArray removeRangeContiguous(JSDynamicObject object, long start, long end)
protected final ScriptArray removeRangeHoles(JSDynamicObject object, long start, long end)
protected final int countHoles(JSDynamicObject object)
protected final boolean assertHoleCount(JSDynamicObject object)
protected abstract void moveRangePrepared(JSDynamicObject object, int src, int dst, int len)
len elements from src to dst.public ScriptArray shiftRangeImpl(JSDynamicObject object, long from)
ScriptArrayshiftRangeImpl in class ScriptArrayprotected static boolean unusedElementsAreHoles(Object[] array, int usedStart, int usedLength)