public abstract class PropertyCacheNode<T extends PropertyCacheNode.CacheNode<T>> extends JavaScriptBaseNode
PropertyGetNode,
PropertySetNode,
HasPropertyCacheNode| Type | Property and Description |
|---|---|
protected abstract boolean |
isOwn
Gets the value of the property ownProperty.
|
| Modifier and Type | Class and Description |
|---|---|
protected static class |
PropertyCacheNode.AbstractAssumptionShapeCheckNode |
protected static class |
PropertyCacheNode.AbstractShapeCheckNode
Checks the
Shape of a DynamicObject. |
protected static class |
PropertyCacheNode.AssumptionShapeCheckNode
Check that the given shape is valid and unchanged.
|
static class |
PropertyCacheNode.CacheNode<T extends PropertyCacheNode.CacheNode<T>> |
protected static class |
PropertyCacheNode.ConstantObjectAssumptionShapeCheckNode
Checks that the object is constant and the shape by assumption (valid and unchanged).
|
protected static class |
PropertyCacheNode.ConstantObjectPrototypeChainShapeCheckNode
Checks that the object is constant and all the shapes of the prototype chain up to the given
depth by assumption (valid and unchanged).
|
protected static class |
PropertyCacheNode.ConstantObjectPrototypeShapeCheckNode
Checks that the object is constant and the shape of the object and its immediate prototype by
assumption (valid and unchanged).
|
protected static interface |
PropertyCacheNode.ConstantObjectReceiverCheck |
protected static class |
PropertyCacheNode.ConstantObjectShapeCheckNode
Checks that the object is constant and the shape by comparison.
|
protected static class |
PropertyCacheNode.ForeignLanguageCheckNode |
protected static class |
PropertyCacheNode.InstanceofCheckNode |
protected static class |
PropertyCacheNode.JSClassCheckNode |
protected static class |
PropertyCacheNode.NullCheckNode |
protected static class |
PropertyCacheNode.PrimitiveReceiverCheckNode |
protected static class |
PropertyCacheNode.PrototypeChainCheckNode
Checks the shapes of the prototype chain up to the given depth by assumption (
PropertyCacheNode.AssumptionShapeCheckNode). |
protected static class |
PropertyCacheNode.PrototypeChainShapeCheckNode
Checks the top shape by identity and the shapes of the prototype chain up to the given depth
by assumption (
PropertyCacheNode.AssumptionShapeCheckNode). |
protected static class |
PropertyCacheNode.PrototypeShapeCheckNode
Check the shape of the object by identity and the shape of its immediate prototype by
assumption (valid and unchanged).
|
protected static class |
PropertyCacheNode.ReceiverCheckNode
Checks whether the receiver can be handled by the corresponding specialization.
|
protected static class |
PropertyCacheNode.ShapeCheckNode
Check the object shape by identity comparison.
|
protected static class |
PropertyCacheNode.TraversePrototypeChainCheckNode
Check the shapes of the prototype chain up to the given depth.
|
protected static class |
PropertyCacheNode.TraversePrototypeChainShapeCheckNode
Check the shapes of the prototype chain up to the given depth.
|
protected static class |
PropertyCacheNode.TraversePrototypeShapeCheckNode
Check the shapes of the object and its immediate prototype.
|
| Modifier and Type | Field and Description |
|---|---|
protected T |
cacheNode |
protected JSContext |
context |
protected Object |
key |
| Constructor and Description |
|---|
PropertyCacheNode(Object key,
JSContext context) |
| Modifier and Type | Method and Description |
|---|---|
protected static boolean |
alwaysUseStore(com.oracle.truffle.api.object.DynamicObject store,
Object key) |
protected void |
checkForUnstableAssumption(T head,
Object thisObj) |
protected static com.oracle.truffle.api.object.DynamicObjectLibrary |
createCachedAccess(Object key,
PropertyCacheNode.ReceiverCheckNode receiverCheck,
com.oracle.truffle.api.object.DynamicObject store) |
protected abstract T |
createCachedPropertyNode(com.oracle.truffle.api.object.Property entry,
Object thisObj,
int depth,
Object value,
T currentHead) |
protected abstract T |
createGenericPropertyNode() |
protected abstract T |
createJavaPropertyNodeMaybe(Object thisObj,
int depth) |
protected PropertyCacheNode.ReceiverCheckNode |
createPrimitiveReceiverCheck(Object thisObj,
int depth) |
protected PropertyCacheNode.AbstractShapeCheckNode |
createShapeCheckNode(com.oracle.truffle.api.object.Shape shape,
JSDynamicObject thisObj,
int depth,
boolean isConstantObjectFinal,
boolean isDefine) |
protected T |
createSpecialization(Object thisObj,
T currentHead,
int cachedCount,
Object value) |
protected abstract T |
createTruffleObjectPropertyNode() |
protected abstract T |
createUndefinedPropertyNode(Object thisObj,
Object store,
int depth,
Object value) |
protected void |
deoptimize() |
protected static <T extends PropertyCacheNode.CacheNode<T>> |
filterValid(T cache) |
protected String |
getAccessorKey(String getset) |
protected static String |
getAccessorKey(String getset,
Object key) |
JSContext |
getContext() |
com.oracle.truffle.api.nodes.NodeCost |
getCost() |
Object |
getKey() |
protected T |
insertCached(T specialized,
T currentHead,
int cachedCount) |
protected void |
invalidateCache() |
protected static boolean |
isArrayLengthProperty(com.oracle.truffle.api.object.Property property) |
protected static boolean |
isClassPrototypeProperty(com.oracle.truffle.api.object.Property property) |
protected static boolean |
isFunctionLengthProperty(com.oracle.truffle.api.object.Property property) |
protected static boolean |
isFunctionNameProperty(com.oracle.truffle.api.object.Property property) |
protected abstract boolean |
isGlobal() |
protected static boolean |
isLazyNamedCaptureGroupProperty(com.oracle.truffle.api.object.Property property) |
protected static boolean |
isLazyRegexResultIndexProperty(com.oracle.truffle.api.object.Property property) |
protected static boolean |
isNonIntegerIndex(Object key) |
protected abstract boolean |
isOwnProperty()
Gets the value of the property ownProperty.
|
protected abstract boolean |
isPropertyAssumptionCheckEnabled() |
protected static boolean |
isStringLengthProperty(com.oracle.truffle.api.object.Property property) |
protected boolean |
propertyAssumptionsValid(com.oracle.truffle.api.object.DynamicObject thisObj,
int depth,
boolean checkDepth0) |
protected static boolean |
prototypesInShape(com.oracle.truffle.api.object.DynamicObject thisObj,
int depth) |
protected T |
retryCache() |
protected T |
rewriteCached(T currentHead,
T newHead) |
protected T |
rewriteToGeneric(T currentHead,
int cachedCount,
String reason) |
protected abstract void |
setPropertyAssumptionCheckEnabled(boolean value) |
protected T |
specialize(Object thisObj) |
protected T |
specialize(Object thisObj,
Object value) |
protected void |
traceRewriteEvictFinal(com.oracle.truffle.api.nodes.Node evicted) |
protected static <T extends PropertyCacheNode.CacheNode<T>> |
tryMergeShapes(com.oracle.truffle.api.object.Shape cacheShape,
T head)
Does the given map relate to any of the cached maps by upcasting? If so, obsolete the
downcast map.
|
protected static com.oracle.truffle.api.object.DynamicObject |
wrapPrimitive(Object thisObject,
JSContext context) |
copy, onReplaceaccept, adoptChildren, atomic, atomic, deepCopy, getChildren, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, getSourceSection, insert, insert, isAdoptable, isSafelyReplaceableBy, lookupContextReference, lookupLanguageReference, notifyInserted, replace, replace, reportPolymorphicSpecialize, toStringprotected final Object key
protected final JSContext context
protected T extends PropertyCacheNode.CacheNode<T> cacheNode
public final Object getKey()
protected abstract T createGenericPropertyNode()
protected abstract T createCachedPropertyNode(com.oracle.truffle.api.object.Property entry, Object thisObj, int depth, Object value, T currentHead)
protected abstract T createUndefinedPropertyNode(Object thisObj, Object store, int depth, Object value)
protected abstract T createJavaPropertyNodeMaybe(Object thisObj, int depth)
protected abstract T createTruffleObjectPropertyNode()
protected T createSpecialization(Object thisObj, T currentHead, int cachedCount, Object value)
protected static boolean alwaysUseStore(com.oracle.truffle.api.object.DynamicObject store,
Object key)
protected final void deoptimize()
protected T retryCache()
protected void invalidateCache()
protected static <T extends PropertyCacheNode.CacheNode<T>> boolean tryMergeShapes(com.oracle.truffle.api.object.Shape cacheShape, T head)
cacheShape - The new map to check againstprotected static <T extends PropertyCacheNode.CacheNode<T>> T filterValid(T cache)
protected static final com.oracle.truffle.api.object.DynamicObject wrapPrimitive(Object thisObject, JSContext context)
protected final PropertyCacheNode.AbstractShapeCheckNode createShapeCheckNode(com.oracle.truffle.api.object.Shape shape, JSDynamicObject thisObj, int depth, boolean isConstantObjectFinal, boolean isDefine)
protected static boolean prototypesInShape(com.oracle.truffle.api.object.DynamicObject thisObj,
int depth)
protected final boolean propertyAssumptionsValid(com.oracle.truffle.api.object.DynamicObject thisObj,
int depth,
boolean checkDepth0)
protected final PropertyCacheNode.ReceiverCheckNode createPrimitiveReceiverCheck(Object thisObj, int depth)
protected abstract boolean isGlobal()
protected abstract boolean isOwnProperty()
public final JSContext getContext()
protected abstract boolean isPropertyAssumptionCheckEnabled()
protected abstract void setPropertyAssumptionCheckEnabled(boolean value)
public com.oracle.truffle.api.nodes.NodeCost getCost()
getCost in class com.oracle.truffle.api.nodes.Nodeprotected static boolean isArrayLengthProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isFunctionLengthProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isFunctionNameProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isClassPrototypeProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isStringLengthProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isLazyRegexResultIndexProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isLazyNamedCaptureGroupProperty(com.oracle.truffle.api.object.Property property)
protected static boolean isNonIntegerIndex(Object key)
protected void traceRewriteEvictFinal(com.oracle.truffle.api.nodes.Node evicted)
protected static com.oracle.truffle.api.object.DynamicObjectLibrary createCachedAccess(Object key, PropertyCacheNode.ReceiverCheckNode receiverCheck, com.oracle.truffle.api.object.DynamicObject store)