Class SpecializedObjectLiteralNode
- java.lang.Object
-
- com.oracle.truffle.api.nodes.Node
-
- org.pkl.core.ast.PklNode
-
- org.pkl.core.ast.ExpressionNode
-
- org.pkl.core.ast.expression.literal.ObjectLiteralNode
-
- org.pkl.core.ast.expression.literal.SpecializedObjectLiteralNode
-
- All Implemented Interfaces:
com.oracle.truffle.api.nodes.NodeInterface,java.lang.Cloneable
- Direct Known Subclasses:
AmendModuleNode,ConstantEntriesLiteralNode,ElementsEntriesLiteralNode,ElementsLiteralNode,EntriesLiteralNode,PropertiesLiteralNode
public abstract class SpecializedObjectLiteralNode extends ObjectLiteralNode
Base class for object literal nodes specialized for a certain mix of property/entry/element definitions. The motivation for this specialization is to do as much object construction and validation work as possible only once or a few times (via `@Cached`) per object literal, instead of repeating it for every object instantiation.
-
-
Field Summary
Fields Modifier and Type Field Description protected longmaxListingMemberIndexprotected org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember>members-
Fields inherited from class org.pkl.core.ast.expression.literal.ObjectLiteralNode
isCustomThisScope, language, parametersDescriptor, parameterTypes, qualifiedScopeName
-
Fields inherited from class org.pkl.core.ast.PklNode
sourceSection
-
-
Constructor Summary
Constructors Constructor Description SpecializedObjectLiteralNode(com.oracle.truffle.api.source.SourceSection sourceSection, VmLanguage language, java.lang.String qualifiedScopeName, boolean isCustomThisScope, @Nullable com.oracle.truffle.api.frame.FrameDescriptor parametersDescriptor, UnresolvedTypeNode[] parameterTypes, org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddListEntries(com.oracle.truffle.api.frame.VirtualFrame frame, int parentLength, org.graalvm.collections.EconomicMap<java.lang.Object,ObjectMember> result, ExpressionNode[] keyNodes, ObjectMember[] values)protected booleancheckIsValidListingAmendment()protected booleancheckIsValidMappingAmendment()protected booleancheckIsValidTypedAmendment(java.lang.Object parent)protected booleancheckMaxListingMemberIndex(int parentLength)protected voidelementsEntriesFallback(java.lang.Object parent, @Nullable ObjectMember firstElemOrEntry, boolean isElementsOnly)protected @Nullable ObjectMemberfindFirstNonDefaultProperty(org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members)protected @Nullable ObjectMemberfindFirstNonProperty(org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members)-
Methods inherited from class org.pkl.core.ast.expression.literal.ObjectLiteralNode
checkIsValidFunctionAmendment, copy, createAmendFunctionNode, executeWithParent, getParentNode, isTypedObjectClass
-
Methods inherited from class org.pkl.core.ast.ExpressionNode
executeBoolean, executeFloat, executeGeneric, executeInt
-
Methods inherited from class org.pkl.core.ast.PklNode
exceptionBuilder, getShortName, getSourceSection, toString
-
Methods inherited from class com.oracle.truffle.api.nodes.Node
accept, adoptChildren, atomic, atomic, copy, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, onReplace, replace, replace, reportPolymorphicSpecialize
-
-
-
-
Field Detail
-
members
protected final org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members
-
maxListingMemberIndex
protected long maxListingMemberIndex
-
-
Constructor Detail
-
SpecializedObjectLiteralNode
public SpecializedObjectLiteralNode(com.oracle.truffle.api.source.SourceSection sourceSection, VmLanguage language, java.lang.String qualifiedScopeName, boolean isCustomThisScope, @Nullable com.oracle.truffle.api.frame.FrameDescriptor parametersDescriptor, UnresolvedTypeNode[] parameterTypes, org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members)
-
-
Method Detail
-
checkIsValidTypedAmendment
protected boolean checkIsValidTypedAmendment(java.lang.Object parent)
-
checkIsValidListingAmendment
protected final boolean checkIsValidListingAmendment()
-
checkIsValidMappingAmendment
protected final boolean checkIsValidMappingAmendment()
-
checkMaxListingMemberIndex
protected final boolean checkMaxListingMemberIndex(int parentLength)
-
addListEntries
protected void addListEntries(com.oracle.truffle.api.frame.VirtualFrame frame, int parentLength, org.graalvm.collections.EconomicMap<java.lang.Object,ObjectMember> result, ExpressionNode[] keyNodes, ObjectMember[] values)
-
findFirstNonProperty
protected @Nullable ObjectMember findFirstNonProperty(org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members)
-
findFirstNonDefaultProperty
protected @Nullable ObjectMember findFirstNonDefaultProperty(org.graalvm.collections.UnmodifiableEconomicMap<java.lang.Object,ObjectMember> members)
-
elementsEntriesFallback
protected void elementsEntriesFallback(java.lang.Object parent, @Nullable ObjectMember firstElemOrEntry, boolean isElementsOnly)
-
-