public abstract class AbstractWritableArray extends DynamicArray
| Modifier and Type | Class and Description |
|---|---|
protected static interface |
AbstractWritableArray.SetSupportedProfileAccess |
DynamicArray.DynamicArrayCacheScriptArray.DefaultIterator, ScriptArray.ProfileAccess, ScriptArray.ProfileHolder, ScriptArray.SetLengthProfileAccess| Modifier and Type | Field and Description |
|---|---|
protected static AbstractWritableArray.SetSupportedProfileAccess |
SET_SUPPORTED_PROFILE_ACCESS |
cache, 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, SET_LENGTH_PROFILE| Modifier | Constructor and Description |
|---|---|
protected |
AbstractWritableArray(int integrityLevel,
DynamicArray.DynamicArrayCache cache) |
| Modifier and Type | Method and Description |
|---|---|
abstract Object |
allocateArray(int length) |
protected void |
clearUnusedArea(com.oracle.truffle.api.object.DynamicObject object,
int startIdx,
int endIdx,
int arrayOffset,
ScriptArray.ProfileHolder profile)
After shortening the array, the now unused area has to be cleared.
|
boolean |
containsHoles(com.oracle.truffle.api.object.DynamicObject object,
long index) |
protected int |
countHoles(com.oracle.truffle.api.object.DynamicObject object) |
static ScriptArray.ProfileHolder |
createSetSupportedProfile() |
protected ScriptArray |
deleteElementHoles(com.oracle.truffle.api.object.DynamicObject object,
long index) |
protected void |
fillHoles(com.oracle.truffle.api.object.DynamicObject object,
int internalIndex,
int grown,
ScriptArray.ProfileHolder profile) |
protected abstract int |
getArrayCapacity(com.oracle.truffle.api.object.DynamicObject object) |
protected int |
getArrayOffset(com.oracle.truffle.api.object.DynamicObject object)
The arrayOffset (int) is the first element in internal array.
|
Object |
getElement(com.oracle.truffle.api.object.DynamicObject object,
long index) |
Object |
getElementInBounds(com.oracle.truffle.api.object.DynamicObject object,
long index) |
abstract Object |
getInBoundsFast(com.oracle.truffle.api.object.DynamicObject object,
int index) |
double |
getInBoundsFastDouble(com.oracle.truffle.api.object.DynamicObject object,
int index) |
int |
getInBoundsFastInt(com.oracle.truffle.api.object.DynamicObject object,
int index) |
protected long |
getIndexOffset(com.oracle.truffle.api.object.DynamicObject object)
The indexOffset (int) is the first element is in array[indexOffset + arrayOffset].
|
protected static int |
getUsedLength(com.oracle.truffle.api.object.DynamicObject object) |
boolean |
hasElement(com.oracle.truffle.api.object.DynamicObject object,
long index) |
protected void |
incrementHolesCount(com.oracle.truffle.api.object.DynamicObject object,
int offset) |
protected abstract boolean |
isHolePrepared(com.oracle.truffle.api.object.DynamicObject object,
int index)
Returns true when the array contains a hole at that index.
|
boolean |
isInBounds(com.oracle.truffle.api.object.DynamicObject object,
int index) |
boolean |
isInBoundsFast(com.oracle.truffle.api.object.DynamicObject object,
long index)
Returns true if the index can be written using inBoundsFast access mode.
|
boolean |
isSparse(com.oracle.truffle.api.object.DynamicObject object,
long index) |
abstract boolean |
isSupported(com.oracle.truffle.api.object.DynamicObject object,
long index) |
boolean |
isSupportedContiguous(com.oracle.truffle.api.object.DynamicObject object,
long index) |
boolean |
isSupportedHoles(com.oracle.truffle.api.object.DynamicObject object,
long index) |
static boolean |
isSupportedZeroBased(com.oracle.truffle.api.object.DynamicObject object,
int index) |
long |
length(com.oracle.truffle.api.object.DynamicObject object) |
int |
lengthInt(com.oracle.truffle.api.object.DynamicObject object) |
protected abstract void |
moveRangePrepared(com.oracle.truffle.api.object.DynamicObject object,
int src,
int dst,
int len)
Move
len elements from src to dst. |
long |
nextElementIndex(com.oracle.truffle.api.object.DynamicObject object,
long index)
Returns the next index.
|
protected long |
nextElementIndexHoles(com.oracle.truffle.api.object.DynamicObject object,
long index0) |
protected long |
nextElementIndexZeroBased(com.oracle.truffle.api.object.DynamicObject object,
long index) |
protected abstract int |
prepareInBounds(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected int |
prepareInBoundsContiguous(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected abstract int |
prepareInBoundsFast(com.oracle.truffle.api.object.DynamicObject object,
long index) |
protected int |
prepareInBoundsHoles(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected static void |
prepareInBoundsZeroBased(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected abstract int |
prepareSupported(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected int |
prepareSupportedContiguous(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected int |
prepareSupportedHoles(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
protected void |
prepareSupportedZeroBased(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile) |
long |
previousElementIndex(com.oracle.truffle.api.object.DynamicObject object,
long index)
Returns the previous index.
|
protected long |
previousElementIndexHoles(com.oracle.truffle.api.object.DynamicObject object,
long index0) |
protected ScriptArray |
removeRangeContiguous(com.oracle.truffle.api.object.DynamicObject object,
long start,
long end) |
protected ScriptArray |
removeRangeHoles(com.oracle.truffle.api.object.DynamicObject object,
long start,
long end) |
protected abstract void |
resizeArray(com.oracle.truffle.api.object.DynamicObject object,
int newCapacity,
int oldCapacity,
int offset) |
protected void |
setArrayOffset(com.oracle.truffle.api.object.DynamicObject object,
int value) |
protected static void |
setArrayProperties(com.oracle.truffle.api.object.DynamicObject object,
Object array,
long length,
int usedLength,
long indexOffset,
int arrayOffset) |
protected abstract void |
setHoleValue(com.oracle.truffle.api.object.DynamicObject object,
int index) |
protected void |
setIndexOffset(com.oracle.truffle.api.object.DynamicObject object,
long value) |
ScriptArray |
setLengthImpl(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile) |
protected abstract void |
setLengthLess(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile) |
protected void |
setLengthLessContiguous(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile) |
protected void |
setLengthLessZeroBased(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile) |
Object[] |
toArray(com.oracle.truffle.api.object.DynamicObject object)
Creates an Object[] from this array, of size array.length.
|
protected Object[] |
toArrayZeroBased(com.oracle.truffle.api.object.DynamicObject object) |
AbstractWritableArray |
toContiguous(com.oracle.truffle.api.object.DynamicObject object,
long index,
Object value) |
abstract AbstractWritableArray |
toDouble(com.oracle.truffle.api.object.DynamicObject object,
long index,
double value) |
abstract AbstractWritableArray |
toHoles(com.oracle.truffle.api.object.DynamicObject object,
long index,
Object value) |
ScriptArray |
toNonContiguous(com.oracle.truffle.api.object.DynamicObject object,
int index,
Object value,
ScriptArray.ProfileHolder profile) |
AbstractWritableArray |
toNonHoles(com.oracle.truffle.api.object.DynamicObject object,
long index,
Object value) |
abstract AbstractWritableArray |
toObject(com.oracle.truffle.api.object.DynamicObject object,
long index,
Object value) |
SparseArray |
toSparse(com.oracle.truffle.api.object.DynamicObject object,
long index,
Object value) |
protected void |
traceWriteValue(String access,
int index,
Object value) |
protected abstract AbstractWritableArray |
withIntegrityLevel(int newIntegrityLevel) |
array, cloneArray, createCache, freeze, isExtensible, isFrozen, isLengthNotWritable, isSealed, preventExtensions, seal, setIntegrityLevel, setLengthNotWritable, toStringaddRange, addRangeImpl, asIterable, canDeleteElement, cast, createConstantArray, createConstantEmptyArray, createSetLengthProfile, deleteElement, deleteElementImpl, firstElementIndex, hasHoles, isHolesType, isInstance, lastElementIndex, makeMultiRangeList, makeRangeList, nextPower, ownPropertyKeys, ownPropertyKeysContiguous, ownPropertyKeysHoles, removeRange, removeRange, removeRangeImpl, setElement, setElementImpl, setLength, setLength, toString, traceArrayTransition, traceWrite, valueIsByteprotected static final AbstractWritableArray.SetSupportedProfileAccess SET_SUPPORTED_PROFILE_ACCESS
protected AbstractWritableArray(int integrityLevel,
DynamicArray.DynamicArrayCache cache)
protected static final void setArrayProperties(com.oracle.truffle.api.object.DynamicObject object,
Object array,
long length,
int usedLength,
long indexOffset,
int arrayOffset)
public final boolean isInBoundsFast(com.oracle.truffle.api.object.DynamicObject object,
long index)
isInBoundsFast in class ScriptArrayprotected abstract int prepareInBoundsFast(com.oracle.truffle.api.object.DynamicObject object,
long index)
public final boolean isInBounds(com.oracle.truffle.api.object.DynamicObject object,
int index)
protected abstract int prepareInBounds(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected static void prepareInBoundsZeroBased(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected static int getUsedLength(com.oracle.truffle.api.object.DynamicObject object)
protected final int prepareInBoundsContiguous(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected final int prepareInBoundsHoles(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
public boolean containsHoles(com.oracle.truffle.api.object.DynamicObject object,
long index)
public abstract boolean isSupported(com.oracle.truffle.api.object.DynamicObject object,
long index)
public static boolean isSupportedZeroBased(com.oracle.truffle.api.object.DynamicObject object,
int index)
public final boolean isSupportedContiguous(com.oracle.truffle.api.object.DynamicObject object,
long index)
public final boolean isSupportedHoles(com.oracle.truffle.api.object.DynamicObject object,
long index)
protected abstract int prepareSupported(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected final void prepareSupportedZeroBased(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected final int prepareSupportedContiguous(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected final int prepareSupportedHoles(com.oracle.truffle.api.object.DynamicObject object,
int index,
ScriptArray.ProfileHolder profile)
protected void incrementHolesCount(com.oracle.truffle.api.object.DynamicObject object,
int offset)
protected abstract void setHoleValue(com.oracle.truffle.api.object.DynamicObject object,
int index)
protected abstract int getArrayCapacity(com.oracle.truffle.api.object.DynamicObject object)
protected int getArrayOffset(com.oracle.truffle.api.object.DynamicObject object)
protected void setArrayOffset(com.oracle.truffle.api.object.DynamicObject object,
int value)
protected long getIndexOffset(com.oracle.truffle.api.object.DynamicObject object)
protected void setIndexOffset(com.oracle.truffle.api.object.DynamicObject object,
long value)
protected void fillHoles(com.oracle.truffle.api.object.DynamicObject object,
int internalIndex,
int grown,
ScriptArray.ProfileHolder profile)
public abstract AbstractWritableArray toDouble(com.oracle.truffle.api.object.DynamicObject object, long index, double value)
public abstract AbstractWritableArray toObject(com.oracle.truffle.api.object.DynamicObject object, long index, Object value)
public AbstractWritableArray toContiguous(com.oracle.truffle.api.object.DynamicObject object, long index, Object value)
public abstract AbstractWritableArray toHoles(com.oracle.truffle.api.object.DynamicObject object, long index, Object value)
public AbstractWritableArray toNonHoles(com.oracle.truffle.api.object.DynamicObject object, long index, Object value)
public final SparseArray toSparse(com.oracle.truffle.api.object.DynamicObject object, long index, Object value)
protected abstract void resizeArray(com.oracle.truffle.api.object.DynamicObject object,
int newCapacity,
int oldCapacity,
int offset)
public final boolean isSparse(com.oracle.truffle.api.object.DynamicObject object,
long index)
public boolean hasElement(com.oracle.truffle.api.object.DynamicObject object,
long index)
hasElement in class ScriptArraypublic long nextElementIndex(com.oracle.truffle.api.object.DynamicObject object,
long index)
ScriptArraynextElementIndex in class ScriptArrayprotected abstract boolean isHolePrepared(com.oracle.truffle.api.object.DynamicObject object,
int index)
protected final long nextElementIndexHoles(com.oracle.truffle.api.object.DynamicObject object,
long index0)
protected final long nextElementIndexZeroBased(com.oracle.truffle.api.object.DynamicObject object,
long index)
public long previousElementIndex(com.oracle.truffle.api.object.DynamicObject object,
long index)
ScriptArraypreviousElementIndex in class ScriptArrayprotected final long previousElementIndexHoles(com.oracle.truffle.api.object.DynamicObject object,
long index0)
public final long length(com.oracle.truffle.api.object.DynamicObject object)
length in class ScriptArraypublic final int lengthInt(com.oracle.truffle.api.object.DynamicObject object)
lengthInt in class ScriptArraypublic final ScriptArray setLengthImpl(com.oracle.truffle.api.object.DynamicObject object, long length, ScriptArray.ProfileHolder profile)
setLengthImpl in class ScriptArrayprotected abstract void setLengthLess(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile)
protected void setLengthLessZeroBased(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile)
protected final void setLengthLessContiguous(com.oracle.truffle.api.object.DynamicObject object,
long length,
ScriptArray.ProfileHolder profile)
protected void clearUnusedArea(com.oracle.truffle.api.object.DynamicObject object,
int startIdx,
int endIdx,
int arrayOffset,
ScriptArray.ProfileHolder profile)
public final Object getElement(com.oracle.truffle.api.object.DynamicObject object, long index)
getElement in class ScriptArraypublic final Object getElementInBounds(com.oracle.truffle.api.object.DynamicObject object, long index)
getElementInBounds in class ScriptArraypublic abstract Object getInBoundsFast(com.oracle.truffle.api.object.DynamicObject object, int index)
public int getInBoundsFastInt(com.oracle.truffle.api.object.DynamicObject object,
int index)
throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultExceptionpublic double getInBoundsFastDouble(com.oracle.truffle.api.object.DynamicObject object,
int index)
throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultExceptionpublic Object[] toArray(com.oracle.truffle.api.object.DynamicObject object)
ScriptArraytoArray in class ScriptArrayprotected final Object[] toArrayZeroBased(com.oracle.truffle.api.object.DynamicObject object)
protected final ScriptArray deleteElementHoles(com.oracle.truffle.api.object.DynamicObject object, long index)
public ScriptArray toNonContiguous(com.oracle.truffle.api.object.DynamicObject object, int index, Object value, ScriptArray.ProfileHolder profile)
protected abstract AbstractWritableArray withIntegrityLevel(int newIntegrityLevel)
withIntegrityLevel in class DynamicArraypublic abstract Object allocateArray(int length)
protected final ScriptArray removeRangeContiguous(com.oracle.truffle.api.object.DynamicObject object, long start, long end)
protected final ScriptArray removeRangeHoles(com.oracle.truffle.api.object.DynamicObject object, long start, long end)
protected final int countHoles(com.oracle.truffle.api.object.DynamicObject object)
protected abstract void moveRangePrepared(com.oracle.truffle.api.object.DynamicObject object,
int src,
int dst,
int len)
len elements from src to dst.public static ScriptArray.ProfileHolder createSetSupportedProfile()