All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.oracle.truffle.polyglot.PolyglotValueDispatchFactory Maven / Gradle / Ivy

Go to download

Truffle is a multi-language framework for executing dynamic languages that achieves high performance when combined with Graal.

There is a newer version: 24.1.1
Show newest version
// CheckStyle: start generated
package com.oracle.truffle.polyglot;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.InlineSupport;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.RequiredField;
import com.oracle.truffle.api.dsl.InlineSupport.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.interop.InteropLibrary;
import com.oracle.truffle.api.library.LibraryFactory;
import com.oracle.truffle.api.nodes.DenyReplace;
import com.oracle.truffle.api.nodes.EncapsulatingNodeReference;
import com.oracle.truffle.api.nodes.ExplodeLoop;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
import com.oracle.truffle.polyglot.PolyglotLanguageContext.ToGuestValueNode;
import com.oracle.truffle.polyglot.PolyglotLanguageContext.ToGuestValuesNode;
import com.oracle.truffle.polyglot.PolyglotLanguageContext.ToHostValueNode;
import com.oracle.truffle.polyglot.PolyglotLanguageContextFactory.ToGuestValueNodeGen;
import com.oracle.truffle.polyglot.PolyglotLanguageContextFactory.ToGuestValuesNodeGen;
import com.oracle.truffle.polyglot.PolyglotLanguageContextFactory.ToHostValueNodeGen;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsClassLiteralNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsDateNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsDurationNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsInstantNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsNativePointerNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsTimeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsTimeZoneNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.AsTypeLiteralNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.CanExecuteNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.CanInstantiateNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.CanInvokeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ExecuteNoArgsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ExecuteNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ExecuteVoidNoArgsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ExecuteVoidNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetArrayElementNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetArraySizeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetBufferSizeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetHashEntriesIteratorNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetHashKeysIteratorNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetHashSizeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetHashValueNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetHashValueOrDefaultNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetHashValuesIteratorNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetIteratorNextElementNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetIteratorNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetMemberKeysNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetMemberNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetMetaParentsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetMetaQualifiedNameNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.GetMetaSimpleNameNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasArrayElementsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasBufferElementsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasHashEntriesNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasHashEntryNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasIteratorNextElementNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasIteratorNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasMemberNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasMembersNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.HasMetaParentsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.InvokeNoArgsNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.InvokeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsBufferWritableNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsDateNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsDurationNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsExceptionNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsIteratorNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsMetaInstanceNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsMetaObjectNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsNativePointerNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsNullNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsTimeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.IsTimeZoneNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.NewInstanceNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.PutHashEntryNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.PutMemberNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ReadBufferByteNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ReadBufferDoubleNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ReadBufferFloatNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ReadBufferIntNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ReadBufferLongNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ReadBufferShortNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.RemoveArrayElementNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.RemoveHashEntryNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.RemoveMemberNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.SetArrayElementNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.SharedExecuteNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.SharedInvokeNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.ThrowExceptionNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.WriteBufferByteNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.WriteBufferDoubleNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.WriteBufferFloatNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.WriteBufferIntNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.WriteBufferLongNode;
import com.oracle.truffle.polyglot.PolyglotValueDispatch.InteropValue.WriteBufferShortNode;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;

@GeneratedBy(PolyglotValueDispatch.class)
@SuppressWarnings({"javadoc", "unused"})
final class PolyglotValueDispatchFactory {

    private static final LibraryFactory INTEROP_LIBRARY_ = LibraryFactory.resolve(InteropLibrary.class);

    @GeneratedBy(InteropValue.class)
    static final class InteropValueFactory {

