Class SpecializedObjectLiteralNode

java.lang.Object
com.oracle.truffle.api.nodes.Node
All Implemented Interfaces:
com.oracle.truffle.api.nodes.NodeInterface, 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 Details

    • members

      protected final org.graalvm.collections.UnmodifiableEconomicMap<Object,ObjectMember> 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

      protected boolean checkIsValidTypedAmendment(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<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)