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,Cloneable
- Direct Known Subclasses:
AmendModuleNode,ConstantEntriesLiteralNode,ElementsEntriesLiteralNode,ElementsLiteralNode,EntriesLiteralNode,PropertiesLiteralNode
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.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.Node.Child, com.oracle.truffle.api.nodes.Node.Children -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected longprotected final org.graalvm.collections.UnmodifiableEconomicMap<Object,ObjectMember> Fields inherited from class org.pkl.core.ast.expression.literal.ObjectLiteralNode
isCustomThisScope, language, parametersDescriptor, parameterTypes, qualifiedScopeNameFields inherited from class org.pkl.core.ast.PklNode
sourceSection -
Constructor Summary
ConstructorsConstructorDescriptionSpecializedObjectLiteralNode(com.oracle.truffle.api.source.SourceSection sourceSection, VmLanguage language, String qualifiedScopeName, boolean isCustomThisScope, @Nullable com.oracle.truffle.api.frame.FrameDescriptor parametersDescriptor, UnresolvedTypeNode[] parameterTypes, org.graalvm.collections.UnmodifiableEconomicMap<Object, ObjectMember> members) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddListEntries(com.oracle.truffle.api.frame.VirtualFrame frame, int parentLength, org.graalvm.collections.EconomicMap<Object, ObjectMember> result, ExpressionNode[] keyNodes, ObjectMember[] values) protected final booleanprotected final booleanprotected booleancheckIsValidTypedAmendment(Object parent) protected final booleancheckMaxListingMemberIndex(int parentLength) protected voidelementsEntriesFallback(Object parent, @Nullable ObjectMember firstElemOrEntry, boolean isElementsOnly) protected @Nullable ObjectMemberfindFirstNonDefaultProperty(org.graalvm.collections.UnmodifiableEconomicMap<Object, ObjectMember> members) protected @Nullable ObjectMemberfindFirstNonProperty(org.graalvm.collections.UnmodifiableEconomicMap<Object, ObjectMember> members) Methods inherited from class org.pkl.core.ast.expression.literal.ObjectLiteralNode
checkIsValidFunctionAmendment, copy, createAmendFunctionNode, executeWithParent, getParentNode, isTypedObjectClassMethods inherited from class org.pkl.core.ast.ExpressionNode
executeBoolean, executeFloat, executeGeneric, executeIntMethods inherited from class org.pkl.core.ast.PklNode
exceptionBuilder, getShortName, getSourceSection, toStringMethods 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 Details
-
members
-
maxListingMemberIndex
protected long maxListingMemberIndex
-
-
Constructor Details
-
SpecializedObjectLiteralNode
public SpecializedObjectLiteralNode(com.oracle.truffle.api.source.SourceSection sourceSection, VmLanguage language, String qualifiedScopeName, boolean isCustomThisScope, @Nullable @Nullable com.oracle.truffle.api.frame.FrameDescriptor parametersDescriptor, UnresolvedTypeNode[] parameterTypes, org.graalvm.collections.UnmodifiableEconomicMap<Object, ObjectMember> members)
-
-
Method Details
-
checkIsValidTypedAmendment
-
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<Object, ObjectMember> result, ExpressionNode[] keyNodes, ObjectMember[] values) -
findFirstNonProperty
@Nullable protected @Nullable ObjectMember findFirstNonProperty(org.graalvm.collections.UnmodifiableEconomicMap<Object, ObjectMember> members) -
findFirstNonDefaultProperty
@Nullable protected @Nullable ObjectMember findFirstNonDefaultProperty(org.graalvm.collections.UnmodifiableEconomicMap<Object, ObjectMember> members) -
elementsEntriesFallback
protected void elementsEntriesFallback(Object parent, @Nullable @Nullable ObjectMember firstElemOrEntry, boolean isElementsOnly)
-