        /**
         * Debug Info: 
         *   Specialization {@link IsDateNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsDateNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsDateNode.class) @SuppressWarnings("javadoc") static final class IsDateNodeGen extends IsDateNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsDateNode#doCached}
             *   1: SpecializationActive {@link IsDateNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsDateNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsDateNode create(InteropValue interop) { return new IsDateNodeGen(interop); } @GeneratedBy(IsDateNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsDateNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link AsDateNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link AsDateNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(AsDateNode.class) @SuppressWarnings("javadoc") static final class AsDateNodeGen extends AsDateNode { private static final StateField CACHED0__AS_DATE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_AsDateNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link AsDateNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__AS_DATE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link AsDateNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_AsDateNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link AsDateNode#doCached}
             *   1: SpecializationActive {@link AsDateNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link AsDateNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private AsDateNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return AsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return AsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return AsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.AsDateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return AsDateNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static AsDateNode create(InteropValue interop) { return new AsDateNodeGen(interop); } @GeneratedBy(AsDateNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link AsDateNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link AsDateNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsTimeNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsTimeNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsTimeNode.class) @SuppressWarnings("javadoc") static final class IsTimeNodeGen extends IsTimeNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsTimeNode#doCached}
             *   1: SpecializationActive {@link IsTimeNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsTimeNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsTimeNode create(InteropValue interop) { return new IsTimeNodeGen(interop); } @GeneratedBy(IsTimeNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsTimeNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link AsTimeNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link AsTimeNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(AsTimeNode.class) @SuppressWarnings("javadoc") static final class AsTimeNodeGen extends AsTimeNode { private static final StateField CACHED0__AS_TIME_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_AsTimeNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link AsTimeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__AS_TIME_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link AsTimeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_AsTimeNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link AsTimeNode#doCached}
             *   1: SpecializationActive {@link AsTimeNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link AsTimeNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private AsTimeNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return AsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return AsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return AsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.AsTimeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return AsTimeNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static AsTimeNode create(InteropValue interop) { return new AsTimeNodeGen(interop); } @GeneratedBy(AsTimeNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link AsTimeNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link AsTimeNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsTimeZoneNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsTimeZoneNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsTimeZoneNode.class) @SuppressWarnings("javadoc") static final class IsTimeZoneNodeGen extends IsTimeZoneNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsTimeZoneNode#doCached}
             *   1: SpecializationActive {@link IsTimeZoneNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsTimeZoneNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsTimeZoneNode create(InteropValue interop) { return new IsTimeZoneNodeGen(interop); } @GeneratedBy(IsTimeZoneNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsTimeZoneNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link AsTimeZoneNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link AsTimeZoneNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(AsTimeZoneNode.class) @SuppressWarnings("javadoc") static final class AsTimeZoneNodeGen extends AsTimeZoneNode { private static final StateField CACHED0__AS_TIME_ZONE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_AsTimeZoneNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link AsTimeZoneNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__AS_TIME_ZONE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link AsTimeZoneNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_AsTimeZoneNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link AsTimeZoneNode#doCached}
             *   1: SpecializationActive {@link AsTimeZoneNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link AsTimeZoneNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private AsTimeZoneNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return AsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return AsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return AsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.AsTimeZoneNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return AsTimeZoneNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static AsTimeZoneNode create(InteropValue interop) { return new AsTimeZoneNodeGen(interop); } @GeneratedBy(AsTimeZoneNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link AsTimeZoneNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link AsTimeZoneNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsDurationNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsDurationNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsDurationNode.class) @SuppressWarnings("javadoc") static final class IsDurationNodeGen extends IsDurationNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsDurationNode#doCached}
             *   1: SpecializationActive {@link IsDurationNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsDurationNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsDurationNode create(InteropValue interop) { return new IsDurationNodeGen(interop); } @GeneratedBy(IsDurationNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsDurationNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link AsDurationNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link AsDurationNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(AsDurationNode.class) @SuppressWarnings("javadoc") static final class AsDurationNodeGen extends AsDurationNode { private static final StateField CACHED0__AS_DURATION_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_AsDurationNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link AsDurationNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__AS_DURATION_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link AsDurationNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_AsDurationNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link AsDurationNode#doCached}
             *   1: SpecializationActive {@link AsDurationNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link AsDurationNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private AsDurationNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return AsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return AsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return AsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.AsDurationNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return AsDurationNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static AsDurationNode create(InteropValue interop) { return new AsDurationNodeGen(interop); } @GeneratedBy(AsDurationNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link AsDurationNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link AsDurationNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link AsInstantNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link AsInstantNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(AsInstantNode.class) @SuppressWarnings("javadoc") static final class AsInstantNodeGen extends AsInstantNode { private static final StateField CACHED0__AS_INSTANT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_AsInstantNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link AsInstantNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__AS_INSTANT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link AsInstantNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_AsInstantNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link AsInstantNode#doCached}
             *   1: SpecializationActive {@link AsInstantNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link AsInstantNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private AsInstantNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return AsInstantNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return AsInstantNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return AsInstantNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.AsInstantNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return AsInstantNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static AsInstantNode create(InteropValue interop) { return new AsInstantNodeGen(interop); } @GeneratedBy(AsInstantNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link AsInstantNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link AsInstantNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link AsClassLiteralNode#doCached}
         *     Activation probability: 1.00000
         *     With/without class size: 32/9 bytes
         * 
*/ @GeneratedBy(AsClassLiteralNode.class) @SuppressWarnings("javadoc") static final class AsClassLiteralNodeGen extends AsClassLiteralNode { private static final StateField STATE_0_AsClassLiteralNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link AsClassLiteralNode#doCached}
             *   Parameter: {@link PolyglotToHostNode} toHost
             *   Inline method: {@link PolyglotToHostNodeGen#inline}
*/ private static final PolyglotToHostNode INLINED_TO_HOST_ = PolyglotToHostNodeGen.inline(InlineTarget.create(PolyglotToHostNode.class, STATE_0_AsClassLiteralNode_UPDATER.subUpdater(0, 4), ReferenceField.create(MethodHandles.lookup(), "toHost__field1_", Object.class), ReferenceField.create(MethodHandles.lookup(), "toHost__field2_", Node.class))); /** * State Info:
             *   0-3: InlinedCache
             *        Specialization: {@link AsClassLiteralNode#doCached}
             *        Parameter: {@link PolyglotToHostNode} toHost
             *        Inline method: {@link PolyglotToHostNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link AsClassLiteralNode#doCached}
             *   Parameter: {@link PolyglotToHostNode} toHost
             *   Inline method: {@link PolyglotToHostNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object toHost__field1_; /** * Source Info:
             *   Specialization: {@link AsClassLiteralNode#doCached}
             *   Parameter: {@link PolyglotToHostNode} toHost
             *   Inline method: {@link PolyglotToHostNodeGen#inline}
             *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node toHost__field2_; private AsClassLiteralNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doCached(arg0Value, arg1Value, arg2Value, INLINED_TO_HOST_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static AsClassLiteralNode create(InteropValue interop) { return new AsClassLiteralNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link AsTypeLiteralNode#doCached}
         *     Activation probability: 1.00000
         *     With/without class size: 32/9 bytes
         * 
*/ @GeneratedBy(AsTypeLiteralNode.class) @SuppressWarnings("javadoc") static final class AsTypeLiteralNodeGen extends AsTypeLiteralNode { private static final StateField STATE_0_AsTypeLiteralNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link AsTypeLiteralNode#doCached}
             *   Parameter: {@link PolyglotToHostNode} toHost
             *   Inline method: {@link PolyglotToHostNodeGen#inline}
*/ private static final PolyglotToHostNode INLINED_TO_HOST_ = PolyglotToHostNodeGen.inline(InlineTarget.create(PolyglotToHostNode.class, STATE_0_AsTypeLiteralNode_UPDATER.subUpdater(0, 4), ReferenceField.create(MethodHandles.lookup(), "toHost__field1_", Object.class), ReferenceField.create(MethodHandles.lookup(), "toHost__field2_", Node.class))); /** * State Info:
             *   0-3: InlinedCache
             *        Specialization: {@link AsTypeLiteralNode#doCached}
             *        Parameter: {@link PolyglotToHostNode} toHost
             *        Inline method: {@link PolyglotToHostNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link AsTypeLiteralNode#doCached}
             *   Parameter: {@link PolyglotToHostNode} toHost
             *   Inline method: {@link PolyglotToHostNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object toHost__field1_; /** * Source Info:
             *   Specialization: {@link AsTypeLiteralNode#doCached}
             *   Parameter: {@link PolyglotToHostNode} toHost
             *   Inline method: {@link PolyglotToHostNodeGen#inline}
             *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node toHost__field2_; private AsTypeLiteralNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doCached(arg0Value, arg1Value, arg2Value, INLINED_TO_HOST_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static AsTypeLiteralNode create(InteropValue interop) { return new AsTypeLiteralNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link IsNativePointerNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsNativePointerNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsNativePointerNode.class) @SuppressWarnings("javadoc") static final class IsNativePointerNodeGen extends IsNativePointerNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsNativePointerNode#doCached}
             *   1: SpecializationActive {@link IsNativePointerNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsNativePointerNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.natives_.accepts(arg1Value))) { Node node__ = (s0_); return IsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.natives_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary natives__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, natives__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.natives_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.natives_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary natives__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(natives__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'natives' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.natives_ = natives__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.natives_); } break; } } } { InteropLibrary natives__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); natives__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, natives__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsNativePointerNode create(InteropValue interop) { return new IsNativePointerNodeGen(interop); } @GeneratedBy(IsNativePointerNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsNativePointerNode#doCached}
                 *   Parameter: {@link InteropLibrary} natives
*/ @Child InteropLibrary natives_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link AsNativePointerNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link AsNativePointerNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(AsNativePointerNode.class) @SuppressWarnings("javadoc") static final class AsNativePointerNodeGen extends AsNativePointerNode { private static final StateField CACHED0__AS_NATIVE_POINTER_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_AsNativePointerNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link AsNativePointerNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__AS_NATIVE_POINTER_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link AsNativePointerNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_AsNativePointerNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link AsNativePointerNode#doCached}
             *   1: SpecializationActive {@link AsNativePointerNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link AsNativePointerNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private AsNativePointerNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.natives_.accepts(arg1Value))) { Node node__ = (s0_); return AsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.natives_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary natives__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return AsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, natives__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.natives_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.natives_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary natives__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(natives__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'natives' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.natives_ = natives__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return AsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.natives_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary natives__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); natives__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.AsNativePointerNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return AsNativePointerNode.doCached(arg0Value, arg1Value, arg2Value, node__, natives__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static AsNativePointerNode create(InteropValue interop) { return new AsNativePointerNodeGen(interop); } @GeneratedBy(AsNativePointerNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link AsNativePointerNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link AsNativePointerNode#doCached}
                 *   Parameter: {@link InteropLibrary} natives
*/ @Child InteropLibrary natives_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link HasArrayElementsNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link HasArrayElementsNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(HasArrayElementsNode.class) @SuppressWarnings("javadoc") static final class HasArrayElementsNodeGen extends HasArrayElementsNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link HasArrayElementsNode#doCached}
             *   1: SpecializationActive {@link HasArrayElementsNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasArrayElementsNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { Node node__ = (s0_); return HasArrayElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasArrayElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.arrays_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary arrays__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(arrays__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'arrays' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.arrays_ = arrays__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasArrayElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_); } break; } } } { InteropLibrary arrays__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasArrayElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return HasArrayElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasArrayElementsNode create(InteropValue interop) { return new HasArrayElementsNodeGen(interop); } @GeneratedBy(HasArrayElementsNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link HasArrayElementsNode#doCached}
                 *   Parameter: {@link InteropLibrary} arrays
*/ @Child InteropLibrary arrays_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link GetMemberKeysNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetMemberKeysNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetMemberKeysNode.class) @SuppressWarnings("javadoc") static final class GetMemberKeysNodeGen extends GetMemberKeysNode { private static final StateField CACHED0__GET_MEMBER_KEYS_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetMemberKeysNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetMemberKeysNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_MEMBER_KEYS_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetMemberKeysNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_MEMBER_KEYS_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetMemberKeysNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetMemberKeysNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetMemberKeysNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetMemberKeysNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetMemberKeysNode#doCached}
             *   1: SpecializationActive {@link GetMemberKeysNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetMemberKeysNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetMemberKeysNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetMemberKeysNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetMemberKeysNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return GetMemberKeysNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetMemberKeysNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetMemberKeysNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetMemberKeysNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetMemberKeysNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetMemberKeysNode create(InteropValue interop) { return new GetMemberKeysNodeGen(interop); } @GeneratedBy(GetMemberKeysNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetMemberKeysNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetMemberKeysNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetMemberKeysNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link GetMemberKeysNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetArrayElementNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetArrayElementNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetArrayElementNode.class) @SuppressWarnings("javadoc") static final class GetArrayElementNodeGen extends GetArrayElementNode { private static final StateField CACHED0__GET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetArrayElementNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetArrayElementNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetArrayElementNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetArrayElementNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetArrayElementNode#doCached}
             *   1: SpecializationActive {@link GetArrayElementNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetArrayElementNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link GetArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetArrayElementNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetArrayElementNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { Node node__ = (s0_); return GetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.arrays_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary arrays__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(arrays__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'arrays' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.arrays_ = arrays__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary arrays__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetArrayElementNode create(InteropValue interop) { return new GetArrayElementNodeGen(interop); } @GeneratedBy(GetArrayElementNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetArrayElementNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link GetArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetArrayElementNode#doCached}
                 *   Parameter: {@link InteropLibrary} arrays
*/ @Child InteropLibrary arrays_; /** * Source Info:
                 *   Specialization: {@link GetArrayElementNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link SetArrayElementNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link SetArrayElementNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(SetArrayElementNode.class) @SuppressWarnings("javadoc") static final class SetArrayElementNodeGen extends SetArrayElementNode { private static final StateField CACHED0__SET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_SetArrayElementNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__SET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__SET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__SET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__SET_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(5, 1))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_SetArrayElementNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_SetArrayElementNode_UPDATER.subUpdater(5, 1))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_SetArrayElementNode_UPDATER.subUpdater(6, 1))); /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_SetArrayElementNode_UPDATER.subUpdater(7, 1))); /** * State Info:
             *   0: SpecializationActive {@link SetArrayElementNode#doCached}
             *   1: SpecializationActive {@link SetArrayElementNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link SetArrayElementNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestValue
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   5: InlinedCache
             *        Specialization: {@link SetArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   6: InlinedCache
             *        Specialization: {@link SetArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   7: InlinedCache
             *        Specialization: {@link SetArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link SetArrayElementNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestValue__field1_; private SetArrayElementNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { Node node__ = (s0_); return SetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_TO_GUEST_VALUE_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return SetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_TO_GUEST_VALUE_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.arrays_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary arrays__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(arrays__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'arrays' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.arrays_ = arrays__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return SetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_TO_GUEST_VALUE_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary arrays__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.SetArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return SetArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_TO_GUEST_VALUE_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static SetArrayElementNode create(InteropValue interop) { return new SetArrayElementNodeGen(interop); } @GeneratedBy(SetArrayElementNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link SetArrayElementNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestValue
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link SetArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   4: InlinedCache
                 *        Specialization: {@link SetArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   5: InlinedCache
                 *        Specialization: {@link SetArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link SetArrayElementNode#doCached}
                 *   Parameter: {@link InteropLibrary} arrays
*/ @Child InteropLibrary arrays_; /** * Source Info:
                 *   Specialization: {@link SetArrayElementNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestValue
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestValue__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link RemoveArrayElementNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link RemoveArrayElementNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(RemoveArrayElementNode.class) @SuppressWarnings("javadoc") static final class RemoveArrayElementNodeGen extends RemoveArrayElementNode { private static final StateField CACHED0__REMOVE_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_RemoveArrayElementNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link RemoveArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__REMOVE_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link RemoveArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__REMOVE_ARRAY_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link RemoveArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_RemoveArrayElementNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link RemoveArrayElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_RemoveArrayElementNode_UPDATER.subUpdater(3, 1))); /** * State Info:
             *   0: SpecializationActive {@link RemoveArrayElementNode#doCached}
             *   1: SpecializationActive {@link RemoveArrayElementNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link RemoveArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link RemoveArrayElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private RemoveArrayElementNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { Node node__ = (s0_); return RemoveArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return RemoveArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.arrays_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary arrays__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(arrays__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)' cache 'arrays' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.arrays_ = arrays__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return RemoveArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_); } break; } } } { InteropLibrary arrays__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.RemoveArrayElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return RemoveArrayElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static RemoveArrayElementNode create(InteropValue interop) { return new RemoveArrayElementNodeGen(interop); } @GeneratedBy(RemoveArrayElementNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link RemoveArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link RemoveArrayElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link RemoveArrayElementNode#doCached}
                 *   Parameter: {@link InteropLibrary} arrays
*/ @Child InteropLibrary arrays_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetArraySizeNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link GetArraySizeNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(GetArraySizeNode.class) @SuppressWarnings("javadoc") static final class GetArraySizeNodeGen extends GetArraySizeNode { private static final StateField CACHED0__GET_ARRAY_SIZE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetArraySizeNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetArraySizeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_ARRAY_SIZE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link GetArraySizeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetArraySizeNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetArraySizeNode#doCached}
             *   1: SpecializationActive {@link GetArraySizeNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link GetArraySizeNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private GetArraySizeNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { Node node__ = (s0_); return GetArraySizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetArraySizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.arrays_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.arrays_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary arrays__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(arrays__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'arrays' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.arrays_ = arrays__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetArraySizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.arrays_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary arrays__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); arrays__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetArraySizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetArraySizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, arrays__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetArraySizeNode create(InteropValue interop) { return new GetArraySizeNodeGen(interop); } @GeneratedBy(GetArraySizeNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link GetArraySizeNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetArraySizeNode#doCached}
                 *   Parameter: {@link InteropLibrary} arrays
*/ @Child InteropLibrary arrays_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link HasBufferElementsNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link HasBufferElementsNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(HasBufferElementsNode.class) @SuppressWarnings("javadoc") static final class HasBufferElementsNodeGen extends HasBufferElementsNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link HasBufferElementsNode#doCached}
             *   1: SpecializationActive {@link HasBufferElementsNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasBufferElementsNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return HasBufferElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasBufferElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasBufferElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasBufferElementsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return HasBufferElementsNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasBufferElementsNode create(InteropValue interop) { return new HasBufferElementsNodeGen(interop); } @GeneratedBy(HasBufferElementsNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link HasBufferElementsNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link IsBufferWritableNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link IsBufferWritableNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(IsBufferWritableNode.class) @SuppressWarnings("javadoc") static final class IsBufferWritableNodeGen extends IsBufferWritableNode { private static final StateField CACHED0__IS_BUFFER_WRITABLE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_IsBufferWritableNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link IsBufferWritableNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__IS_BUFFER_WRITABLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link IsBufferWritableNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_IsBufferWritableNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link IsBufferWritableNode#doCached}
             *   1: SpecializationActive {@link IsBufferWritableNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link IsBufferWritableNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsBufferWritableNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return IsBufferWritableNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsBufferWritableNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsBufferWritableNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsBufferWritableNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return IsBufferWritableNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsBufferWritableNode create(InteropValue interop) { return new IsBufferWritableNodeGen(interop); } @GeneratedBy(IsBufferWritableNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link IsBufferWritableNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link IsBufferWritableNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetBufferSizeNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link GetBufferSizeNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(GetBufferSizeNode.class) @SuppressWarnings("javadoc") static final class GetBufferSizeNodeGen extends GetBufferSizeNode { private static final StateField CACHED0__GET_BUFFER_SIZE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetBufferSizeNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetBufferSizeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_BUFFER_SIZE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link GetBufferSizeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetBufferSizeNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetBufferSizeNode#doCached}
             *   1: SpecializationActive {@link GetBufferSizeNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link GetBufferSizeNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private GetBufferSizeNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return GetBufferSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetBufferSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetBufferSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetBufferSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetBufferSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetBufferSizeNode create(InteropValue interop) { return new GetBufferSizeNodeGen(interop); } @GeneratedBy(GetBufferSizeNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link GetBufferSizeNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetBufferSizeNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ReadBufferByteNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link ReadBufferByteNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(ReadBufferByteNode.class) @SuppressWarnings("javadoc") static final class ReadBufferByteNodeGen extends ReadBufferByteNode { private static final StateField CACHED0__READ_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ReadBufferByteNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__READ_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ReadBufferByteNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferByteNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferByteNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link ReadBufferByteNode#doCached}
             *   1: SpecializationActive {@link ReadBufferByteNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link ReadBufferByteNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link ReadBufferByteNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link ReadBufferByteNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link ReadBufferByteNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private ReadBufferByteNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return ReadBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ReadBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ReadBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ReadBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return ReadBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ReadBufferByteNode create(InteropValue interop) { return new ReadBufferByteNodeGen(interop); } @GeneratedBy(ReadBufferByteNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link ReadBufferByteNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link ReadBufferByteNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link ReadBufferByteNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ReadBufferByteNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; /** * Source Info:
                 *   Specialization: {@link ReadBufferByteNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link WriteBufferByteNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link WriteBufferByteNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(WriteBufferByteNode.class) @SuppressWarnings("javadoc") static final class WriteBufferByteNodeGen extends WriteBufferByteNode { private static final StateField CACHED0__WRITE_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_WriteBufferByteNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link WriteBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_BYTE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferByteNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferByteNode_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferByteNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferByteNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link WriteBufferByteNode#doCached}
             *   1: SpecializationActive {@link WriteBufferByteNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link WriteBufferByteNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link WriteBufferByteNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   4: InlinedCache
             *        Specialization: {@link WriteBufferByteNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private WriteBufferByteNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return WriteBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return WriteBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return WriteBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.WriteBufferByteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return WriteBufferByteNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static WriteBufferByteNode create(InteropValue interop) { return new WriteBufferByteNodeGen(interop); } @GeneratedBy(WriteBufferByteNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link WriteBufferByteNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link WriteBufferByteNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link WriteBufferByteNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link WriteBufferByteNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ReadBufferShortNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link ReadBufferShortNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(ReadBufferShortNode.class) @SuppressWarnings("javadoc") static final class ReadBufferShortNodeGen extends ReadBufferShortNode { private static final StateField CACHED0__READ_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ReadBufferShortNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__READ_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ReadBufferShortNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferShortNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferShortNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link ReadBufferShortNode#doCached}
             *   1: SpecializationActive {@link ReadBufferShortNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link ReadBufferShortNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link ReadBufferShortNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link ReadBufferShortNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link ReadBufferShortNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private ReadBufferShortNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return ReadBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ReadBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ReadBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ReadBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return ReadBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ReadBufferShortNode create(InteropValue interop) { return new ReadBufferShortNodeGen(interop); } @GeneratedBy(ReadBufferShortNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link ReadBufferShortNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link ReadBufferShortNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link ReadBufferShortNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ReadBufferShortNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; /** * Source Info:
                 *   Specialization: {@link ReadBufferShortNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link WriteBufferShortNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link WriteBufferShortNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(WriteBufferShortNode.class) @SuppressWarnings("javadoc") static final class WriteBufferShortNodeGen extends WriteBufferShortNode { private static final StateField CACHED0__WRITE_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_WriteBufferShortNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link WriteBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_SHORT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferShortNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferShortNode_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferShortNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferShortNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link WriteBufferShortNode#doCached}
             *   1: SpecializationActive {@link WriteBufferShortNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link WriteBufferShortNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link WriteBufferShortNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   4: InlinedCache
             *        Specialization: {@link WriteBufferShortNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private WriteBufferShortNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return WriteBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return WriteBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return WriteBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.WriteBufferShortNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return WriteBufferShortNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static WriteBufferShortNode create(InteropValue interop) { return new WriteBufferShortNodeGen(interop); } @GeneratedBy(WriteBufferShortNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link WriteBufferShortNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link WriteBufferShortNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link WriteBufferShortNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link WriteBufferShortNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ReadBufferIntNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link ReadBufferIntNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(ReadBufferIntNode.class) @SuppressWarnings("javadoc") static final class ReadBufferIntNodeGen extends ReadBufferIntNode { private static final StateField CACHED0__READ_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ReadBufferIntNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__READ_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ReadBufferIntNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferIntNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferIntNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link ReadBufferIntNode#doCached}
             *   1: SpecializationActive {@link ReadBufferIntNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link ReadBufferIntNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link ReadBufferIntNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link ReadBufferIntNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link ReadBufferIntNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private ReadBufferIntNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return ReadBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ReadBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ReadBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ReadBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return ReadBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ReadBufferIntNode create(InteropValue interop) { return new ReadBufferIntNodeGen(interop); } @GeneratedBy(ReadBufferIntNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link ReadBufferIntNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link ReadBufferIntNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link ReadBufferIntNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ReadBufferIntNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; /** * Source Info:
                 *   Specialization: {@link ReadBufferIntNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link WriteBufferIntNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link WriteBufferIntNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(WriteBufferIntNode.class) @SuppressWarnings("javadoc") static final class WriteBufferIntNodeGen extends WriteBufferIntNode { private static final StateField CACHED0__WRITE_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_WriteBufferIntNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link WriteBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_INT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferIntNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferIntNode_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferIntNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferIntNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link WriteBufferIntNode#doCached}
             *   1: SpecializationActive {@link WriteBufferIntNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link WriteBufferIntNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link WriteBufferIntNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   4: InlinedCache
             *        Specialization: {@link WriteBufferIntNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private WriteBufferIntNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return WriteBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return WriteBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return WriteBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.WriteBufferIntNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return WriteBufferIntNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static WriteBufferIntNode create(InteropValue interop) { return new WriteBufferIntNodeGen(interop); } @GeneratedBy(WriteBufferIntNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link WriteBufferIntNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link WriteBufferIntNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link WriteBufferIntNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link WriteBufferIntNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ReadBufferLongNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link ReadBufferLongNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(ReadBufferLongNode.class) @SuppressWarnings("javadoc") static final class ReadBufferLongNodeGen extends ReadBufferLongNode { private static final StateField CACHED0__READ_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ReadBufferLongNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__READ_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ReadBufferLongNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferLongNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferLongNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link ReadBufferLongNode#doCached}
             *   1: SpecializationActive {@link ReadBufferLongNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link ReadBufferLongNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link ReadBufferLongNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link ReadBufferLongNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link ReadBufferLongNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private ReadBufferLongNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return ReadBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ReadBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ReadBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ReadBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return ReadBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ReadBufferLongNode create(InteropValue interop) { return new ReadBufferLongNodeGen(interop); } @GeneratedBy(ReadBufferLongNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link ReadBufferLongNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link ReadBufferLongNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link ReadBufferLongNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ReadBufferLongNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; /** * Source Info:
                 *   Specialization: {@link ReadBufferLongNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link WriteBufferLongNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link WriteBufferLongNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(WriteBufferLongNode.class) @SuppressWarnings("javadoc") static final class WriteBufferLongNodeGen extends WriteBufferLongNode { private static final StateField CACHED0__WRITE_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_WriteBufferLongNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link WriteBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_LONG_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferLongNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferLongNode_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferLongNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferLongNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link WriteBufferLongNode#doCached}
             *   1: SpecializationActive {@link WriteBufferLongNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link WriteBufferLongNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link WriteBufferLongNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   4: InlinedCache
             *        Specialization: {@link WriteBufferLongNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private WriteBufferLongNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return WriteBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return WriteBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return WriteBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.WriteBufferLongNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return WriteBufferLongNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static WriteBufferLongNode create(InteropValue interop) { return new WriteBufferLongNodeGen(interop); } @GeneratedBy(WriteBufferLongNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link WriteBufferLongNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link WriteBufferLongNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link WriteBufferLongNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link WriteBufferLongNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ReadBufferFloatNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link ReadBufferFloatNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(ReadBufferFloatNode.class) @SuppressWarnings("javadoc") static final class ReadBufferFloatNodeGen extends ReadBufferFloatNode { private static final StateField CACHED0__READ_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ReadBufferFloatNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__READ_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ReadBufferFloatNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferFloatNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferFloatNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link ReadBufferFloatNode#doCached}
             *   1: SpecializationActive {@link ReadBufferFloatNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link ReadBufferFloatNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link ReadBufferFloatNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link ReadBufferFloatNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link ReadBufferFloatNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private ReadBufferFloatNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return ReadBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ReadBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ReadBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ReadBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return ReadBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ReadBufferFloatNode create(InteropValue interop) { return new ReadBufferFloatNodeGen(interop); } @GeneratedBy(ReadBufferFloatNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link ReadBufferFloatNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link ReadBufferFloatNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link ReadBufferFloatNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ReadBufferFloatNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; /** * Source Info:
                 *   Specialization: {@link ReadBufferFloatNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link WriteBufferFloatNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link WriteBufferFloatNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(WriteBufferFloatNode.class) @SuppressWarnings("javadoc") static final class WriteBufferFloatNodeGen extends WriteBufferFloatNode { private static final StateField CACHED0__WRITE_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_WriteBufferFloatNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link WriteBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_FLOAT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferFloatNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferFloatNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferFloatNode_UPDATER.subUpdater(3, 1))); /** * State Info:
             *   0: SpecializationActive {@link WriteBufferFloatNode#doCached}
             *   1: SpecializationActive {@link WriteBufferFloatNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link WriteBufferFloatNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link WriteBufferFloatNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private WriteBufferFloatNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return WriteBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return WriteBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return WriteBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.WriteBufferFloatNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return WriteBufferFloatNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static WriteBufferFloatNode create(InteropValue interop) { return new WriteBufferFloatNodeGen(interop); } @GeneratedBy(WriteBufferFloatNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link WriteBufferFloatNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link WriteBufferFloatNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link WriteBufferFloatNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ReadBufferDoubleNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link ReadBufferDoubleNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(ReadBufferDoubleNode.class) @SuppressWarnings("javadoc") static final class ReadBufferDoubleNodeGen extends ReadBufferDoubleNode { private static final StateField CACHED0__READ_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ReadBufferDoubleNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__READ_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__READ_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ReadBufferDoubleNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferDoubleNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ReadBufferDoubleNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link ReadBufferDoubleNode#doCached}
             *   1: SpecializationActive {@link ReadBufferDoubleNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link ReadBufferDoubleNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link ReadBufferDoubleNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link ReadBufferDoubleNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link ReadBufferDoubleNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private ReadBufferDoubleNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return ReadBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ReadBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ReadBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ReadBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return ReadBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ReadBufferDoubleNode create(InteropValue interop) { return new ReadBufferDoubleNodeGen(interop); } @GeneratedBy(ReadBufferDoubleNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link ReadBufferDoubleNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link ReadBufferDoubleNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link ReadBufferDoubleNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ReadBufferDoubleNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; /** * Source Info:
                 *   Specialization: {@link ReadBufferDoubleNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link WriteBufferDoubleNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link WriteBufferDoubleNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(WriteBufferDoubleNode.class) @SuppressWarnings("javadoc") static final class WriteBufferDoubleNodeGen extends WriteBufferDoubleNode { private static final StateField CACHED0__WRITE_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_WriteBufferDoubleNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link WriteBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__WRITE_BUFFER_DOUBLE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferDoubleNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidIndex
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_INDEX_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferDoubleNode_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link WriteBufferDoubleNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_WriteBufferDoubleNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link WriteBufferDoubleNode#doCached}
             *   1: SpecializationActive {@link WriteBufferDoubleNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link WriteBufferDoubleNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link WriteBufferDoubleNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidIndex
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   4: InlinedCache
             *        Specialization: {@link WriteBufferDoubleNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private WriteBufferDoubleNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { Node node__ = (s0_); return WriteBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return WriteBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.buffers_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.buffers_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary buffers__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(buffers__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'buffers' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.buffers_ = buffers__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return WriteBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.buffers_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_INDEX_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary buffers__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); buffers__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.WriteBufferDoubleNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return WriteBufferDoubleNode.doCached(arg0Value, arg1Value, arg2Value, node__, buffers__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_INDEX_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static WriteBufferDoubleNode create(InteropValue interop) { return new WriteBufferDoubleNodeGen(interop); } @GeneratedBy(WriteBufferDoubleNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link WriteBufferDoubleNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link WriteBufferDoubleNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidIndex
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link WriteBufferDoubleNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link WriteBufferDoubleNode#doCached}
                 *   Parameter: {@link InteropLibrary} buffers
*/ @Child InteropLibrary buffers_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetMemberNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetMemberNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetMemberNode.class) @SuppressWarnings("javadoc") static final class GetMemberNodeGen extends GetMemberNode { private static final StateField CACHED0__GET_MEMBER_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetMemberNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_MEMBER_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_MEMBER_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_MEMBER_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetMemberNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetMemberNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetMemberNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetMemberNode#doCached}
             *   1: SpecializationActive {@link GetMemberNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetMemberNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link GetMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetMemberNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetMemberNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return GetMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetMemberNode create(InteropValue interop) { return new GetMemberNodeGen(interop); } @GeneratedBy(GetMemberNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetMemberNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetMemberNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link GetMemberNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetMemberNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link GetMemberNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link PutMemberNode#doCached}
         *     Activation probability: 1.00000
         *     With/without class size: 32/9 bytes
         * 
*/ @GeneratedBy(PutMemberNode.class) @SuppressWarnings("javadoc") static final class PutMemberNodeGen extends PutMemberNode { private static final StateField STATE_0_PutMemberNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link PutMemberNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_TO_GUEST_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_PutMemberNode_UPDATER.subUpdater(1, 3), ReferenceField.create(MethodHandles.lookup(), "toGuestValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link PutMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_PutMemberNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link PutMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_PutMemberNode_UPDATER.subUpdater(5, 1))); /** * Source Info:
             *   Specialization: {@link PutMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_PutMemberNode_UPDATER.subUpdater(6, 1))); /** * State Info:
             *   0: SpecializationActive {@link PutMemberNode#doCached}
             *   1-3: InlinedCache
             *        Specialization: {@link PutMemberNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestValue
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link PutMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link PutMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   6: InlinedCache
             *        Specialization: {@link PutMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link PutMemberNode#doCached}
             *   Parameter: {@link InteropLibrary} objects
*/ @Child private InteropLibrary objects_; /** * Source Info:
             *   Specialization: {@link PutMemberNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object toGuestValue__field1_; private PutMemberNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.PutMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { { InteropLibrary objects__ = this.objects_; if (objects__ != null) { Node node__ = (this); return PutMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_TO_GUEST_VALUE_, INLINED_UNSUPPORTED_, INLINED_INVALID_VALUE_, INLINED_UNKNOWN_); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; node__ = (this); InteropLibrary objects__ = this.insert((INTEROP_LIBRARY_.createDispatched(InteropNode.CACHE_LIMIT))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); VarHandle.storeStoreFence(); this.objects_ = objects__; state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.PutMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return PutMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_TO_GUEST_VALUE_, INLINED_UNSUPPORTED_, INLINED_INVALID_VALUE_, INLINED_UNKNOWN_); } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b1) == 0) { return NodeCost.UNINITIALIZED; } else { return NodeCost.MONOMORPHIC; } } @NeverDefault public static PutMemberNode create(InteropValue interop) { return new PutMemberNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link RemoveMemberNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link RemoveMemberNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(RemoveMemberNode.class) @SuppressWarnings("javadoc") static final class RemoveMemberNodeGen extends RemoveMemberNode { private static final StateField CACHED0__REMOVE_MEMBER_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_RemoveMemberNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link RemoveMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__REMOVE_MEMBER_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link RemoveMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__REMOVE_MEMBER_NODE_CACHED0_STATE_0_UPDATER.subUpdater(1, 1))); /** * Source Info:
             *   Specialization: {@link RemoveMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_RemoveMemberNode_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link RemoveMemberNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unknown
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNKNOWN_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_RemoveMemberNode_UPDATER.subUpdater(3, 1))); /** * State Info:
             *   0: SpecializationActive {@link RemoveMemberNode#doCached}
             *   1: SpecializationActive {@link RemoveMemberNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link RemoveMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   3: InlinedCache
             *        Specialization: {@link RemoveMemberNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unknown
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private RemoveMemberNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return RemoveMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return RemoveMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return RemoveMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_UNKNOWN_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.RemoveMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return RemoveMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_UNKNOWN_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static RemoveMemberNode create(InteropValue interop) { return new RemoveMemberNodeGen(interop); } @GeneratedBy(RemoveMemberNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link RemoveMemberNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   1: InlinedCache
                 *        Specialization: {@link RemoveMemberNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unknown
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link RemoveMemberNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsNullNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsNullNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsNullNode.class) @SuppressWarnings("javadoc") static final class IsNullNodeGen extends IsNullNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsNullNode#doCached}
             *   1: SpecializationActive {@link IsNullNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsNullNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.values_.accepts(arg1Value))) { Node node__ = (s0_); return IsNullNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.values_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary values__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsNullNode.doCached(arg0Value, arg1Value, arg2Value, node__, values__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.values_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.values_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary values__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(values__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'values' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.values_ = values__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsNullNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.values_); } break; } } } { InteropLibrary values__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); values__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsNullNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsNullNode.doCached(arg0Value, arg1Value, arg2Value, node__, values__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsNullNode create(InteropValue interop) { return new IsNullNodeGen(interop); } @GeneratedBy(IsNullNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsNullNode#doCached}
                 *   Parameter: {@link InteropLibrary} values
*/ @Child InteropLibrary values_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link HasMembersNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link HasMembersNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(HasMembersNode.class) @SuppressWarnings("javadoc") static final class HasMembersNodeGen extends HasMembersNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link HasMembersNode#doCached}
             *   1: SpecializationActive {@link HasMembersNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasMembersNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return HasMembersNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasMembersNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasMembersNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasMembersNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return HasMembersNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasMembersNode create(InteropValue interop) { return new HasMembersNodeGen(interop); } @GeneratedBy(HasMembersNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link HasMembersNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link HasMemberNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link HasMemberNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(HasMemberNode.class) @SuppressWarnings("javadoc") static final class HasMemberNodeGen extends HasMemberNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link HasMemberNode#doCached}
             *   1: SpecializationActive {@link HasMemberNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasMemberNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return HasMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasMemberNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return HasMemberNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasMemberNode create(InteropValue interop) { return new HasMemberNodeGen(interop); } @GeneratedBy(HasMemberNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link HasMemberNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link CanInvokeNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link CanInvokeNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(CanInvokeNode.class) @SuppressWarnings("javadoc") static final class CanInvokeNodeGen extends CanInvokeNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link CanInvokeNode#doCached}
             *   1: SpecializationActive {@link CanInvokeNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private CanInvokeNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return CanInvokeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return CanInvokeNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return CanInvokeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.CanInvokeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return CanInvokeNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static CanInvokeNode create(InteropValue interop) { return new CanInvokeNodeGen(interop); } @GeneratedBy(CanInvokeNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link CanInvokeNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link CanExecuteNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link CanExecuteNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(CanExecuteNode.class) @SuppressWarnings("javadoc") static final class CanExecuteNodeGen extends CanExecuteNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link CanExecuteNode#doCached}
             *   1: SpecializationActive {@link CanExecuteNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private CanExecuteNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.executables_.accepts(arg1Value))) { Node node__ = (s0_); return CanExecuteNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.executables_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary executables__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return CanExecuteNode.doCached(arg0Value, arg1Value, arg2Value, node__, executables__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.executables_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.executables_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary executables__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(executables__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'executables' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.executables_ = executables__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return CanExecuteNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.executables_); } break; } } } { InteropLibrary executables__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); executables__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.CanExecuteNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return CanExecuteNode.doCached(arg0Value, arg1Value, arg2Value, node__, executables__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static CanExecuteNode create(InteropValue interop) { return new CanExecuteNodeGen(interop); } @GeneratedBy(CanExecuteNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link CanExecuteNode#doCached}
                 *   Parameter: {@link InteropLibrary} executables
*/ @Child InteropLibrary executables_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link CanInstantiateNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link CanInstantiateNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(CanInstantiateNode.class) @SuppressWarnings("javadoc") static final class CanInstantiateNodeGen extends CanInstantiateNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link CanInstantiateNode#doCached}
             *   1: SpecializationActive {@link CanInstantiateNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private CanInstantiateNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.instantiables_.accepts(arg1Value))) { Node node__ = (s0_); return CanInstantiateNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.instantiables_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary instantiables__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return CanInstantiateNode.doCached(arg0Value, arg1Value, arg2Value, node__, instantiables__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.instantiables_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.instantiables_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary instantiables__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(instantiables__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'instantiables' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.instantiables_ = instantiables__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return CanInstantiateNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.instantiables_); } break; } } } { InteropLibrary instantiables__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); instantiables__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.CanInstantiateNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return CanInstantiateNode.doCached(arg0Value, arg1Value, arg2Value, node__, instantiables__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static CanInstantiateNode create(InteropValue interop) { return new CanInstantiateNodeGen(interop); } @GeneratedBy(CanInstantiateNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link CanInstantiateNode#doCached}
                 *   Parameter: {@link InteropLibrary} instantiables
*/ @Child InteropLibrary instantiables_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link SharedExecuteNode#doDefault}
         *     Activation probability: 0.65000
         *     With/without class size: 30/18 bytes
         *   Specialization {@link SharedExecuteNode#doDefault}
         *     Activation probability: 0.35000
         *     With/without class size: 15/14 bytes
         * 
*/ @GeneratedBy(SharedExecuteNode.class) @SuppressWarnings("javadoc") static final class SharedExecuteNodeGen { private static final StateField DEFAULT0__SHARED_EXECUTE_NODE_DEFAULT0_STATE_0_UPDATER = StateField.create(Default0Data.lookup_(), "default0_state_0_"); /** * Required Fields:
    *
  • {@link Inlined#state_0_} *
  • {@link Inlined#default0_cache} *
  • {@link Inlined#default1_toGuestValues__field1_} *
  • {@link Inlined#default1_toGuestValues__field2_} *
  • {@link Inlined#default1_toHostValue__field1_} *
*/ @NeverDefault public static SharedExecuteNode inline(@RequiredField(bits = 14, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Object.class, value = ReferenceField.class)@RequiredField(type = Object.class, value = ReferenceField.class) InlineTarget target) { return new SharedExecuteNodeGen.Inlined(target); } @GeneratedBy(SharedExecuteNode.class) @DenyReplace private static final class Inlined extends SharedExecuteNode { /** * State Info:
                 *   0: SpecializationActive {@link SharedExecuteNode#doDefault}
                 *   1: SpecializationActive {@link SharedExecuteNode#doDefault}
                 *   2-8: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link ToGuestValuesNode} toGuestValues
                 *        Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   9-10: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link ToHostValueNode} toHostValue
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   11: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} invalidArgument
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   12: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} arity
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   13: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ private final StateField state_0_; private final ReferenceField default0_cache; private final ReferenceField default1_toGuestValues__field1_; private final ReferenceField default1_toGuestValues__field2_; private final ReferenceField default1_toHostValue__field1_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToGuestValuesNode} toGuestValues
                 *   Inline method: {@link ToGuestValuesNodeGen#inline}
*/ private final ToGuestValuesNode default0_toGuestValues_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private final ToHostValueNode default0_toHostValue_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} invalidArgument
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_invalidArgument_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} arity
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_arity_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} unsupported
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_unsupported_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToGuestValuesNode} toGuestValues
                 *   Inline method: {@link ToGuestValuesNodeGen#inline}
*/ private final ToGuestValuesNode default1_toGuestValues_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private final ToHostValueNode default1_toHostValue_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} invalidArgument
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_invalidArgument_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} arity
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_arity_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} unsupported
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_unsupported_; @SuppressWarnings("unchecked") private Inlined(InlineTarget target) { assert target.getTargetClass().isAssignableFrom(SharedExecuteNode.class); this.state_0_ = target.getState(0, 14); this.default0_cache = target.getReference(1, Default0Data.class); this.default1_toGuestValues__field1_ = target.getReference(2, Node.class); this.default1_toGuestValues__field2_ = target.getReference(3, Object.class); this.default1_toHostValue__field1_ = target.getReference(4, Object.class); this.default0_toGuestValues_ = ToGuestValuesNodeGen.inline(InlineTarget.create(ToGuestValuesNode.class, DEFAULT0__SHARED_EXECUTE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(0, 7), ReferenceField.create(Default0Data.lookup_(), "default0_toGuestValues__field1_", Node.class), ReferenceField.create(Default0Data.lookup_(), "default0_toGuestValues__field2_", Object.class))); this.default0_toHostValue_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, DEFAULT0__SHARED_EXECUTE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(7, 2), ReferenceField.create(Default0Data.lookup_(), "default0_toHostValue__field1_", Object.class))); this.default0_invalidArgument_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_EXECUTE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(9, 1))); this.default0_arity_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_EXECUTE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(10, 1))); this.default0_unsupported_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_EXECUTE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(11, 1))); this.default1_toGuestValues_ = ToGuestValuesNodeGen.inline(InlineTarget.create(ToGuestValuesNode.class, state_0_.subUpdater(2, 7), default1_toGuestValues__field1_, default1_toGuestValues__field2_)); this.default1_toHostValue_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, state_0_.subUpdater(9, 2), default1_toHostValue__field1_)); this.default1_invalidArgument_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(11, 1))); this.default1_arity_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(12, 1))); this.default1_unsupported_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(13, 1))); } @ExplodeLoop @Override protected Object executeShared(Node arg0Value, PolyglotLanguageContext arg1Value, Object arg2Value, Object[] arg3Value) { int state_0 = this.state_0_.get(arg0Value); if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Default0Data s0_ = this.default0_cache.get(arg0Value); while (s0_ != null) { if ((s0_.executables_.accepts(arg2Value))) { return SharedExecuteNode.doDefault(s0_, arg1Value, arg2Value, arg3Value, s0_.executables_, this.default0_toGuestValues_, this.default0_toHostValue_, this.default0_invalidArgument_, this.default0_arity_, this.default0_unsupported_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.default1Boundary(state_0, arg0Value, arg1Value, arg2Value, arg3Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value, arg3Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object default1Boundary(int state_0, Node arg0Value, PolyglotLanguageContext arg1Value, Object arg2Value, Object[] arg3Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(arg0Value); try { { InteropLibrary executables__ = (INTEROP_LIBRARY_.getUncached(arg2Value)); assert InlineSupport.validate(arg0Value, this.state_0_, this.default1_toGuestValues__field1_, this.default1_toGuestValues__field2_, this.state_0_, this.default1_toHostValue__field1_, this.state_0_, this.state_0_, this.state_0_); return SharedExecuteNode.doDefault(arg0Value, arg1Value, arg2Value, arg3Value, executables__, this.default1_toGuestValues_, this.default1_toHostValue_, this.default1_invalidArgument_, this.default1_arity_, this.default1_unsupported_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(Node arg0Value, PolyglotLanguageContext arg1Value, Object arg2Value, Object[] arg3Value) { int state_0 = this.state_0_.get(arg0Value); if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Default0Data s0_ = this.default0_cache.getVolatile(arg0Value); Default0Data s0_original = s0_; while (s0_ != null) { if ((s0_.executables_.accepts(arg2Value))) { break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.executables_.accepts(arg2Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = arg0Value.insert(new Default0Data(s0_original)); InteropLibrary executables__ = s0_.insert((INTEROP_LIBRARY_.create(arg2Value))); Objects.requireNonNull(executables__, "Specialization 'doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'executables' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.executables_ = executables__; if (!this.default0_cache.compareAndSet(arg0Value, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_.set(arg0Value, state_0); } } if (s0_ != null) { return SharedExecuteNode.doDefault(s0_, arg1Value, arg2Value, arg3Value, s0_.executables_, this.default0_toGuestValues_, this.default0_toHostValue_, this.default0_invalidArgument_, this.default0_arity_, this.default0_unsupported_); } break; } } { InteropLibrary executables__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(arg0Value); try { executables__ = (INTEROP_LIBRARY_.getUncached(arg2Value)); this.default0_cache.set(arg0Value, null); state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.SharedExecuteNode.doDefault(Node, PolyglotLanguageContext, Object, Object[], InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_.set(arg0Value, state_0); assert InlineSupport.validate(arg0Value, this.state_0_, this.default1_toGuestValues__field1_, this.default1_toGuestValues__field2_, this.state_0_, this.default1_toHostValue__field1_, this.state_0_, this.state_0_, this.state_0_); return SharedExecuteNode.doDefault(arg0Value, arg1Value, arg2Value, arg3Value, executables__, this.default1_toGuestValues_, this.default1_toHostValue_, this.default1_invalidArgument_, this.default1_arity_, this.default1_unsupported_); } finally { encapsulating_.set(prev_); } } } } @Override public boolean isAdoptable() { return false; } } @GeneratedBy(SharedExecuteNode.class) @DenyReplace private static final class Default0Data extends Node implements SpecializationDataNode { @Child Default0Data next_; /** * State Info:
                 *   0-6: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link ToGuestValuesNode} toGuestValues
                 *        Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   7-8: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link ToHostValueNode} toHostValue
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   9: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} invalidArgument
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   10: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} arity
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   11: InlinedCache
                 *        Specialization: {@link SharedExecuteNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int default0_state_0_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link InteropLibrary} executables
*/ @Child InteropLibrary executables_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToGuestValuesNode} toGuestValues
                 *   Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node default0_toGuestValues__field1_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToGuestValuesNode} toGuestValues
                 *   Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   Inline field: {@link Object} field2
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object default0_toGuestValues__field2_; /** * Source Info:
                 *   Specialization: {@link SharedExecuteNode#doDefault}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object default0_toHostValue__field1_; Default0Data(Default0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link ExecuteVoidNode#doDefault}
         *     Activation probability: 1.00000
         *     With/without class size: 40/18 bytes
         * 
*/ @GeneratedBy(ExecuteVoidNode.class) @SuppressWarnings("javadoc") static final class ExecuteVoidNodeGen extends ExecuteVoidNode { private static final StateField STATE_0_ExecuteVoidNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link ExecuteVoidNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
*/ private static final SharedExecuteNode INLINED_EXECUTE_NODE_ = SharedExecuteNodeGen.inline(InlineTarget.create(SharedExecuteNode.class, STATE_0_ExecuteVoidNode_UPDATER.subUpdater(0, 14), ReferenceField.create(MethodHandles.lookup(), "executeNode__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field2_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field3_", Object.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field4_", Object.class))); /** * State Info:
             *   0-13: InlinedCache
             *        Specialization: {@link ExecuteVoidNode#doDefault}
             *        Parameter: {@link SharedExecuteNode} executeNode
             *        Inline method: {@link SharedExecuteNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field1_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field2_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field3
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field3_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field4
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field4_; private ExecuteVoidNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doDefault(arg0Value, arg1Value, arg2Value, INLINED_EXECUTE_NODE_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static ExecuteVoidNode create(InteropValue interop) { return new ExecuteVoidNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link ExecuteVoidNoArgsNode#doDefault}
         *     Activation probability: 1.00000
         *     With/without class size: 40/18 bytes
         * 
*/ @GeneratedBy(ExecuteVoidNoArgsNode.class) @SuppressWarnings("javadoc") static final class ExecuteVoidNoArgsNodeGen extends ExecuteVoidNoArgsNode { private static final StateField STATE_0_ExecuteVoidNoArgsNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link ExecuteVoidNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
*/ private static final SharedExecuteNode INLINED_EXECUTE_NODE_ = SharedExecuteNodeGen.inline(InlineTarget.create(SharedExecuteNode.class, STATE_0_ExecuteVoidNoArgsNode_UPDATER.subUpdater(0, 14), ReferenceField.create(MethodHandles.lookup(), "executeNode__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field2_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field3_", Object.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field4_", Object.class))); /** * State Info:
             *   0-13: InlinedCache
             *        Specialization: {@link ExecuteVoidNoArgsNode#doDefault}
             *        Parameter: {@link SharedExecuteNode} executeNode
             *        Inline method: {@link SharedExecuteNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field1_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field2_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field3
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field3_; /** * Source Info:
             *   Specialization: {@link ExecuteVoidNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field4
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field4_; private ExecuteVoidNoArgsNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doDefault(arg0Value, arg1Value, arg2Value, INLINED_EXECUTE_NODE_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static ExecuteVoidNoArgsNode create(InteropValue interop) { return new ExecuteVoidNoArgsNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link ExecuteNode#doDefault}
         *     Activation probability: 1.00000
         *     With/without class size: 44/22 bytes
         * 
*/ @GeneratedBy(ExecuteNode.class) @SuppressWarnings("javadoc") static final class ExecuteNodeGen extends ExecuteNode { private static final StateField STATE_0_ExecuteNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_TO_HOST_VALUE_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ExecuteNode_UPDATER.subUpdater(0, 2), ReferenceField.create(MethodHandles.lookup(), "toHostValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
*/ private static final SharedExecuteNode INLINED_EXECUTE_NODE_ = SharedExecuteNodeGen.inline(InlineTarget.create(SharedExecuteNode.class, STATE_0_ExecuteNode_UPDATER.subUpdater(2, 14), ReferenceField.create(MethodHandles.lookup(), "executeNode__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field2_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field3_", Object.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field4_", Object.class))); /** * State Info:
             *   0-1: InlinedCache
             *        Specialization: {@link ExecuteNode#doDefault}
             *        Parameter: {@link ToHostValueNode} toHostValue
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   2-15: InlinedCache
             *        Specialization: {@link ExecuteNode#doDefault}
             *        Parameter: {@link SharedExecuteNode} executeNode
             *        Inline method: {@link SharedExecuteNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object toHostValue__field1_; /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field1_; /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field2_; /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field3
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field3_; /** * Source Info:
             *   Specialization: {@link ExecuteNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field4
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field4_; private ExecuteNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doDefault(arg0Value, arg1Value, arg2Value, INLINED_TO_HOST_VALUE_, INLINED_EXECUTE_NODE_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static ExecuteNode create(InteropValue interop) { return new ExecuteNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link ExecuteNoArgsNode#doDefault}
         *     Activation probability: 1.00000
         *     With/without class size: 44/22 bytes
         * 
*/ @GeneratedBy(ExecuteNoArgsNode.class) @SuppressWarnings("javadoc") static final class ExecuteNoArgsNodeGen extends ExecuteNoArgsNode { private static final StateField STATE_0_ExecuteNoArgsNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_TO_HOST_VALUE_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_ExecuteNoArgsNode_UPDATER.subUpdater(0, 2), ReferenceField.create(MethodHandles.lookup(), "toHostValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
*/ private static final SharedExecuteNode INLINED_EXECUTE_NODE_ = SharedExecuteNodeGen.inline(InlineTarget.create(SharedExecuteNode.class, STATE_0_ExecuteNoArgsNode_UPDATER.subUpdater(2, 14), ReferenceField.create(MethodHandles.lookup(), "executeNode__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field2_", Node.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field3_", Object.class), ReferenceField.create(MethodHandles.lookup(), "executeNode__field4_", Object.class))); /** * State Info:
             *   0-1: InlinedCache
             *        Specialization: {@link ExecuteNoArgsNode#doDefault}
             *        Parameter: {@link ToHostValueNode} toHostValue
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   2-15: InlinedCache
             *        Specialization: {@link ExecuteNoArgsNode#doDefault}
             *        Parameter: {@link SharedExecuteNode} executeNode
             *        Inline method: {@link SharedExecuteNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object toHostValue__field1_; /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field1_; /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node executeNode__field2_; /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field3
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field3_; /** * Source Info:
             *   Specialization: {@link ExecuteNoArgsNode#doDefault}
             *   Parameter: {@link SharedExecuteNode} executeNode
             *   Inline method: {@link SharedExecuteNodeGen#inline}
             *   Inline field: {@link Object} field4
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object executeNode__field4_; private ExecuteNoArgsNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doDefault(arg0Value, arg1Value, arg2Value, INLINED_TO_HOST_VALUE_, INLINED_EXECUTE_NODE_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static ExecuteNoArgsNode create(InteropValue interop) { return new ExecuteNoArgsNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link NewInstanceNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 30/18 bytes
         *   Specialization {@link NewInstanceNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 15/14 bytes
         * 
*/ @GeneratedBy(NewInstanceNode.class) @SuppressWarnings("javadoc") static final class NewInstanceNodeGen extends NewInstanceNode { private static final StateField CACHED0__NEW_INSTANCE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_NewInstanceNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
*/ private static final ToGuestValuesNode INLINED_CACHED0_TO_GUEST_VALUES_ = ToGuestValuesNodeGen.inline(InlineTarget.create(ToGuestValuesNode.class, CACHED0__NEW_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 7), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestValues__field1_", Node.class), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestValues__field2_", Object.class))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_VALUE_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__NEW_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(7, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHostValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} arity
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_ARITY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__NEW_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(9, 1))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidArgument
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_ARGUMENT_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__NEW_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(10, 1))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__NEW_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(11, 1))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
*/ private static final ToGuestValuesNode INLINED_CACHED1_TO_GUEST_VALUES_ = ToGuestValuesNodeGen.inline(InlineTarget.create(ToGuestValuesNode.class, STATE_0_NewInstanceNode_UPDATER.subUpdater(2, 7), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestValues__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestValues__field2_", Object.class))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_VALUE_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_NewInstanceNode_UPDATER.subUpdater(9, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHostValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} arity
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_ARITY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_NewInstanceNode_UPDATER.subUpdater(11, 1))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidArgument
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_ARGUMENT_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_NewInstanceNode_UPDATER.subUpdater(12, 1))); /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_NewInstanceNode_UPDATER.subUpdater(13, 1))); /** * State Info:
             *   0: SpecializationActive {@link NewInstanceNode#doCached}
             *   1: SpecializationActive {@link NewInstanceNode#doCached}
             *   2-8: InlinedCache
             *        Specialization: {@link NewInstanceNode#doCached}
             *        Parameter: {@link ToGuestValuesNode} toGuestValues
             *        Inline method: {@link ToGuestValuesNodeGen#inline}
             *   9-10: InlinedCache
             *        Specialization: {@link NewInstanceNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHostValue
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   11: InlinedCache
             *        Specialization: {@link NewInstanceNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} arity
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   12: InlinedCache
             *        Specialization: {@link NewInstanceNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidArgument
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   13: InlinedCache
             *        Specialization: {@link NewInstanceNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node cached1_toGuestValues__field1_; /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
             *   Inline field: {@link Object} field2
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestValues__field2_; /** * Source Info:
             *   Specialization: {@link NewInstanceNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHostValue
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHostValue__field1_; private NewInstanceNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.instantiables_.accepts(arg1Value))) { Node node__ = (s0_); return NewInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.instantiables_, INLINED_CACHED0_TO_GUEST_VALUES_, INLINED_CACHED0_TO_HOST_VALUE_, INLINED_CACHED0_ARITY_, INLINED_CACHED0_INVALID_ARGUMENT_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary instantiables__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return NewInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, instantiables__, INLINED_CACHED1_TO_GUEST_VALUES_, INLINED_CACHED1_TO_HOST_VALUE_, INLINED_CACHED1_ARITY_, INLINED_CACHED1_INVALID_ARGUMENT_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.instantiables_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.instantiables_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary instantiables__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(instantiables__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'instantiables' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.instantiables_ = instantiables__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return NewInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.instantiables_, INLINED_CACHED0_TO_GUEST_VALUES_, INLINED_CACHED0_TO_HOST_VALUE_, INLINED_CACHED0_ARITY_, INLINED_CACHED0_INVALID_ARGUMENT_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary instantiables__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); instantiables__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.NewInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValuesNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return NewInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, instantiables__, INLINED_CACHED1_TO_GUEST_VALUES_, INLINED_CACHED1_TO_HOST_VALUE_, INLINED_CACHED1_ARITY_, INLINED_CACHED1_INVALID_ARGUMENT_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static NewInstanceNode create(InteropValue interop) { return new NewInstanceNodeGen(interop); } @GeneratedBy(NewInstanceNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-6: InlinedCache
                 *        Specialization: {@link NewInstanceNode#doCached}
                 *        Parameter: {@link ToGuestValuesNode} toGuestValues
                 *        Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   7-8: InlinedCache
                 *        Specialization: {@link NewInstanceNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHostValue
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   9: InlinedCache
                 *        Specialization: {@link NewInstanceNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} arity
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   10: InlinedCache
                 *        Specialization: {@link NewInstanceNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidArgument
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   11: InlinedCache
                 *        Specialization: {@link NewInstanceNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link NewInstanceNode#doCached}
                 *   Parameter: {@link InteropLibrary} instantiables
*/ @Child InteropLibrary instantiables_; /** * Source Info:
                 *   Specialization: {@link NewInstanceNode#doCached}
                 *   Parameter: {@link ToGuestValuesNode} toGuestValues
                 *   Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node cached0_toGuestValues__field1_; /** * Source Info:
                 *   Specialization: {@link NewInstanceNode#doCached}
                 *   Parameter: {@link ToGuestValuesNode} toGuestValues
                 *   Inline method: {@link ToGuestValuesNodeGen#inline}
                 *   Inline field: {@link Object} field2
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestValues__field2_; /** * Source Info:
                 *   Specialization: {@link NewInstanceNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHostValue__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link SharedInvokeNode#doDefault}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link SharedInvokeNode#doDefault}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(SharedInvokeNode.class) @SuppressWarnings("javadoc") static final class SharedInvokeNodeGen { private static final StateField DEFAULT0__SHARED_INVOKE_NODE_DEFAULT0_STATE_0_UPDATER = StateField.create(Default0Data.lookup_(), "default0_state_0_"); /** * Required Fields:
    *
  • {@link Inlined#state_0_} *
  • {@link Inlined#default0_cache} *
  • {@link Inlined#default1_toHostValue__field1_} *
*/ @NeverDefault public static SharedInvokeNode inline(@RequiredField(bits = 8, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Object.class, value = ReferenceField.class) InlineTarget target) { return new SharedInvokeNodeGen.Inlined(target); } @GeneratedBy(SharedInvokeNode.class) @DenyReplace private static final class Inlined extends SharedInvokeNode { /** * State Info:
                 *   0: SpecializationActive {@link SharedInvokeNode#doDefault}
                 *   1: SpecializationActive {@link SharedInvokeNode#doDefault}
                 *   2-3: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link ToHostValueNode} toHostValue
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   4: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} invalidArgument
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   5: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} arity
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   6: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   7: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} unknownIdentifier
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ private final StateField state_0_; private final ReferenceField default0_cache; private final ReferenceField default1_toHostValue__field1_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private final ToHostValueNode default0_toHostValue_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} invalidArgument
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_invalidArgument_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} arity
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_arity_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} unsupported
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_unsupported_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} unknownIdentifier
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default0_unknownIdentifier_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private final ToHostValueNode default1_toHostValue_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} invalidArgument
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_invalidArgument_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} arity
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_arity_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} unsupported
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_unsupported_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InlinedBranchProfile} unknownIdentifier
                 *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile default1_unknownIdentifier_; @SuppressWarnings("unchecked") private Inlined(InlineTarget target) { assert target.getTargetClass().isAssignableFrom(SharedInvokeNode.class); this.state_0_ = target.getState(0, 8); this.default0_cache = target.getReference(1, Default0Data.class); this.default1_toHostValue__field1_ = target.getReference(2, Object.class); this.default0_toHostValue_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, DEFAULT0__SHARED_INVOKE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Default0Data.lookup_(), "default0_toHostValue__field1_", Object.class))); this.default0_invalidArgument_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_INVOKE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(2, 1))); this.default0_arity_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_INVOKE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(3, 1))); this.default0_unsupported_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_INVOKE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(4, 1))); this.default0_unknownIdentifier_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, DEFAULT0__SHARED_INVOKE_NODE_DEFAULT0_STATE_0_UPDATER.subUpdater(5, 1))); this.default1_toHostValue_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, state_0_.subUpdater(2, 2), default1_toHostValue__field1_)); this.default1_invalidArgument_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(4, 1))); this.default1_arity_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(5, 1))); this.default1_unsupported_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(6, 1))); this.default1_unknownIdentifier_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, state_0_.subUpdater(7, 1))); } @ExplodeLoop @Override protected Object executeShared(Node arg0Value, PolyglotLanguageContext arg1Value, Object arg2Value, String arg3Value, Object[] arg4Value) { int state_0 = this.state_0_.get(arg0Value); if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Default0Data s0_ = this.default0_cache.get(arg0Value); while (s0_ != null) { if ((s0_.objects_.accepts(arg2Value))) { return SharedInvokeNode.doDefault(s0_, arg1Value, arg2Value, arg3Value, arg4Value, s0_.objects_, this.default0_toHostValue_, this.default0_invalidArgument_, this.default0_arity_, this.default0_unsupported_, this.default0_unknownIdentifier_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.default1Boundary(state_0, arg0Value, arg1Value, arg2Value, arg3Value, arg4Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value, arg3Value, arg4Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object default1Boundary(int state_0, Node arg0Value, PolyglotLanguageContext arg1Value, Object arg2Value, String arg3Value, Object[] arg4Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(arg0Value); try { { InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg2Value)); assert InlineSupport.validate(arg0Value, this.state_0_, this.default1_toHostValue__field1_, this.state_0_, this.state_0_, this.state_0_, this.state_0_); return SharedInvokeNode.doDefault(arg0Value, arg1Value, arg2Value, arg3Value, arg4Value, objects__, this.default1_toHostValue_, this.default1_invalidArgument_, this.default1_arity_, this.default1_unsupported_, this.default1_unknownIdentifier_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(Node arg0Value, PolyglotLanguageContext arg1Value, Object arg2Value, String arg3Value, Object[] arg4Value) { int state_0 = this.state_0_.get(arg0Value); if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Default0Data s0_ = this.default0_cache.getVolatile(arg0Value); Default0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg2Value))) { break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg2Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = arg0Value.insert(new Default0Data(s0_original)); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg2Value))); Objects.requireNonNull(objects__, "Specialization 'doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!this.default0_cache.compareAndSet(arg0Value, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_.set(arg0Value, state_0); } } if (s0_ != null) { return SharedInvokeNode.doDefault(s0_, arg1Value, arg2Value, arg3Value, arg4Value, s0_.objects_, this.default0_toHostValue_, this.default0_invalidArgument_, this.default0_arity_, this.default0_unsupported_, this.default0_unknownIdentifier_); } break; } } { InteropLibrary objects__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(arg0Value); try { objects__ = (INTEROP_LIBRARY_.getUncached(arg2Value)); this.default0_cache.set(arg0Value, null); state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.SharedInvokeNode.doDefault(Node, PolyglotLanguageContext, Object, String, Object[], InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_.set(arg0Value, state_0); assert InlineSupport.validate(arg0Value, this.state_0_, this.default1_toHostValue__field1_, this.state_0_, this.state_0_, this.state_0_, this.state_0_); return SharedInvokeNode.doDefault(arg0Value, arg1Value, arg2Value, arg3Value, arg4Value, objects__, this.default1_toHostValue_, this.default1_invalidArgument_, this.default1_arity_, this.default1_unsupported_, this.default1_unknownIdentifier_); } finally { encapsulating_.set(prev_); } } } } @Override public boolean isAdoptable() { return false; } } @GeneratedBy(SharedInvokeNode.class) @DenyReplace private static final class Default0Data extends Node implements SpecializationDataNode { @Child Default0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link ToHostValueNode} toHostValue
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} invalidArgument
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} arity
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   4: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   5: InlinedCache
                 *        Specialization: {@link SharedInvokeNode#doDefault}
                 *        Parameter: {@link InlinedBranchProfile} unknownIdentifier
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int default0_state_0_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link SharedInvokeNode#doDefault}
                 *   Parameter: {@link ToHostValueNode} toHostValue
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object default0_toHostValue__field1_; Default0Data(Default0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link InvokeNode#doDefault}
         *     Activation probability: 1.00000
         *     With/without class size: 40/18 bytes
         * 
*/ @GeneratedBy(InvokeNode.class) @SuppressWarnings("javadoc") static final class InvokeNodeGen extends InvokeNode { private static final StateField STATE_0_InvokeNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link InvokeNode#doDefault}
             *   Parameter: {@link SharedInvokeNode} sharedInvoke
             *   Inline method: {@link SharedInvokeNodeGen#inline}
*/ private static final SharedInvokeNode INLINED_SHARED_INVOKE_ = SharedInvokeNodeGen.inline(InlineTarget.create(SharedInvokeNode.class, STATE_0_InvokeNode_UPDATER.subUpdater(0, 8), ReferenceField.create(MethodHandles.lookup(), "sharedInvoke__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "sharedInvoke__field2_", Object.class))); /** * Source Info:
             *   Specialization: {@link InvokeNode#doDefault}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
*/ private static final ToGuestValuesNode INLINED_TO_GUEST_VALUES_ = ToGuestValuesNodeGen.inline(InlineTarget.create(ToGuestValuesNode.class, STATE_0_InvokeNode_UPDATER.subUpdater(8, 7), ReferenceField.create(MethodHandles.lookup(), "toGuestValues__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "toGuestValues__field2_", Object.class))); /** * State Info:
             *   0-7: InlinedCache
             *        Specialization: {@link InvokeNode#doDefault}
             *        Parameter: {@link SharedInvokeNode} sharedInvoke
             *        Inline method: {@link SharedInvokeNodeGen#inline}
             *   8-14: InlinedCache
             *        Specialization: {@link InvokeNode#doDefault}
             *        Parameter: {@link ToGuestValuesNode} toGuestValues
             *        Inline method: {@link ToGuestValuesNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link InvokeNode#doDefault}
             *   Parameter: {@link SharedInvokeNode} sharedInvoke
             *   Inline method: {@link SharedInvokeNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node sharedInvoke__field1_; /** * Source Info:
             *   Specialization: {@link InvokeNode#doDefault}
             *   Parameter: {@link SharedInvokeNode} sharedInvoke
             *   Inline method: {@link SharedInvokeNodeGen#inline}
             *   Inline field: {@link Object} field2
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object sharedInvoke__field2_; /** * Source Info:
             *   Specialization: {@link InvokeNode#doDefault}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node toGuestValues__field1_; /** * Source Info:
             *   Specialization: {@link InvokeNode#doDefault}
             *   Parameter: {@link ToGuestValuesNode} toGuestValues
             *   Inline method: {@link ToGuestValuesNodeGen#inline}
             *   Inline field: {@link Object} field2
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object toGuestValues__field2_; private InvokeNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doDefault(arg0Value, arg1Value, arg2Value, INLINED_SHARED_INVOKE_, INLINED_TO_GUEST_VALUES_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static InvokeNode create(InteropValue interop) { return new InvokeNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link InvokeNoArgsNode#doDefault}
         *     Activation probability: 1.00000
         *     With/without class size: 32/9 bytes
         * 
*/ @GeneratedBy(InvokeNoArgsNode.class) @SuppressWarnings("javadoc") static final class InvokeNoArgsNodeGen extends InvokeNoArgsNode { private static final StateField STATE_0_InvokeNoArgsNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
             *   Specialization: {@link InvokeNoArgsNode#doDefault}
             *   Parameter: {@link SharedInvokeNode} sharedInvoke
             *   Inline method: {@link SharedInvokeNodeGen#inline}
*/ private static final SharedInvokeNode INLINED_SHARED_INVOKE_ = SharedInvokeNodeGen.inline(InlineTarget.create(SharedInvokeNode.class, STATE_0_InvokeNoArgsNode_UPDATER.subUpdater(0, 8), ReferenceField.create(MethodHandles.lookup(), "sharedInvoke__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "sharedInvoke__field2_", Object.class))); /** * State Info:
             *   0-7: InlinedCache
             *        Specialization: {@link InvokeNoArgsNode#doDefault}
             *        Parameter: {@link SharedInvokeNode} sharedInvoke
             *        Inline method: {@link SharedInvokeNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
             *   Specialization: {@link InvokeNoArgsNode#doDefault}
             *   Parameter: {@link SharedInvokeNode} sharedInvoke
             *   Inline method: {@link SharedInvokeNodeGen#inline}
             *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node sharedInvoke__field1_; /** * Source Info:
             *   Specialization: {@link InvokeNoArgsNode#doDefault}
             *   Parameter: {@link SharedInvokeNode} sharedInvoke
             *   Inline method: {@link SharedInvokeNodeGen#inline}
             *   Inline field: {@link Object} field2
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object sharedInvoke__field2_; private InvokeNoArgsNodeGen(InteropValue interop) { super(interop); } @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { return doDefault(arg0Value, arg1Value, arg2Value, INLINED_SHARED_INVOKE_); } @Override public NodeCost getCost() { return NodeCost.MONOMORPHIC; } @NeverDefault public static InvokeNoArgsNode create(InteropValue interop) { return new InvokeNoArgsNodeGen(interop); } } /** * Debug Info:
         *   Specialization {@link IsExceptionNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsExceptionNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsExceptionNode.class) @SuppressWarnings("javadoc") static final class IsExceptionNodeGen extends IsExceptionNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsExceptionNode#doCached}
             *   1: SpecializationActive {@link IsExceptionNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsExceptionNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsExceptionNode create(InteropValue interop) { return new IsExceptionNodeGen(interop); } @GeneratedBy(IsExceptionNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsExceptionNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link ThrowExceptionNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link ThrowExceptionNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(ThrowExceptionNode.class) @SuppressWarnings("javadoc") static final class ThrowExceptionNodeGen extends ThrowExceptionNode { private static final StateField CACHED0__THROW_EXCEPTION_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_ThrowExceptionNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link ThrowExceptionNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__THROW_EXCEPTION_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link ThrowExceptionNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ThrowExceptionNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link ThrowExceptionNode#doCached}
             *   1: SpecializationActive {@link ThrowExceptionNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link ThrowExceptionNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private ThrowExceptionNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return ThrowExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return ThrowExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return ThrowExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.ThrowExceptionNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return ThrowExceptionNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static ThrowExceptionNode create(InteropValue interop) { return new ThrowExceptionNodeGen(interop); } @GeneratedBy(ThrowExceptionNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link ThrowExceptionNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link ThrowExceptionNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsMetaObjectNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsMetaObjectNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsMetaObjectNode.class) @SuppressWarnings("javadoc") static final class IsMetaObjectNodeGen extends IsMetaObjectNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsMetaObjectNode#doCached}
             *   1: SpecializationActive {@link IsMetaObjectNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsMetaObjectNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsMetaObjectNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsMetaObjectNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } } finally { encapsulating_.set(prev_); } } private boolean executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsMetaObjectNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsMetaObjectNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsMetaObjectNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsMetaObjectNode create(InteropValue interop) { return new IsMetaObjectNodeGen(interop); } @GeneratedBy(IsMetaObjectNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsMetaObjectNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link GetMetaQualifiedNameNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetMetaQualifiedNameNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetMetaQualifiedNameNode.class) @SuppressWarnings("javadoc") static final class GetMetaQualifiedNameNodeGen extends GetMetaQualifiedNameNode { private static final StateField CACHED0__GET_META_QUALIFIED_NAME_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetMetaQualifiedNameNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetMetaQualifiedNameNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_META_QUALIFIED_NAME_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link GetMetaQualifiedNameNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetMetaQualifiedNameNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetMetaQualifiedNameNode#doCached}
             *   1: SpecializationActive {@link GetMetaQualifiedNameNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link GetMetaQualifiedNameNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetMetaQualifiedNameNode#doCached}
             *   Parameter: {@link InteropLibrary} toString
*/ @Child private InteropLibrary cached1_toString_; private GetMetaQualifiedNameNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return GetMetaQualifiedNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, s0_.toString_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { { InteropLibrary toString__ = this.cached1_toString_; if (toString__ != null) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value, toString__); } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value, InteropLibrary toString__) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetMetaQualifiedNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, toString__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private String executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; InteropLibrary toString__ = s0_.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(toString__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)' cache 'toString' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.toString_ = toString__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetMetaQualifiedNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, s0_.toString_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); InteropLibrary toString__ = this.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(toString__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)' cache 'toString' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); VarHandle.storeStoreFence(); this.cached1_toString_ = toString__; this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetMetaQualifiedNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetMetaQualifiedNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, toString__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetMetaQualifiedNameNode create(InteropValue interop) { return new GetMetaQualifiedNameNodeGen(interop); } @GeneratedBy(GetMetaQualifiedNameNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link GetMetaQualifiedNameNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetMetaQualifiedNameNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link GetMetaQualifiedNameNode#doCached}
                 *   Parameter: {@link InteropLibrary} toString
*/ @Child InteropLibrary toString_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetMetaSimpleNameNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetMetaSimpleNameNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetMetaSimpleNameNode.class) @SuppressWarnings("javadoc") static final class GetMetaSimpleNameNodeGen extends GetMetaSimpleNameNode { private static final StateField CACHED0__GET_META_SIMPLE_NAME_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetMetaSimpleNameNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetMetaSimpleNameNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_META_SIMPLE_NAME_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link GetMetaSimpleNameNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetMetaSimpleNameNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetMetaSimpleNameNode#doCached}
             *   1: SpecializationActive {@link GetMetaSimpleNameNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link GetMetaSimpleNameNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetMetaSimpleNameNode#doCached}
             *   Parameter: {@link InteropLibrary} toString
*/ @Child private InteropLibrary cached1_toString_; private GetMetaSimpleNameNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return GetMetaSimpleNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, s0_.toString_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { { InteropLibrary toString__ = this.cached1_toString_; if (toString__ != null) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value, toString__); } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value, InteropLibrary toString__) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetMetaSimpleNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, toString__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private String executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; InteropLibrary toString__ = s0_.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(toString__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)' cache 'toString' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.toString_ = toString__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetMetaSimpleNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, s0_.toString_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); InteropLibrary toString__ = this.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(toString__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)' cache 'toString' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); VarHandle.storeStoreFence(); this.cached1_toString_ = toString__; this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetMetaSimpleNameNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetMetaSimpleNameNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, toString__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetMetaSimpleNameNode create(InteropValue interop) { return new GetMetaSimpleNameNodeGen(interop); } @GeneratedBy(GetMetaSimpleNameNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link GetMetaSimpleNameNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetMetaSimpleNameNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link GetMetaSimpleNameNode#doCached}
                 *   Parameter: {@link InteropLibrary} toString
*/ @Child InteropLibrary toString_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsMetaInstanceNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link IsMetaInstanceNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(IsMetaInstanceNode.class) @SuppressWarnings("javadoc") static final class IsMetaInstanceNodeGen extends IsMetaInstanceNode { private static final StateField CACHED0__IS_META_INSTANCE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_IsMetaInstanceNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link IsMetaInstanceNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuest
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__IS_META_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuest__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link IsMetaInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__IS_META_INSTANCE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link IsMetaInstanceNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuest
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_IsMetaInstanceNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuest__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link IsMetaInstanceNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_IsMetaInstanceNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link IsMetaInstanceNode#doCached}
             *   1: SpecializationActive {@link IsMetaInstanceNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link IsMetaInstanceNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuest
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   5: InlinedCache
             *        Specialization: {@link IsMetaInstanceNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link IsMetaInstanceNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuest
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuest__field1_; private IsMetaInstanceNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return IsMetaInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_GUEST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsMetaInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_GUEST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private boolean executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsMetaInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_GUEST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsMetaInstanceNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return IsMetaInstanceNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_GUEST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsMetaInstanceNode create(InteropValue interop) { return new IsMetaInstanceNodeGen(interop); } @GeneratedBy(IsMetaInstanceNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link IsMetaInstanceNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuest
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link IsMetaInstanceNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link IsMetaInstanceNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link IsMetaInstanceNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuest
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuest__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link HasMetaParentsNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link HasMetaParentsNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(HasMetaParentsNode.class) @SuppressWarnings("javadoc") static final class HasMetaParentsNodeGen extends HasMetaParentsNode { private static final StateField CACHED0__HAS_META_PARENTS_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_HasMetaParentsNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link HasMetaParentsNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__HAS_META_PARENTS_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link HasMetaParentsNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_HasMetaParentsNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link HasMetaParentsNode#doCached}
             *   1: SpecializationActive {@link HasMetaParentsNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link HasMetaParentsNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasMetaParentsNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return HasMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private boolean executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return HasMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasMetaParentsNode create(InteropValue interop) { return new HasMetaParentsNodeGen(interop); } @GeneratedBy(HasMetaParentsNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link HasMetaParentsNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link HasMetaParentsNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetMetaParentsNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetMetaParentsNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetMetaParentsNode.class) @SuppressWarnings("javadoc") static final class GetMetaParentsNodeGen extends GetMetaParentsNode { private static final StateField CACHED0__GET_META_PARENTS_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetMetaParentsNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetMetaParentsNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_META_PARENTS_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetMetaParentsNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_META_PARENTS_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetMetaParentsNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetMetaParentsNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetMetaParentsNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetMetaParentsNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetMetaParentsNode#doCached}
             *   1: SpecializationActive {@link GetMetaParentsNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetMetaParentsNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetMetaParentsNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetMetaParentsNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetMetaParentsNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { Node node__ = (s0_); return GetMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.objects_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.objects_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary objects__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(objects__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)' cache 'objects' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.objects_ = objects__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.objects_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary objects__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); objects__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetMetaParentsNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetMetaParentsNode.doCached(arg0Value, arg1Value, arg2Value, node__, objects__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetMetaParentsNode create(InteropValue interop) { return new GetMetaParentsNodeGen(interop); } @GeneratedBy(GetMetaParentsNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetMetaParentsNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetMetaParentsNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetMetaParentsNode#doCached}
                 *   Parameter: {@link InteropLibrary} objects
*/ @Child InteropLibrary objects_; /** * Source Info:
                 *   Specialization: {@link GetMetaParentsNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link HasIteratorNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link HasIteratorNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(HasIteratorNode.class) @SuppressWarnings("javadoc") static final class HasIteratorNodeGen extends HasIteratorNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link HasIteratorNode#doCached}
             *   1: SpecializationActive {@link HasIteratorNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasIteratorNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { Node node__ = (s0_); return HasIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.iterators_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary iterators__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(iterators__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'iterators' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.iterators_ = iterators__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_); } break; } } } { InteropLibrary iterators__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return HasIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasIteratorNode create(InteropValue interop) { return new HasIteratorNodeGen(interop); } @GeneratedBy(HasIteratorNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link HasIteratorNode#doCached}
                 *   Parameter: {@link InteropLibrary} iterators
*/ @Child InteropLibrary iterators_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link GetIteratorNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetIteratorNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetIteratorNode.class) @SuppressWarnings("javadoc") static final class GetIteratorNodeGen extends GetIteratorNode { private static final StateField CACHED0__GET_ITERATOR_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetIteratorNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetIteratorNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetIteratorNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetIteratorNode#doCached}
             *   1: SpecializationActive {@link GetIteratorNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetIteratorNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetIteratorNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetIteratorNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { Node node__ = (s0_); return GetIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.iterators_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary iterators__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(iterators__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)' cache 'iterators' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.iterators_ = iterators__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary iterators__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetIteratorNode create(InteropValue interop) { return new GetIteratorNodeGen(interop); } @GeneratedBy(GetIteratorNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetIteratorNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetIteratorNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetIteratorNode#doCached}
                 *   Parameter: {@link InteropLibrary} iterators
*/ @Child InteropLibrary iterators_; /** * Source Info:
                 *   Specialization: {@link GetIteratorNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link IsIteratorNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link IsIteratorNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(IsIteratorNode.class) @SuppressWarnings("javadoc") static final class IsIteratorNodeGen extends IsIteratorNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link IsIteratorNode#doCached}
             *   1: SpecializationActive {@link IsIteratorNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private IsIteratorNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { Node node__ = (s0_); return IsIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return IsIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.iterators_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary iterators__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(iterators__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'iterators' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.iterators_ = iterators__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return IsIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_); } break; } } } { InteropLibrary iterators__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.IsIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return IsIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static IsIteratorNode create(InteropValue interop) { return new IsIteratorNodeGen(interop); } @GeneratedBy(IsIteratorNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link IsIteratorNode#doCached}
                 *   Parameter: {@link InteropLibrary} iterators
*/ @Child InteropLibrary iterators_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link HasIteratorNextElementNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link HasIteratorNextElementNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(HasIteratorNextElementNode.class) @SuppressWarnings("javadoc") static final class HasIteratorNextElementNodeGen extends HasIteratorNextElementNode { private static final StateField CACHED0__HAS_ITERATOR_NEXT_ELEMENT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_HasIteratorNextElementNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link HasIteratorNextElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__HAS_ITERATOR_NEXT_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link HasIteratorNextElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_HasIteratorNextElementNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link HasIteratorNextElementNode#doCached}
             *   1: SpecializationActive {@link HasIteratorNextElementNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link HasIteratorNextElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasIteratorNextElementNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { Node node__ = (s0_); return HasIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.iterators_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary iterators__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(iterators__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'iterators' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.iterators_ = iterators__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary iterators__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return HasIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasIteratorNextElementNode create(InteropValue interop) { return new HasIteratorNextElementNodeGen(interop); } @GeneratedBy(HasIteratorNextElementNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link HasIteratorNextElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link HasIteratorNextElementNode#doCached}
                 *   Parameter: {@link InteropLibrary} iterators
*/ @Child InteropLibrary iterators_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetIteratorNextElementNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetIteratorNextElementNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetIteratorNextElementNode.class) @SuppressWarnings("javadoc") static final class GetIteratorNextElementNodeGen extends GetIteratorNextElementNode { private static final StateField CACHED0__GET_ITERATOR_NEXT_ELEMENT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetIteratorNextElementNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_ITERATOR_NEXT_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_ITERATOR_NEXT_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} stop
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_STOP_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_ITERATOR_NEXT_ELEMENT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetIteratorNextElementNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetIteratorNextElementNode_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} stop
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_STOP_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetIteratorNextElementNode_UPDATER.subUpdater(5, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetIteratorNextElementNode#doCached}
             *   1: SpecializationActive {@link GetIteratorNextElementNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetIteratorNextElementNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetIteratorNextElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   5: InlinedCache
             *        Specialization: {@link GetIteratorNextElementNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} stop
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetIteratorNextElementNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetIteratorNextElementNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { Node node__ = (s0_); return GetIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_STOP_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_STOP_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.iterators_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.iterators_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary iterators__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(iterators__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'iterators' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.iterators_ = iterators__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.iterators_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_STOP_); } break; } } } { InteropLibrary iterators__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); iterators__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetIteratorNextElementNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetIteratorNextElementNode.doCached(arg0Value, arg1Value, arg2Value, node__, iterators__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_STOP_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetIteratorNextElementNode create(InteropValue interop) { return new GetIteratorNextElementNodeGen(interop); } @GeneratedBy(GetIteratorNextElementNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetIteratorNextElementNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetIteratorNextElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link GetIteratorNextElementNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} stop
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetIteratorNextElementNode#doCached}
                 *   Parameter: {@link InteropLibrary} iterators
*/ @Child InteropLibrary iterators_; /** * Source Info:
                 *   Specialization: {@link GetIteratorNextElementNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link HasHashEntriesNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 19/4 bytes
         *   Specialization {@link HasHashEntriesNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 8/0 bytes
         * 
*/ @GeneratedBy(HasHashEntriesNode.class) @SuppressWarnings("javadoc") static final class HasHashEntriesNodeGen extends HasHashEntriesNode { static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * State Info:
             *   0: SpecializationActive {@link HasHashEntriesNode#doCached}
             *   1: SpecializationActive {@link HasHashEntriesNode#doCached}
             * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private HasHashEntriesNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] || SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return HasHashEntriesNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasHashEntriesNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasHashEntriesNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasHashEntriesNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary)] */; this.state_0_ = state_0; return HasHashEntriesNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasHashEntriesNode create(InteropValue interop) { return new HasHashEntriesNodeGen(interop); } @GeneratedBy(HasHashEntriesNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * Source Info:
                 *   Specialization: {@link HasHashEntriesNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } } } /** * Debug Info:
         *   Specialization {@link GetHashSizeNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 22/5 bytes
         *   Specialization {@link GetHashSizeNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 11/1 bytes
         * 
*/ @GeneratedBy(GetHashSizeNode.class) @SuppressWarnings("javadoc") static final class GetHashSizeNodeGen extends GetHashSizeNode { private static final StateField CACHED0__GET_HASH_SIZE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetHashSizeNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetHashSizeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_SIZE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
             *   Specialization: {@link GetHashSizeNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashSizeNode_UPDATER.subUpdater(2, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetHashSizeNode#doCached}
             *   1: SpecializationActive {@link GetHashSizeNode#doCached}
             *   2: InlinedCache
             *        Specialization: {@link GetHashSizeNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; private GetHashSizeNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return GetHashSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetHashSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetHashSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetHashSizeNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetHashSizeNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetHashSizeNode create(InteropValue interop) { return new GetHashSizeNodeGen(interop); } @GeneratedBy(GetHashSizeNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0: InlinedCache
                 *        Specialization: {@link GetHashSizeNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetHashSizeNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link HasHashEntryNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link HasHashEntryNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(HasHashEntryNode.class) @SuppressWarnings("javadoc") static final class HasHashEntryNodeGen extends HasHashEntryNode { private static final StateField CACHED0__HAS_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_HasHashEntryNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link HasHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__HAS_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link HasHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_HasHashEntryNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestKey__field1_", Object.class))); /** * State Info:
             *   0: SpecializationActive {@link HasHashEntryNode#doCached}
             *   1: SpecializationActive {@link HasHashEntryNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link HasHashEntryNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestKey
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link HasHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestKey__field1_; private HasHashEntryNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] || SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return HasHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return HasHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */; this.state_0_ = state_0; } } if (s0_ != null) { return HasHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.HasHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode)] */; this.state_0_ = state_0; return HasHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static HasHashEntryNode create(InteropValue interop) { return new HasHashEntryNodeGen(interop); } @GeneratedBy(HasHashEntryNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link HasHashEntryNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestKey
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link HasHashEntryNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link HasHashEntryNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestKey
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestKey__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetHashValueNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 27/13 bytes
         *   Specialization {@link GetHashValueNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 13/9 bytes
         * 
*/ @GeneratedBy(GetHashValueNode.class) @SuppressWarnings("javadoc") static final class GetHashValueNodeGen extends GetHashValueNode { private static final StateField CACHED0__GET_HASH_VALUE_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetHashValueNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__GET_HASH_VALUE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_HASH_VALUE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_VALUE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(5, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_VALUE_NODE_CACHED0_STATE_0_UPDATER.subUpdater(6, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_GetHashValueNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetHashValueNode_UPDATER.subUpdater(5, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashValueNode_UPDATER.subUpdater(7, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashValueNode_UPDATER.subUpdater(8, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetHashValueNode#doCached}
             *   1: SpecializationActive {@link GetHashValueNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link GetHashValueNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestKey
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   5-6: InlinedCache
             *        Specialization: {@link GetHashValueNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   7: InlinedCache
             *        Specialization: {@link GetHashValueNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   8: InlinedCache
             *        Specialization: {@link GetHashValueNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidKey
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestKey__field1_; /** * Source Info:
             *   Specialization: {@link GetHashValueNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetHashValueNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return GetHashValueNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetHashValueNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetHashValueNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetHashValueNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetHashValueNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetHashValueNode create(InteropValue interop) { return new GetHashValueNodeGen(interop); } @GeneratedBy(GetHashValueNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link GetHashValueNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestKey
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   3-4: InlinedCache
                 *        Specialization: {@link GetHashValueNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   5: InlinedCache
                 *        Specialization: {@link GetHashValueNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   6: InlinedCache
                 *        Specialization: {@link GetHashValueNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidKey
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetHashValueNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link GetHashValueNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestKey
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestKey__field1_; /** * Source Info:
                 *   Specialization: {@link GetHashValueNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetHashValueOrDefaultNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 30/18 bytes
         *   Specialization {@link GetHashValueOrDefaultNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 15/14 bytes
         * 
*/ @GeneratedBy(GetHashValueOrDefaultNode.class) @SuppressWarnings("javadoc") static final class GetHashValueOrDefaultNodeGen extends GetHashValueOrDefaultNode { private static final StateField CACHED0__GET_HASH_VALUE_OR_DEFAULT_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetHashValueOrDefaultNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__GET_HASH_VALUE_OR_DEFAULT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestDefaultValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_DEFAULT_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__GET_HASH_VALUE_OR_DEFAULT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestDefaultValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_HASH_VALUE_OR_DEFAULT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(6, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_VALUE_OR_DEFAULT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(8, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_VALUE_OR_DEFAULT_NODE_CACHED0_STATE_0_UPDATER.subUpdater(9, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_GetHashValueOrDefaultNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestDefaultValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_DEFAULT_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_GetHashValueOrDefaultNode_UPDATER.subUpdater(5, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestDefaultValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetHashValueOrDefaultNode_UPDATER.subUpdater(8, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashValueOrDefaultNode_UPDATER.subUpdater(10, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashValueOrDefaultNode_UPDATER.subUpdater(11, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetHashValueOrDefaultNode#doCached}
             *   1: SpecializationActive {@link GetHashValueOrDefaultNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestKey
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   5-7: InlinedCache
             *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestDefaultValue
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   8-9: InlinedCache
             *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   10: InlinedCache
             *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   11: InlinedCache
             *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidKey
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestKey__field1_; /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestDefaultValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestDefaultValue__field1_; /** * Source Info:
             *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetHashValueOrDefaultNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return GetHashValueOrDefaultNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_TO_GUEST_DEFAULT_VALUE_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetHashValueOrDefaultNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_TO_GUEST_DEFAULT_VALUE_, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetHashValueOrDefaultNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_TO_GUEST_DEFAULT_VALUE_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetHashValueOrDefaultNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, ToHostValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetHashValueOrDefaultNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_TO_GUEST_DEFAULT_VALUE_, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetHashValueOrDefaultNode create(InteropValue interop) { return new GetHashValueOrDefaultNodeGen(interop); } @GeneratedBy(GetHashValueOrDefaultNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestKey
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   3-5: InlinedCache
                 *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestDefaultValue
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   6-7: InlinedCache
                 *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   8: InlinedCache
                 *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   9: InlinedCache
                 *        Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidKey
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestKey
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestKey__field1_; /** * Source Info:
                 *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestDefaultValue
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestDefaultValue__field1_; /** * Source Info:
                 *   Specialization: {@link GetHashValueOrDefaultNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link PutHashEntryNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 27/14 bytes
         *   Specialization {@link PutHashEntryNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 13/10 bytes
         * 
*/ @GeneratedBy(PutHashEntryNode.class) @SuppressWarnings("javadoc") static final class PutHashEntryNodeGen extends PutHashEntryNode { private static final StateField CACHED0__PUT_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_PutHashEntryNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__PUT_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__PUT_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__PUT_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(6, 1))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__PUT_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(7, 1))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__PUT_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(8, 1))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_PutHashEntryNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_VALUE_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_PutHashEntryNode_UPDATER.subUpdater(5, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestValue__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_PutHashEntryNode_UPDATER.subUpdater(8, 1))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_PutHashEntryNode_UPDATER.subUpdater(9, 1))); /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidValue
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_VALUE_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_PutHashEntryNode_UPDATER.subUpdater(10, 1))); /** * State Info:
             *   0: SpecializationActive {@link PutHashEntryNode#doCached}
             *   1: SpecializationActive {@link PutHashEntryNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link PutHashEntryNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestKey
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   5-7: InlinedCache
             *        Specialization: {@link PutHashEntryNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestValue
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   8: InlinedCache
             *        Specialization: {@link PutHashEntryNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   9: InlinedCache
             *        Specialization: {@link PutHashEntryNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidKey
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   10: InlinedCache
             *        Specialization: {@link PutHashEntryNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidValue
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestKey__field1_; /** * Source Info:
             *   Specialization: {@link PutHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestValue
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestValue__field1_; private PutHashEntryNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return PutHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_TO_GUEST_VALUE_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_, INLINED_CACHED0_INVALID_VALUE_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return PutHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_TO_GUEST_VALUE_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_, INLINED_CACHED1_INVALID_VALUE_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return PutHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_TO_GUEST_VALUE_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_, INLINED_CACHED0_INVALID_VALUE_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.PutHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return PutHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_TO_GUEST_VALUE_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_, INLINED_CACHED1_INVALID_VALUE_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static PutHashEntryNode create(InteropValue interop) { return new PutHashEntryNodeGen(interop); } @GeneratedBy(PutHashEntryNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link PutHashEntryNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestKey
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   3-5: InlinedCache
                 *        Specialization: {@link PutHashEntryNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestValue
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   6: InlinedCache
                 *        Specialization: {@link PutHashEntryNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   7: InlinedCache
                 *        Specialization: {@link PutHashEntryNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidKey
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   8: InlinedCache
                 *        Specialization: {@link PutHashEntryNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidValue
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link PutHashEntryNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link PutHashEntryNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestKey
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestKey__field1_; /** * Source Info:
                 *   Specialization: {@link PutHashEntryNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestValue
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestValue__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link RemoveHashEntryNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link RemoveHashEntryNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(RemoveHashEntryNode.class) @SuppressWarnings("javadoc") static final class RemoveHashEntryNodeGen extends RemoveHashEntryNode { private static final StateField CACHED0__REMOVE_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_RemoveHashEntryNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED0_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, CACHED0__REMOVE_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 3), ReferenceField.create(Cached0Data.lookup_(), "cached0_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__REMOVE_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(3, 1))); /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__REMOVE_HASH_ENTRY_NODE_CACHED0_STATE_0_UPDATER.subUpdater(4, 1))); /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
*/ private static final ToGuestValueNode INLINED_CACHED1_TO_GUEST_KEY_ = ToGuestValueNodeGen.inline(InlineTarget.create(ToGuestValueNode.class, STATE_0_RemoveHashEntryNode_UPDATER.subUpdater(2, 3), ReferenceField.create(MethodHandles.lookup(), "cached1_toGuestKey__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_RemoveHashEntryNode_UPDATER.subUpdater(5, 1))); /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} invalidKey
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_INVALID_KEY_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_RemoveHashEntryNode_UPDATER.subUpdater(6, 1))); /** * State Info:
             *   0: SpecializationActive {@link RemoveHashEntryNode#doCached}
             *   1: SpecializationActive {@link RemoveHashEntryNode#doCached}
             *   2-4: InlinedCache
             *        Specialization: {@link RemoveHashEntryNode#doCached}
             *        Parameter: {@link ToGuestValueNode} toGuestKey
             *        Inline method: {@link ToGuestValueNodeGen#inline}
             *   5: InlinedCache
             *        Specialization: {@link RemoveHashEntryNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             *   6: InlinedCache
             *        Specialization: {@link RemoveHashEntryNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} invalidKey
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link RemoveHashEntryNode#doCached}
             *   Parameter: {@link ToGuestValueNode} toGuestKey
             *   Inline method: {@link ToGuestValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toGuestKey__field1_; private RemoveHashEntryNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return RemoveHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return RemoveHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return RemoveHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_GUEST_KEY_, INLINED_CACHED0_UNSUPPORTED_, INLINED_CACHED0_INVALID_KEY_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.RemoveHashEntryNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToGuestValueNode, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; return RemoveHashEntryNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_GUEST_KEY_, INLINED_CACHED1_UNSUPPORTED_, INLINED_CACHED1_INVALID_KEY_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static RemoveHashEntryNode create(InteropValue interop) { return new RemoveHashEntryNodeGen(interop); } @GeneratedBy(RemoveHashEntryNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-2: InlinedCache
                 *        Specialization: {@link RemoveHashEntryNode#doCached}
                 *        Parameter: {@link ToGuestValueNode} toGuestKey
                 *        Inline method: {@link ToGuestValueNodeGen#inline}
                 *   3: InlinedCache
                 *        Specialization: {@link RemoveHashEntryNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 *   4: InlinedCache
                 *        Specialization: {@link RemoveHashEntryNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} invalidKey
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link RemoveHashEntryNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link RemoveHashEntryNode#doCached}
                 *   Parameter: {@link ToGuestValueNode} toGuestKey
                 *   Inline method: {@link ToGuestValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toGuestKey__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetHashEntriesIteratorNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetHashEntriesIteratorNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetHashEntriesIteratorNode.class) @SuppressWarnings("javadoc") static final class GetHashEntriesIteratorNodeGen extends GetHashEntriesIteratorNode { private static final StateField CACHED0__GET_HASH_ENTRIES_ITERATOR_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetHashEntriesIteratorNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_HASH_ENTRIES_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_ENTRIES_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetHashEntriesIteratorNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashEntriesIteratorNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetHashEntriesIteratorNode#doCached}
             *   1: SpecializationActive {@link GetHashEntriesIteratorNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetHashEntriesIteratorNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return GetHashEntriesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetHashEntriesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetHashEntriesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetHashEntriesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetHashEntriesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetHashEntriesIteratorNode create(InteropValue interop) { return new GetHashEntriesIteratorNodeGen(interop); } @GeneratedBy(GetHashEntriesIteratorNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetHashEntriesIteratorNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetHashEntriesIteratorNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link GetHashEntriesIteratorNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetHashKeysIteratorNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetHashKeysIteratorNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetHashKeysIteratorNode.class) @SuppressWarnings("javadoc") static final class GetHashKeysIteratorNodeGen extends GetHashKeysIteratorNode { private static final StateField CACHED0__GET_HASH_KEYS_ITERATOR_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetHashKeysIteratorNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetHashKeysIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_HASH_KEYS_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashKeysIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_KEYS_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetHashKeysIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetHashKeysIteratorNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashKeysIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashKeysIteratorNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetHashKeysIteratorNode#doCached}
             *   1: SpecializationActive {@link GetHashKeysIteratorNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetHashKeysIteratorNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetHashKeysIteratorNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetHashKeysIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetHashKeysIteratorNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return GetHashKeysIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetHashKeysIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetHashKeysIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetHashKeysIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetHashKeysIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetHashKeysIteratorNode create(InteropValue interop) { return new GetHashKeysIteratorNodeGen(interop); } @GeneratedBy(GetHashKeysIteratorNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetHashKeysIteratorNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetHashKeysIteratorNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetHashKeysIteratorNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link GetHashKeysIteratorNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
         *   Specialization {@link GetHashValuesIteratorNode#doCached}
         *     Activation probability: 0.65000
         *     With/without class size: 24/9 bytes
         *   Specialization {@link GetHashValuesIteratorNode#doCached}
         *     Activation probability: 0.35000
         *     With/without class size: 12/5 bytes
         * 
*/ @GeneratedBy(GetHashValuesIteratorNode.class) @SuppressWarnings("javadoc") static final class GetHashValuesIteratorNodeGen extends GetHashValuesIteratorNode { private static final StateField CACHED0__GET_HASH_VALUES_ITERATOR_NODE_CACHED0_STATE_0_UPDATER = StateField.create(Cached0Data.lookup_(), "cached0_state_0_"); private static final StateField STATE_0_GetHashValuesIteratorNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CACHED0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached0_cache", Cached0Data.class); /** * Source Info:
             *   Specialization: {@link GetHashValuesIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED0_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, CACHED0__GET_HASH_VALUES_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(Cached0Data.lookup_(), "cached0_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValuesIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED0_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, CACHED0__GET_HASH_VALUES_ITERATOR_NODE_CACHED0_STATE_0_UPDATER.subUpdater(2, 1))); /** * Source Info:
             *   Specialization: {@link GetHashValuesIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
*/ private static final ToHostValueNode INLINED_CACHED1_TO_HOST_ = ToHostValueNodeGen.inline(InlineTarget.create(ToHostValueNode.class, STATE_0_GetHashValuesIteratorNode_UPDATER.subUpdater(2, 2), ReferenceField.create(MethodHandles.lookup(), "cached1_toHost__field1_", Object.class))); /** * Source Info:
             *   Specialization: {@link GetHashValuesIteratorNode#doCached}
             *   Parameter: {@link InlinedBranchProfile} unsupported
             *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_CACHED1_UNSUPPORTED_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_GetHashValuesIteratorNode_UPDATER.subUpdater(4, 1))); /** * State Info:
             *   0: SpecializationActive {@link GetHashValuesIteratorNode#doCached}
             *   1: SpecializationActive {@link GetHashValuesIteratorNode#doCached}
             *   2-3: InlinedCache
             *        Specialization: {@link GetHashValuesIteratorNode#doCached}
             *        Parameter: {@link ToHostValueNode} toHost
             *        Inline method: {@link ToHostValueNodeGen#inline}
             *   4: InlinedCache
             *        Specialization: {@link GetHashValuesIteratorNode#doCached}
             *        Parameter: {@link InlinedBranchProfile} unsupported
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private Cached0Data cached0_cache; /** * Source Info:
             *   Specialization: {@link GetHashValuesIteratorNode#doCached}
             *   Parameter: {@link ToHostValueNode} toHost
             *   Inline method: {@link ToHostValueNodeGen#inline}
             *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached1_toHost__field1_; private GetHashValuesIteratorNodeGen(InteropValue interop) { super(interop); } @ExplodeLoop @Override protected Object executeImpl(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b11) != 0 /* is SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] || SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { Cached0Data s0_ = this.cached0_cache; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { Node node__ = (s0_); return GetHashValuesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { return this.cached1Boundary(state_0, arg0Value, arg1Value, arg2Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object cached1Boundary(int state_0, PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (this); InteropLibrary hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); return GetHashValuesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(PolyglotLanguageContext arg0Value, Object arg1Value, Object[] arg2Value) { int state_0 = this.state_0_; { Node node__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */) { while (true) { int count0_ = 0; Cached0Data s0_ = CACHED0_CACHE_UPDATER.getVolatile(this); Cached0Data s0_original = s0_; while (s0_ != null) { if ((s0_.hashes_.accepts(arg1Value))) { node__ = (s0_); break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.hashes_.accepts(arg1Value)); if (count0_ < (InteropNode.CACHE_LIMIT)) { s0_ = this.insert(new Cached0Data(s0_original)); node__ = (s0_); InteropLibrary hashes__ = s0_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(hashes__, "Specialization 'doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)' cache 'hashes' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s0_.hashes_ = hashes__; if (!CACHED0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s0_ != null) { return GetHashValuesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, s0_.hashes_, INLINED_CACHED0_TO_HOST_, INLINED_CACHED0_UNSUPPORTED_); } break; } } } { InteropLibrary hashes__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { node__ = (this); hashes__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); this.cached0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[InteropValue.GetHashValuesIteratorNode.doCached(PolyglotLanguageContext, Object, Object[], Node, InteropLibrary, ToHostValueNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return GetHashValuesIteratorNode.doCached(arg0Value, arg1Value, arg2Value, node__, hashes__, INLINED_CACHED1_TO_HOST_, INLINED_CACHED1_UNSUPPORTED_); } finally { encapsulating_.set(prev_); } } } } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b11) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b11) & ((state_0 & 0b11) - 1)) == 0 /* is-single */) { Cached0Data s0_ = this.cached0_cache; if ((s0_ == null || s0_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } @NeverDefault public static GetHashValuesIteratorNode create(InteropValue interop) { return new GetHashValuesIteratorNodeGen(interop); } @GeneratedBy(GetHashValuesIteratorNode.class) @DenyReplace private static final class Cached0Data extends Node implements SpecializationDataNode { @Child Cached0Data next_; /** * State Info:
                 *   0-1: InlinedCache
                 *        Specialization: {@link GetHashValuesIteratorNode#doCached}
                 *        Parameter: {@link ToHostValueNode} toHost
                 *        Inline method: {@link ToHostValueNodeGen#inline}
                 *   2: InlinedCache
                 *        Specialization: {@link GetHashValuesIteratorNode#doCached}
                 *        Parameter: {@link InlinedBranchProfile} unsupported
                 *        Inline method: {@link InlinedBranchProfile#inline}
                 * 
*/ @CompilationFinal @UnsafeAccessedField private int cached0_state_0_; /** * Source Info:
                 *   Specialization: {@link GetHashValuesIteratorNode#doCached}
                 *   Parameter: {@link InteropLibrary} hashes
*/ @Child InteropLibrary hashes_; /** * Source Info:
                 *   Specialization: {@link GetHashValuesIteratorNode#doCached}
                 *   Parameter: {@link ToHostValueNode} toHost
                 *   Inline method: {@link ToHostValueNodeGen#inline}
                 *   Inline field: {@link Object} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object cached0_toHost__field1_; Cached0Data(Cached0Data next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } } } }