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

com.oracle.truffle.js.builtins.ObjectFunctionBuiltinsFactory Maven / Gradle / Ivy

// CheckStyle: start generated
package com.oracle.truffle.js.builtins;

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.DSLSupport;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.UnsupportedSpecializationException;
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.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.frame.VirtualFrame;
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.UnexpectedResultException;
import com.oracle.truffle.api.object.DynamicObjectLibrary;
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode;
import com.oracle.truffle.api.strings.TruffleString.ReadCharUTF16Node;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.AssignPropertiesNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectAssignNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectBindPropertiesNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectCreateNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectDefinePropertiesNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectDefinePropertyNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectFromEntriesNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectGetPrototypeOfNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectGroupByNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectHasOwnNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectIsExtensibleNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectIsNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectKeysNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectPreventExtensionsNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectSetPrototypeOfNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode;
import com.oracle.truffle.js.builtins.ObjectFunctionBuiltins.ObjectValuesOrEntriesNode;
import com.oracle.truffle.js.builtins.helper.ListGetNode;
import com.oracle.truffle.js.builtins.helper.ListGetNodeGen;
import com.oracle.truffle.js.builtins.helper.ListSizeNode;
import com.oracle.truffle.js.builtins.helper.ListSizeNodeGen;
import com.oracle.truffle.js.nodes.JSGuards;
import com.oracle.truffle.js.nodes.JSTypes;
import com.oracle.truffle.js.nodes.JSTypesGen;
import com.oracle.truffle.js.nodes.JavaScriptNode;
import com.oracle.truffle.js.nodes.access.EnumerableOwnPropertyNamesNode;
import com.oracle.truffle.js.nodes.access.FromPropertyDescriptorNode;
import com.oracle.truffle.js.nodes.access.FromPropertyDescriptorNodeGen;
import com.oracle.truffle.js.nodes.access.GetIteratorNode;
import com.oracle.truffle.js.nodes.access.GetIteratorNodeGen;
import com.oracle.truffle.js.nodes.access.GetPrototypeNode;
import com.oracle.truffle.js.nodes.access.GroupByNode;
import com.oracle.truffle.js.nodes.access.GroupByNodeGen;
import com.oracle.truffle.js.nodes.access.IsExtensibleNode;
import com.oracle.truffle.js.nodes.access.IsObjectNode;
import com.oracle.truffle.js.nodes.access.IteratorCloseNode;
import com.oracle.truffle.js.nodes.access.IteratorStepNode;
import com.oracle.truffle.js.nodes.access.IteratorValueNode;
import com.oracle.truffle.js.nodes.access.JSGetOwnPropertyNode;
import com.oracle.truffle.js.nodes.access.ReadElementNode;
import com.oracle.truffle.js.nodes.access.RequireObjectCoercibleNode;
import com.oracle.truffle.js.nodes.access.WriteElementNode;
import com.oracle.truffle.js.nodes.binary.JSIdenticalNode;
import com.oracle.truffle.js.nodes.cast.JSToObjectNode;
import com.oracle.truffle.js.nodes.cast.JSToPropertyKeyNode;
import com.oracle.truffle.js.nodes.function.JSBuiltin;
import com.oracle.truffle.js.nodes.interop.ImportValueNode;
import com.oracle.truffle.js.runtime.BigInt;
import com.oracle.truffle.js.runtime.JSConfig;
import com.oracle.truffle.js.runtime.JSContext;
import com.oracle.truffle.js.runtime.SafeInteger;
import com.oracle.truffle.js.runtime.Symbol;
import com.oracle.truffle.js.runtime.builtins.JSArrayObject;
import com.oracle.truffle.js.runtime.builtins.JSTypedArrayObject;
import com.oracle.truffle.js.runtime.objects.JSDynamicObject;
import com.oracle.truffle.js.runtime.objects.JSObject;
import com.oracle.truffle.js.runtime.objects.JSShape;
import com.oracle.truffle.js.runtime.util.JSClassProfile;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;

@GeneratedBy(ObjectFunctionBuiltins.class)
@SuppressWarnings({"javadoc", "unused"})
public final class ObjectFunctionBuiltinsFactory {

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

    /**
     * Debug Info: 
     *   Specialization {@link ObjectGetPrototypeOfNode#getPrototypeOfJSObject}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link ObjectGetPrototypeOfNode#getPrototypeOfNonObject}
     *     Activation probability: 0.35000
     *     With/without class size: 11/1 bytes
     * 
*/ @GeneratedBy(ObjectGetPrototypeOfNode.class) @SuppressWarnings("javadoc") public static final class ObjectGetPrototypeOfNodeGen extends ObjectGetPrototypeOfNode { private static final StateField STATE_0_ObjectGetPrototypeOfNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
         *   Specialization: {@link ObjectGetPrototypeOfNode#getPrototypeOfNonObject}
         *   Parameter: {@link InlinedConditionProfile} isForeignProfile
         *   Inline method: {@link InlinedConditionProfile#inline}
*/ private static final InlinedConditionProfile INLINED_GET_PROTOTYPE_OF_NON_OBJECT_IS_FOREIGN_PROFILE_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, STATE_0_ObjectGetPrototypeOfNode_UPDATER.subUpdater(2, 2))); @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectGetPrototypeOfNode#getPrototypeOfJSObject}
         *   1: SpecializationActive {@link ObjectGetPrototypeOfNode#getPrototypeOfNonObject}
         *   2-3: InlinedCache
         *        Specialization: {@link ObjectGetPrototypeOfNode#getPrototypeOfNonObject}
         *        Parameter: {@link InlinedConditionProfile} isForeignProfile
         *        Inline method: {@link InlinedConditionProfile#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectGetPrototypeOfNode#getPrototypeOfJSObject}
         *   Parameter: {@link GetPrototypeNode} getPrototypeNode
*/ @Child private GetPrototypeNode getPrototypeOfJSObject_getPrototypeNode_; private ObjectGetPrototypeOfNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if ((state_0 & 0b11) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetPrototypeOfNode.getPrototypeOfJSObject(JSObject, GetPrototypeNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetPrototypeOfNode.getPrototypeOfNonObject(Object, InlinedConditionProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetPrototypeOfNode.getPrototypeOfJSObject(JSObject, GetPrototypeNode)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; { GetPrototypeNode getPrototypeNode__ = this.getPrototypeOfJSObject_getPrototypeNode_; if (getPrototypeNode__ != null) { return getPrototypeOfJSObject(arguments0Value__, getPrototypeNode__); } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetPrototypeOfNode.getPrototypeOfNonObject(Object, InlinedConditionProfile)] */) { if ((!(JSGuards.isJSObject(arguments0Value_)))) { return getPrototypeOfNonObject(arguments0Value_, INLINED_GET_PROTOTYPE_OF_NON_OBJECT_IS_FOREIGN_PROFILE_); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private JSDynamicObject executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; GetPrototypeNode getPrototypeNode__ = this.insert((GetPrototypeNode.create())); Objects.requireNonNull(getPrototypeNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getPrototypeOfJSObject_getPrototypeNode_ = getPrototypeNode__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetPrototypeOfNode.getPrototypeOfJSObject(JSObject, GetPrototypeNode)] */; this.state_0_ = state_0; return getPrototypeOfJSObject(arguments0Value_, getPrototypeNode__); } if ((!(JSGuards.isJSObject(arguments0Value)))) { state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetPrototypeOfNode.getPrototypeOfNonObject(Object, InlinedConditionProfile)] */; this.state_0_ = state_0; return getPrototypeOfNonObject(arguments0Value, INLINED_GET_PROTOTYPE_OF_NON_OBJECT_IS_FOREIGN_PROFILE_); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectGetPrototypeOfNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectGetPrototypeOfNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectGetOwnPropertyDescriptorNode#getJSObject}
     *     Activation probability: 0.38500
     *     With/without class size: 8/0 bytes
     *   Specialization {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
     *     Activation probability: 0.29500
     *     With/without class size: 13/12 bytes
     *   Specialization {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
     *     Activation probability: 0.20500
     *     With/without class size: 8/8 bytes
     *   Specialization {@link ObjectGetOwnPropertyDescriptorNode#getDefault}
     *     Activation probability: 0.11500
     *     With/without class size: 5/0 bytes
     * 
*/ @GeneratedBy(ObjectGetOwnPropertyDescriptorNode.class) @SuppressWarnings("javadoc") public static final class ObjectGetOwnPropertyDescriptorNodeGen extends ObjectGetOwnPropertyDescriptorNode { static final ReferenceField GET_FOREIGN_OBJECT0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getForeignObject0_cache", GetForeignObject0Data.class); @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectGetOwnPropertyDescriptorNode#getJSObject}
         *   1: SpecializationActive {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
         *   2: SpecializationActive {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
         *   3: SpecializationActive {@link ObjectGetOwnPropertyDescriptorNode#getDefault}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getJSObject}
         *   Parameter: {@link JSToPropertyKeyNode} toPropertyKeyNode
*/ @Child private JSToPropertyKeyNode toPropertyKeyNode; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getJSObject}
         *   Parameter: {@link FromPropertyDescriptorNode} fromPropertyDescriptorNode
*/ @Child private FromPropertyDescriptorNode fromPropertyDescriptorNode; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getJSObject}
         *   Parameter: {@link JSGetOwnPropertyNode} getOwnPropertyNode
*/ @Child private JSGetOwnPropertyNode getOwnPropertyNode; @UnsafeAccessedField @Child private GetForeignObject0Data getForeignObject0_cache; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
         *   Parameter: {@link ImportValueNode} toJSType
*/ @Child private ImportValueNode getForeignObject1_toJSType_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
         *   Parameter: {@link ReadCharUTF16Node} charAtNode
*/ @Child private ReadCharUTF16Node getForeignObject1_charAtNode_; private ObjectGetOwnPropertyDescriptorNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @ExplodeLoop @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getJSObject(JSObject, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getDefault(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getJSObject(JSObject, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; { JSToPropertyKeyNode toPropertyKeyNode_ = this.toPropertyKeyNode; if (toPropertyKeyNode_ != null) { FromPropertyDescriptorNode fromPropertyDescriptorNode_ = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_ != null) { JSGetOwnPropertyNode getOwnPropertyNode_ = this.getOwnPropertyNode; if (getOwnPropertyNode_ != null) { return getJSObject(arguments0Value__, arguments1Value_, toPropertyKeyNode_, fromPropertyDescriptorNode_, getOwnPropertyNode_); } } } } } if ((state_0 & 0b1110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getDefault(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] */) { GetForeignObject0Data s1_ = this.getForeignObject0_cache; while (s1_ != null) { { JSToPropertyKeyNode toPropertyKeyNode_1 = this.toPropertyKeyNode; if (toPropertyKeyNode_1 != null) { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { if ((s1_.interop_.accepts(arguments0Value_)) && (JSGuards.isForeignObject(arguments0Value_))) { return getForeignObject(arguments0Value_, arguments1Value_, toPropertyKeyNode_1, fromPropertyDescriptorNode_1, s1_.interop_, s1_.toJSType_, s1_.charAtNode_); } } } } s1_ = s1_.next_; } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] */) { { JSToPropertyKeyNode toPropertyKeyNode_1 = this.toPropertyKeyNode; if (toPropertyKeyNode_1 != null) { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { ImportValueNode toJSType__ = this.getForeignObject1_toJSType_; if (toJSType__ != null) { ReadCharUTF16Node charAtNode__ = this.getForeignObject1_charAtNode_; if (charAtNode__ != null) { if ((JSGuards.isForeignObject(arguments0Value_))) { return this.getForeignObject1Boundary(state_0, arguments0Value_, arguments1Value_, toPropertyKeyNode_1, fromPropertyDescriptorNode_1, toJSType__, charAtNode__); } } } } } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getDefault(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] */) { { JSToPropertyKeyNode toPropertyKeyNode_2 = this.toPropertyKeyNode; if (toPropertyKeyNode_2 != null) { FromPropertyDescriptorNode fromPropertyDescriptorNode_2 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_2 != null) { JSGetOwnPropertyNode getOwnPropertyNode_1 = this.getOwnPropertyNode; if (getOwnPropertyNode_1 != null) { if ((!(JSGuards.isJSObject(arguments0Value_))) && (!(JSGuards.isForeignObject(arguments0Value_)))) { return getDefault(arguments0Value_, arguments1Value_, toPropertyKeyNode_2, fromPropertyDescriptorNode_2, getOwnPropertyNode_1); } } } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } @SuppressWarnings("static-method") @TruffleBoundary private Object getForeignObject1Boundary(int state_0, Object arguments0Value_, Object arguments1Value_, JSToPropertyKeyNode toPropertyKeyNode_1, FromPropertyDescriptorNode fromPropertyDescriptorNode_1, ImportValueNode toJSType__, ReadCharUTF16Node charAtNode__) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { InteropLibrary interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value_)); return getForeignObject(arguments0Value_, arguments1Value_, toPropertyKeyNode_1, fromPropertyDescriptorNode_1, interop__, toJSType__, charAtNode__); } } finally { encapsulating_.set(prev_); } } private JSDynamicObject executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; JSToPropertyKeyNode toPropertyKeyNode_; JSToPropertyKeyNode toPropertyKeyNode__shared = this.toPropertyKeyNode; if (toPropertyKeyNode__shared != null) { toPropertyKeyNode_ = toPropertyKeyNode__shared; } else { toPropertyKeyNode_ = this.insert((JSToPropertyKeyNode.create())); if (toPropertyKeyNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.toPropertyKeyNode == null) { VarHandle.storeStoreFence(); this.toPropertyKeyNode = toPropertyKeyNode_; } FromPropertyDescriptorNode fromPropertyDescriptorNode_; FromPropertyDescriptorNode fromPropertyDescriptorNode__shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode__shared != null) { fromPropertyDescriptorNode_ = fromPropertyDescriptorNode__shared; } else { fromPropertyDescriptorNode_ = this.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { VarHandle.storeStoreFence(); this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_; } JSGetOwnPropertyNode getOwnPropertyNode_; JSGetOwnPropertyNode getOwnPropertyNode__shared = this.getOwnPropertyNode; if (getOwnPropertyNode__shared != null) { getOwnPropertyNode_ = getOwnPropertyNode__shared; } else { getOwnPropertyNode_ = this.insert((JSGetOwnPropertyNode.create())); if (getOwnPropertyNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.getOwnPropertyNode == null) { VarHandle.storeStoreFence(); this.getOwnPropertyNode = getOwnPropertyNode_; } state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getJSObject(JSObject, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] */; this.state_0_ = state_0; return getJSObject(arguments0Value_, arguments1Value, toPropertyKeyNode_, fromPropertyDescriptorNode_, getOwnPropertyNode_); } if (((state_0 & 0b100)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] */) { while (true) { int count1_ = 0; GetForeignObject0Data s1_ = GET_FOREIGN_OBJECT0_CACHE_UPDATER.getVolatile(this); GetForeignObject0Data s1_original = s1_; while (s1_ != null) { { JSToPropertyKeyNode toPropertyKeyNode_1 = this.toPropertyKeyNode; if (toPropertyKeyNode_1 != null) { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { if ((s1_.interop_.accepts(arguments0Value)) && (JSGuards.isForeignObject(arguments0Value))) { break; } } } } count1_++; s1_ = s1_.next_; } if (s1_ == null) { if ((JSGuards.isForeignObject(arguments0Value)) && count1_ < (JSConfig.InteropLibraryLimit)) { // assert (s1_.interop_.accepts(arguments0Value)); s1_ = this.insert(new GetForeignObject0Data(s1_original)); JSToPropertyKeyNode toPropertyKeyNode_1; JSToPropertyKeyNode toPropertyKeyNode_1_shared = this.toPropertyKeyNode; if (toPropertyKeyNode_1_shared != null) { toPropertyKeyNode_1 = toPropertyKeyNode_1_shared; } else { toPropertyKeyNode_1 = s1_.insert((JSToPropertyKeyNode.create())); if (toPropertyKeyNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.toPropertyKeyNode == null) { this.toPropertyKeyNode = toPropertyKeyNode_1; } FromPropertyDescriptorNode fromPropertyDescriptorNode_1; FromPropertyDescriptorNode fromPropertyDescriptorNode_1_shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1_shared != null) { fromPropertyDescriptorNode_1 = fromPropertyDescriptorNode_1_shared; } else { fromPropertyDescriptorNode_1 = s1_.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_1; } InteropLibrary interop__ = s1_.insert((INTEROP_LIBRARY_.create(arguments0Value))); Objects.requireNonNull(interop__, "A specialization cache returned a 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 the default value."); s1_.interop_ = interop__; ImportValueNode toJSType__ = s1_.insert((ImportValueNode.create())); Objects.requireNonNull(toJSType__, "A specialization cache returned a 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 the default value."); s1_.toJSType_ = toJSType__; ReadCharUTF16Node charAtNode__ = s1_.insert((ReadCharUTF16Node.create())); Objects.requireNonNull(charAtNode__, "A specialization cache returned a 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 the default value."); s1_.charAtNode_ = charAtNode__; if (!GET_FOREIGN_OBJECT0_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] */; this.state_0_ = state_0; } } if (s1_ != null) { return getForeignObject(arguments0Value, arguments1Value, this.toPropertyKeyNode, this.fromPropertyDescriptorNode, s1_.interop_, s1_.toJSType_, s1_.charAtNode_); } break; } } { InteropLibrary interop__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { if ((JSGuards.isForeignObject(arguments0Value))) { JSToPropertyKeyNode toPropertyKeyNode_1; JSToPropertyKeyNode toPropertyKeyNode_1_shared = this.toPropertyKeyNode; if (toPropertyKeyNode_1_shared != null) { toPropertyKeyNode_1 = toPropertyKeyNode_1_shared; } else { toPropertyKeyNode_1 = this.insert((JSToPropertyKeyNode.create())); if (toPropertyKeyNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.toPropertyKeyNode == null) { VarHandle.storeStoreFence(); this.toPropertyKeyNode = toPropertyKeyNode_1; } FromPropertyDescriptorNode fromPropertyDescriptorNode_1; FromPropertyDescriptorNode fromPropertyDescriptorNode_1_shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1_shared != null) { fromPropertyDescriptorNode_1 = fromPropertyDescriptorNode_1_shared; } else { fromPropertyDescriptorNode_1 = this.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { VarHandle.storeStoreFence(); this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_1; } interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value)); ImportValueNode toJSType__ = this.insert((ImportValueNode.create())); Objects.requireNonNull(toJSType__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getForeignObject1_toJSType_ = toJSType__; ReadCharUTF16Node charAtNode__ = this.insert((ReadCharUTF16Node.create())); Objects.requireNonNull(charAtNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getForeignObject1_charAtNode_ = charAtNode__; this.getForeignObject0_cache = null; state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] */; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getForeignObject(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, InteropLibrary, ImportValueNode, ReadCharUTF16Node)] */; this.state_0_ = state_0; return getForeignObject(arguments0Value, arguments1Value, toPropertyKeyNode_1, fromPropertyDescriptorNode_1, interop__, toJSType__, charAtNode__); } } finally { encapsulating_.set(prev_); } } } if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { JSToPropertyKeyNode toPropertyKeyNode_2; JSToPropertyKeyNode toPropertyKeyNode_2_shared = this.toPropertyKeyNode; if (toPropertyKeyNode_2_shared != null) { toPropertyKeyNode_2 = toPropertyKeyNode_2_shared; } else { toPropertyKeyNode_2 = this.insert((JSToPropertyKeyNode.create())); if (toPropertyKeyNode_2 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.toPropertyKeyNode == null) { VarHandle.storeStoreFence(); this.toPropertyKeyNode = toPropertyKeyNode_2; } FromPropertyDescriptorNode fromPropertyDescriptorNode_2; FromPropertyDescriptorNode fromPropertyDescriptorNode_2_shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_2_shared != null) { fromPropertyDescriptorNode_2 = fromPropertyDescriptorNode_2_shared; } else { fromPropertyDescriptorNode_2 = this.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_2 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { VarHandle.storeStoreFence(); this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_2; } JSGetOwnPropertyNode getOwnPropertyNode_1; JSGetOwnPropertyNode getOwnPropertyNode_1_shared = this.getOwnPropertyNode; if (getOwnPropertyNode_1_shared != null) { getOwnPropertyNode_1 = getOwnPropertyNode_1_shared; } else { getOwnPropertyNode_1 = this.insert((JSGetOwnPropertyNode.create())); if (getOwnPropertyNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.getOwnPropertyNode == null) { VarHandle.storeStoreFence(); this.getOwnPropertyNode = getOwnPropertyNode_1; } state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorNode.getDefault(Object, Object, JSToPropertyKeyNode, FromPropertyDescriptorNode, JSGetOwnPropertyNode)] */; this.state_0_ = state_0; return getDefault(arguments0Value, arguments1Value, toPropertyKeyNode_2, fromPropertyDescriptorNode_2, getOwnPropertyNode_1); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_, this.arguments1_}, arguments0Value, arguments1Value); } @NeverDefault public static ObjectGetOwnPropertyDescriptorNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectGetOwnPropertyDescriptorNodeGen(context, builtin, arguments); } @GeneratedBy(ObjectGetOwnPropertyDescriptorNode.class) @DenyReplace private static final class GetForeignObject0Data extends Node implements SpecializationDataNode { @Child GetForeignObject0Data next_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
             *   Parameter: {@link InteropLibrary} interop
*/ @Child InteropLibrary interop_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
             *   Parameter: {@link ImportValueNode} toJSType
*/ @Child ImportValueNode toJSType_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorNode#getForeignObject}
             *   Parameter: {@link ReadCharUTF16Node} charAtNode
*/ @Child ReadCharUTF16Node charAtNode_; GetForeignObject0Data(GetForeignObject0Data next_) { this.next_ = next_; } } } /** * Debug Info:
     *   Specialization {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
     *     Activation probability: 0.38500
     *     With/without class size: 16/16 bytes
     *   Specialization {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
     *     Activation probability: 0.29500
     *     With/without class size: 15/17 bytes
     *   Specialization {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
     *     Activation probability: 0.20500
     *     With/without class size: 10/13 bytes
     *   Specialization {@link ObjectGetOwnPropertyDescriptorsNode#getDefault}
     *     Activation probability: 0.11500
     *     With/without class size: 6/4 bytes
     * 
*/ @GeneratedBy(ObjectGetOwnPropertyDescriptorsNode.class) @SuppressWarnings("javadoc") public static final class ObjectGetOwnPropertyDescriptorsNodeGen extends ObjectGetOwnPropertyDescriptorsNode { private static final StateField GET_FOREIGN_OBJECT0__OBJECT_GET_OWN_PROPERTY_DESCRIPTORS_NODE_GET_FOREIGN_OBJECT0_STATE_0_UPDATER = StateField.create(GetForeignObject0Data.lookup_(), "getForeignObject0_state_0_"); private static final StateField GET_FOREIGN_OBJECT1__OBJECT_GET_OWN_PROPERTY_DESCRIPTORS_NODE_GET_FOREIGN_OBJECT1_STATE_0_UPDATER = StateField.create(GetForeignObject1Data.lookup_(), "getForeignObject1_state_0_"); static final ReferenceField GET_FOREIGN_OBJECT0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getForeignObject0_cache", GetForeignObject0Data.class); /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
         *   Parameter: {@link InlinedBranchProfile} errorBranch
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FOREIGN_OBJECT0_ERROR_BRANCH_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FOREIGN_OBJECT0__OBJECT_GET_OWN_PROPERTY_DESCRIPTORS_NODE_GET_FOREIGN_OBJECT0_STATE_0_UPDATER.subUpdater(0, 1))); /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
         *   Parameter: {@link InlinedBranchProfile} errorBranch
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FOREIGN_OBJECT1_ERROR_BRANCH_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FOREIGN_OBJECT1__OBJECT_GET_OWN_PROPERTY_DESCRIPTORS_NODE_GET_FOREIGN_OBJECT1_STATE_0_UPDATER.subUpdater(0, 1))); @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   1: SpecializationActive {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
         *   2: SpecializationActive {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
         *   3: SpecializationActive {@link ObjectGetOwnPropertyDescriptorsNode#getDefault}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   Parameter: {@link FromPropertyDescriptorNode} fromPropertyDescriptorNode
*/ @Child private FromPropertyDescriptorNode fromPropertyDescriptorNode; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   Parameter: {@link DynamicObjectLibrary} putPropDescNode
*/ @Child private DynamicObjectLibrary putPropDescNode; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   Parameter: {@link JSGetOwnPropertyNode} getOwnPropertyNode
*/ @Child private JSGetOwnPropertyNode getJSObject_getOwnPropertyNode_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   Parameter: {@link ListSizeNode} listSize
*/ @Child private ListSizeNode getJSObject_listSize_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   Parameter: {@link ListGetNode} listGet
*/ @Child private ListGetNode getJSObject_listGet_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getJSObject}
         *   Parameter: {@link JSClassProfile} classProfile
*/ @CompilationFinal private JSClassProfile getJSObject_classProfile_; @UnsafeAccessedField @Child private GetForeignObject0Data getForeignObject0_cache; @Child private GetForeignObject1Data getForeignObject1_cache; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getDefault}
         *   Parameter: {@link ObjectGetOwnPropertyDescriptorsNode} recursive
*/ @Child private ObjectGetOwnPropertyDescriptorsNode getDefault_recursive_; private ObjectGetOwnPropertyDescriptorsNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @ExplodeLoop @Override protected JSDynamicObject executeEvaluated(Object arguments0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getJSObject(JSObject, FromPropertyDescriptorNode, DynamicObjectLibrary, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getJSObject(JSObject, FromPropertyDescriptorNode, DynamicObjectLibrary, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] */ && arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; { FromPropertyDescriptorNode fromPropertyDescriptorNode_ = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_ != null) { DynamicObjectLibrary putPropDescNode_ = this.putPropDescNode; if (putPropDescNode_ != null) { JSGetOwnPropertyNode getOwnPropertyNode__ = this.getJSObject_getOwnPropertyNode_; if (getOwnPropertyNode__ != null) { ListSizeNode listSize__ = this.getJSObject_listSize_; if (listSize__ != null) { ListGetNode listGet__ = this.getJSObject_listGet_; if (listGet__ != null) { JSClassProfile classProfile__ = this.getJSObject_classProfile_; if (classProfile__ != null) { return getJSObject(arguments0Value_, fromPropertyDescriptorNode_, putPropDescNode_, getOwnPropertyNode__, listSize__, listGet__, classProfile__); } } } } } } } } if ((state_0 & 0b1110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */) { GetForeignObject0Data s1_ = this.getForeignObject0_cache; while (s1_ != null) { { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { DynamicObjectLibrary putPropDescNode_1 = this.putPropDescNode; if (putPropDescNode_1 != null) { if ((s1_.interop_.accepts(arguments0Value)) && (JSGuards.isForeignObject(arguments0Value))) { Node node__ = (s1_); return getForeignObject(arguments0Value, node__, fromPropertyDescriptorNode_1, putPropDescNode_1, s1_.interop_, s1_.members_, s1_.toJSType_, s1_.fromJavaString_, INLINED_GET_FOREIGN_OBJECT0_ERROR_BRANCH_); } } } } s1_ = s1_.next_; } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */) { GetForeignObject1Data s2_ = this.getForeignObject1_cache; if (s2_ != null) { { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { DynamicObjectLibrary putPropDescNode_1 = this.putPropDescNode; if (putPropDescNode_1 != null) { if ((JSGuards.isForeignObject(arguments0Value))) { return this.getForeignObject1Boundary(state_0, s2_, arguments0Value, fromPropertyDescriptorNode_1, putPropDescNode_1); } } } } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */) { { ObjectGetOwnPropertyDescriptorsNode recursive__ = this.getDefault_recursive_; if (recursive__ != null) { if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { return getDefault(arguments0Value, recursive__); } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value); } @SuppressWarnings("static-method") @TruffleBoundary private JSDynamicObject getForeignObject1Boundary(int state_0, GetForeignObject1Data s2_, Object arguments0Value, FromPropertyDescriptorNode fromPropertyDescriptorNode_1, DynamicObjectLibrary putPropDescNode_1) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (s2_); InteropLibrary interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value)); return getForeignObject(arguments0Value, node__, fromPropertyDescriptorNode_1, putPropDescNode_1, interop__, s2_.members_, s2_.toJSType_, s2_.fromJavaString_, INLINED_GET_FOREIGN_OBJECT1_ERROR_BRANCH_); } } finally { encapsulating_.set(prev_); } } @ExplodeLoop @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getJSObject(JSObject, FromPropertyDescriptorNode, DynamicObjectLibrary, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getJSObject(JSObject, FromPropertyDescriptorNode, DynamicObjectLibrary, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; { FromPropertyDescriptorNode fromPropertyDescriptorNode_ = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_ != null) { DynamicObjectLibrary putPropDescNode_ = this.putPropDescNode; if (putPropDescNode_ != null) { JSGetOwnPropertyNode getOwnPropertyNode__ = this.getJSObject_getOwnPropertyNode_; if (getOwnPropertyNode__ != null) { ListSizeNode listSize__ = this.getJSObject_listSize_; if (listSize__ != null) { ListGetNode listGet__ = this.getJSObject_listGet_; if (listGet__ != null) { JSClassProfile classProfile__ = this.getJSObject_classProfile_; if (classProfile__ != null) { return getJSObject(arguments0Value__, fromPropertyDescriptorNode_, putPropDescNode_, getOwnPropertyNode__, listSize__, listGet__, classProfile__); } } } } } } } } if ((state_0 & 0b1110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */) { GetForeignObject0Data s1_ = this.getForeignObject0_cache; while (s1_ != null) { { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { DynamicObjectLibrary putPropDescNode_1 = this.putPropDescNode; if (putPropDescNode_1 != null) { if ((s1_.interop_.accepts(arguments0Value_)) && (JSGuards.isForeignObject(arguments0Value_))) { Node node__ = (s1_); return getForeignObject(arguments0Value_, node__, fromPropertyDescriptorNode_1, putPropDescNode_1, s1_.interop_, s1_.members_, s1_.toJSType_, s1_.fromJavaString_, INLINED_GET_FOREIGN_OBJECT0_ERROR_BRANCH_); } } } } s1_ = s1_.next_; } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */) { GetForeignObject1Data s2_ = this.getForeignObject1_cache; if (s2_ != null) { { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { DynamicObjectLibrary putPropDescNode_1 = this.putPropDescNode; if (putPropDescNode_1 != null) { if ((JSGuards.isForeignObject(arguments0Value_))) { return this.getForeignObject1Boundary0(state_0, s2_, arguments0Value_, fromPropertyDescriptorNode_1, putPropDescNode_1); } } } } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */) { { ObjectGetOwnPropertyDescriptorsNode recursive__ = this.getDefault_recursive_; if (recursive__ != null) { if ((!(JSGuards.isJSObject(arguments0Value_))) && (!(JSGuards.isForeignObject(arguments0Value_)))) { return getDefault(arguments0Value_, recursive__); } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } @SuppressWarnings("static-method") @TruffleBoundary private Object getForeignObject1Boundary0(int state_0, GetForeignObject1Data s2_, Object arguments0Value_, FromPropertyDescriptorNode fromPropertyDescriptorNode_1, DynamicObjectLibrary putPropDescNode_1) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__ = (s2_); InteropLibrary interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value_)); return getForeignObject(arguments0Value_, node__, fromPropertyDescriptorNode_1, putPropDescNode_1, interop__, s2_.members_, s2_.toJSType_, s2_.fromJavaString_, INLINED_GET_FOREIGN_OBJECT1_ERROR_BRANCH_); } } finally { encapsulating_.set(prev_); } } private JSDynamicObject executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; FromPropertyDescriptorNode fromPropertyDescriptorNode_; FromPropertyDescriptorNode fromPropertyDescriptorNode__shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode__shared != null) { fromPropertyDescriptorNode_ = fromPropertyDescriptorNode__shared; } else { fromPropertyDescriptorNode_ = this.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { VarHandle.storeStoreFence(); this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_; } DynamicObjectLibrary putPropDescNode_; DynamicObjectLibrary putPropDescNode__shared = this.putPropDescNode; if (putPropDescNode__shared != null) { putPropDescNode_ = putPropDescNode__shared; } else { putPropDescNode_ = this.insert((DYNAMIC_OBJECT_LIBRARY_.createDispatched(JSConfig.PropertyCacheLimit))); if (putPropDescNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.putPropDescNode == null) { VarHandle.storeStoreFence(); this.putPropDescNode = putPropDescNode_; } JSGetOwnPropertyNode getOwnPropertyNode__ = this.insert((JSGetOwnPropertyNode.create())); Objects.requireNonNull(getOwnPropertyNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getJSObject_getOwnPropertyNode_ = getOwnPropertyNode__; ListSizeNode listSize__ = this.insert((ListSizeNodeGen.create())); Objects.requireNonNull(listSize__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getJSObject_listSize_ = listSize__; ListGetNode listGet__ = this.insert((ListGetNodeGen.create())); Objects.requireNonNull(listGet__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getJSObject_listGet_ = listGet__; JSClassProfile classProfile__ = (JSClassProfile.create()); Objects.requireNonNull(classProfile__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getJSObject_classProfile_ = classProfile__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getJSObject(JSObject, FromPropertyDescriptorNode, DynamicObjectLibrary, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] */; this.state_0_ = state_0; return getJSObject(arguments0Value_, fromPropertyDescriptorNode_, putPropDescNode_, getOwnPropertyNode__, listSize__, listGet__, classProfile__); } { Node node__ = null; if (((state_0 & 0b100)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */) { while (true) { int count1_ = 0; GetForeignObject0Data s1_ = GET_FOREIGN_OBJECT0_CACHE_UPDATER.getVolatile(this); GetForeignObject0Data s1_original = s1_; while (s1_ != null) { { FromPropertyDescriptorNode fromPropertyDescriptorNode_1 = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1 != null) { DynamicObjectLibrary putPropDescNode_1 = this.putPropDescNode; if (putPropDescNode_1 != null) { if ((s1_.interop_.accepts(arguments0Value)) && (JSGuards.isForeignObject(arguments0Value))) { node__ = (s1_); break; } } } } count1_++; s1_ = s1_.next_; } if (s1_ == null) { if ((JSGuards.isForeignObject(arguments0Value)) && count1_ < (JSConfig.InteropLibraryLimit)) { // assert (s1_.interop_.accepts(arguments0Value)); s1_ = this.insert(new GetForeignObject0Data(s1_original)); node__ = (s1_); FromPropertyDescriptorNode fromPropertyDescriptorNode_1; FromPropertyDescriptorNode fromPropertyDescriptorNode_1_shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1_shared != null) { fromPropertyDescriptorNode_1 = fromPropertyDescriptorNode_1_shared; } else { fromPropertyDescriptorNode_1 = s1_.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_1; } DynamicObjectLibrary putPropDescNode_1; DynamicObjectLibrary putPropDescNode_1_shared = this.putPropDescNode; if (putPropDescNode_1_shared != null) { putPropDescNode_1 = putPropDescNode_1_shared; } else { putPropDescNode_1 = s1_.insert((DYNAMIC_OBJECT_LIBRARY_.createDispatched(JSConfig.PropertyCacheLimit))); if (putPropDescNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.putPropDescNode == null) { this.putPropDescNode = putPropDescNode_1; } InteropLibrary interop__ = s1_.insert((INTEROP_LIBRARY_.create(arguments0Value))); Objects.requireNonNull(interop__, "A specialization cache returned a 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 the default value."); s1_.interop_ = interop__; InteropLibrary members__ = s1_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(members__, "A specialization cache returned a 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 the default value."); s1_.members_ = members__; ImportValueNode toJSType__ = s1_.insert((ImportValueNode.create())); Objects.requireNonNull(toJSType__, "A specialization cache returned a 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 the default value."); s1_.toJSType_ = toJSType__; FromJavaStringNode fromJavaString__ = s1_.insert((FromJavaStringNode.create())); Objects.requireNonNull(fromJavaString__, "A specialization cache returned a 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 the default value."); s1_.fromJavaString_ = fromJavaString__; if (!GET_FOREIGN_OBJECT0_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */; this.state_0_ = state_0; } } if (s1_ != null) { return getForeignObject(arguments0Value, node__, this.fromPropertyDescriptorNode, this.putPropDescNode, s1_.interop_, s1_.members_, s1_.toJSType_, s1_.fromJavaString_, INLINED_GET_FOREIGN_OBJECT0_ERROR_BRANCH_); } break; } } } { InteropLibrary interop__ = null; Node node__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { if ((JSGuards.isForeignObject(arguments0Value))) { GetForeignObject1Data s2_ = this.insert(new GetForeignObject1Data()); node__ = (s2_); FromPropertyDescriptorNode fromPropertyDescriptorNode_1; FromPropertyDescriptorNode fromPropertyDescriptorNode_1_shared = this.fromPropertyDescriptorNode; if (fromPropertyDescriptorNode_1_shared != null) { fromPropertyDescriptorNode_1 = fromPropertyDescriptorNode_1_shared; } else { fromPropertyDescriptorNode_1 = s2_.insert((FromPropertyDescriptorNodeGen.create())); if (fromPropertyDescriptorNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.fromPropertyDescriptorNode == null) { this.fromPropertyDescriptorNode = fromPropertyDescriptorNode_1; } DynamicObjectLibrary putPropDescNode_1; DynamicObjectLibrary putPropDescNode_1_shared = this.putPropDescNode; if (putPropDescNode_1_shared != null) { putPropDescNode_1 = putPropDescNode_1_shared; } else { putPropDescNode_1 = s2_.insert((DYNAMIC_OBJECT_LIBRARY_.createDispatched(JSConfig.PropertyCacheLimit))); if (putPropDescNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.putPropDescNode == null) { this.putPropDescNode = putPropDescNode_1; } interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value)); InteropLibrary members__ = s2_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(members__, "A specialization cache returned a 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 the default value."); s2_.members_ = members__; ImportValueNode toJSType__ = s2_.insert((ImportValueNode.create())); Objects.requireNonNull(toJSType__, "A specialization cache returned a 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 the default value."); s2_.toJSType_ = toJSType__; FromJavaStringNode fromJavaString__ = s2_.insert((FromJavaStringNode.create())); Objects.requireNonNull(fromJavaString__, "A specialization cache returned a 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 the default value."); s2_.fromJavaString_ = fromJavaString__; VarHandle.storeStoreFence(); this.getForeignObject1_cache = s2_; this.getForeignObject0_cache = null; state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getForeignObject(Object, Node, FromPropertyDescriptorNode, DynamicObjectLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return getForeignObject(arguments0Value, node__, fromPropertyDescriptorNode_1, putPropDescNode_1, interop__, members__, toJSType__, fromJavaString__, INLINED_GET_FOREIGN_OBJECT1_ERROR_BRANCH_); } } finally { encapsulating_.set(prev_); } } } if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { ObjectGetOwnPropertyDescriptorsNode recursive__ = this.insert((createRecursive())); Objects.requireNonNull(recursive__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getDefault_recursive_ = recursive__; state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyDescriptorsNode.getDefault(Object, ObjectGetOwnPropertyDescriptorsNode)] */; this.state_0_ = state_0; return getDefault(arguments0Value, recursive__); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectGetOwnPropertyDescriptorsNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectGetOwnPropertyDescriptorsNodeGen(context, builtin, arguments); } @GeneratedBy(ObjectGetOwnPropertyDescriptorsNode.class) @DenyReplace private static final class GetForeignObject0Data extends Node implements SpecializationDataNode { @Child GetForeignObject0Data next_; /** * State Info:
             *   0: InlinedCache
             *        Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *        Parameter: {@link InlinedBranchProfile} errorBranch
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int getForeignObject0_state_0_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link InteropLibrary} interop
*/ @Child InteropLibrary interop_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link InteropLibrary} members
*/ @Child InteropLibrary members_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link ImportValueNode} toJSType
*/ @Child ImportValueNode toJSType_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link FromJavaStringNode} fromJavaString
*/ @Child FromJavaStringNode fromJavaString_; GetForeignObject0Data(GetForeignObject0Data next_) { this.next_ = next_; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(ObjectGetOwnPropertyDescriptorsNode.class) @DenyReplace private static final class GetForeignObject1Data extends Node implements SpecializationDataNode { /** * State Info:
             *   0: InlinedCache
             *        Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *        Parameter: {@link InlinedBranchProfile} errorBranch
             *        Inline method: {@link InlinedBranchProfile#inline}
             * 
*/ @CompilationFinal @UnsafeAccessedField private int getForeignObject1_state_0_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link InteropLibrary} members
*/ @Child InteropLibrary members_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link ImportValueNode} toJSType
*/ @Child ImportValueNode toJSType_; /** * Source Info:
             *   Specialization: {@link ObjectGetOwnPropertyDescriptorsNode#getForeignObject}
             *   Parameter: {@link FromJavaStringNode} fromJavaString
*/ @Child FromJavaStringNode fromJavaString_; GetForeignObject1Data() { } private static Lookup lookup_() { return MethodHandles.lookup(); } } } /** * Debug Info:
     *   Specialization {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getJSObject}
     *     Activation probability: 0.38500
     *     With/without class size: 8/0 bytes
     *   Specialization {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getDefault}
     *     Activation probability: 0.29500
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectSymbols}
     *     Activation probability: 0.20500
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectNames}
     *     Activation probability: 0.11500
     *     With/without class size: 6/5 bytes
     * 
*/ @GeneratedBy(ObjectGetOwnPropertyNamesOrSymbolsNode.class) @SuppressWarnings("javadoc") public static final class ObjectGetOwnPropertyNamesOrSymbolsNodeGen extends ObjectGetOwnPropertyNamesOrSymbolsNode { private static final StateField STATE_0_ObjectGetOwnPropertyNamesOrSymbolsNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectNames}
         *   Parameter: {@link InlinedConditionProfile} hasElements
         *   Inline method: {@link InlinedConditionProfile#inline}
*/ private static final InlinedConditionProfile INLINED_GET_FOREIGN_OBJECT_NAMES_HAS_ELEMENTS_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, STATE_0_ObjectGetOwnPropertyNamesOrSymbolsNode_UPDATER.subUpdater(4, 2))); @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getJSObject}
         *   1: SpecializationActive {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getDefault}
         *   2: SpecializationActive {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectSymbols}
         *   3: SpecializationActive {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectNames}
         *   4-5: InlinedCache
         *        Specialization: {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectNames}
         *        Parameter: {@link InlinedConditionProfile} hasElements
         *        Inline method: {@link InlinedConditionProfile#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getJSObject}
         *   Parameter: {@link JSClassProfile} jsclassProfile
*/ @CompilationFinal private JSClassProfile jsclassProfile; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getJSObject}
         *   Parameter: {@link ListSizeNode} listSize
*/ @Child private ListSizeNode listSize; /** * Source Info:
         *   Specialization: {@link ObjectGetOwnPropertyNamesOrSymbolsNode#getForeignObjectNames}
         *   Parameter: {@link EnumerableOwnPropertyNamesNode} enumerableOwnPropertyNamesNode
*/ @Child private EnumerableOwnPropertyNamesNode getForeignObjectNames_enumerableOwnPropertyNamesNode_; private ObjectGetOwnPropertyNamesOrSymbolsNodeGen(JSContext context, JSBuiltin builtin, boolean symbols, JavaScriptNode[] arguments) { super(context, builtin, symbols); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if ((state_0 & 0b1111) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getJSObject(JSDynamicObject, JSClassProfile, ListSizeNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getDefault(Object, JSClassProfile, ListSizeNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectSymbols(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectNames(Object, EnumerableOwnPropertyNamesNode, InlinedConditionProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getJSObject(JSDynamicObject, JSClassProfile, ListSizeNode)] */ && arguments0Value_ instanceof JSDynamicObject) { JSDynamicObject arguments0Value__ = (JSDynamicObject) arguments0Value_; { JSClassProfile jsclassProfile_ = this.jsclassProfile; if (jsclassProfile_ != null) { ListSizeNode listSize_ = this.listSize; if (listSize_ != null) { if ((JSGuards.isJSObject(arguments0Value__))) { return getJSObject(arguments0Value__, jsclassProfile_, listSize_); } } } } } if ((state_0 & 0b1110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getDefault(Object, JSClassProfile, ListSizeNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectSymbols(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectNames(Object, EnumerableOwnPropertyNamesNode, InlinedConditionProfile)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getDefault(Object, JSClassProfile, ListSizeNode)] */) { { JSClassProfile jsclassProfile_1 = this.jsclassProfile; if (jsclassProfile_1 != null) { ListSizeNode listSize_1 = this.listSize; if (listSize_1 != null) { if ((!(JSGuards.isJSObject(arguments0Value_))) && (!(JSGuards.isForeignObject(arguments0Value_)))) { return getDefault(arguments0Value_, jsclassProfile_1, listSize_1); } } } } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectSymbols(Object)] */) { if ((JSGuards.isForeignObject(arguments0Value_))) { assert DSLSupport.assertIdempotence((symbols)); return getForeignObjectSymbols(arguments0Value_); } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectNames(Object, EnumerableOwnPropertyNamesNode, InlinedConditionProfile)] */) { { EnumerableOwnPropertyNamesNode enumerableOwnPropertyNamesNode__ = this.getForeignObjectNames_enumerableOwnPropertyNamesNode_; if (enumerableOwnPropertyNamesNode__ != null) { if ((JSGuards.isForeignObject(arguments0Value_))) { assert DSLSupport.assertIdempotence((!(symbols))); return getForeignObjectNames(arguments0Value_, enumerableOwnPropertyNamesNode__, INLINED_GET_FOREIGN_OBJECT_NAMES_HAS_ELEMENTS_); } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private JSDynamicObject executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSDynamicObject) { JSDynamicObject arguments0Value_ = (JSDynamicObject) arguments0Value; if ((JSGuards.isJSObject(arguments0Value_))) { JSClassProfile jsclassProfile_; JSClassProfile jsclassProfile__shared = this.jsclassProfile; if (jsclassProfile__shared != null) { jsclassProfile_ = jsclassProfile__shared; } else { jsclassProfile_ = (JSClassProfile.create()); if (jsclassProfile_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.jsclassProfile == null) { VarHandle.storeStoreFence(); this.jsclassProfile = jsclassProfile_; } ListSizeNode listSize_; ListSizeNode listSize__shared = this.listSize; if (listSize__shared != null) { listSize_ = listSize__shared; } else { listSize_ = this.insert((ListSizeNodeGen.create())); if (listSize_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.listSize == null) { VarHandle.storeStoreFence(); this.listSize = listSize_; } state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getJSObject(JSDynamicObject, JSClassProfile, ListSizeNode)] */; this.state_0_ = state_0; return getJSObject(arguments0Value_, jsclassProfile_, listSize_); } } if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { JSClassProfile jsclassProfile_1; JSClassProfile jsclassProfile_1_shared = this.jsclassProfile; if (jsclassProfile_1_shared != null) { jsclassProfile_1 = jsclassProfile_1_shared; } else { jsclassProfile_1 = (JSClassProfile.create()); if (jsclassProfile_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.jsclassProfile == null) { VarHandle.storeStoreFence(); this.jsclassProfile = jsclassProfile_1; } ListSizeNode listSize_1; ListSizeNode listSize_1_shared = this.listSize; if (listSize_1_shared != null) { listSize_1 = listSize_1_shared; } else { listSize_1 = this.insert((ListSizeNodeGen.create())); if (listSize_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.listSize == null) { VarHandle.storeStoreFence(); this.listSize = listSize_1; } state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getDefault(Object, JSClassProfile, ListSizeNode)] */; this.state_0_ = state_0; return getDefault(arguments0Value, jsclassProfile_1, listSize_1); } if ((JSGuards.isForeignObject(arguments0Value)) && (symbols)) { state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectSymbols(Object)] */; this.state_0_ = state_0; return getForeignObjectSymbols(arguments0Value); } if ((JSGuards.isForeignObject(arguments0Value)) && (!(symbols))) { EnumerableOwnPropertyNamesNode enumerableOwnPropertyNamesNode__ = this.insert((EnumerableOwnPropertyNamesNode.createKeys(getContext()))); Objects.requireNonNull(enumerableOwnPropertyNamesNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.getForeignObjectNames_enumerableOwnPropertyNamesNode_ = enumerableOwnPropertyNamesNode__; state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGetOwnPropertyNamesOrSymbolsNode.getForeignObjectNames(Object, EnumerableOwnPropertyNamesNode, InlinedConditionProfile)] */; this.state_0_ = state_0; return getForeignObjectNames(arguments0Value, enumerableOwnPropertyNamesNode__, INLINED_GET_FOREIGN_OBJECT_NAMES_HAS_ELEMENTS_); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectGetOwnPropertyNamesOrSymbolsNode create(JSContext context, JSBuiltin builtin, boolean symbols, JavaScriptNode[] arguments) { return new ObjectGetOwnPropertyNamesOrSymbolsNodeGen(context, builtin, symbols, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectCreateNode#createPrototypeNull}
     *     Activation probability: 0.27381
     *     With/without class size: 8/0 bytes
     *   Specialization {@link ObjectCreateNode#createForeignNullOrInvalidPrototype}
     *     Activation probability: 0.23095
     *     With/without class size: 9/4 bytes
     *   Specialization {@link ObjectCreateNode#createForeignNullOrInvalidPrototype}
     *     Activation probability: 0.18810
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectCreateNode#createObjectObject}
     *     Activation probability: 0.14524
     *     With/without class size: 5/0 bytes
     *   Specialization {@link ObjectCreateNode#createObjectNotNull}
     *     Activation probability: 0.10238
     *     With/without class size: 5/0 bytes
     *   Specialization {@link ObjectCreateNode#createObjectNull}
     *     Activation probability: 0.05952
     *     With/without class size: 4/0 bytes
     * 
*/ @GeneratedBy(ObjectCreateNode.class) @SuppressWarnings("javadoc") public static final class ObjectCreateNodeGen extends ObjectCreateNode { private static final StateField STATE_0_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField CREATE_FOREIGN_NULL_OR_INVALID_PROTOTYPE0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "createForeignNullOrInvalidPrototype0_cache", CreateForeignNullOrInvalidPrototype0Data.class); /** * Source Info:
         *   Specialization: {@link ObjectCreateNode#createPrototypeNull}
         *   Parameter: {@link InlinedBranchProfile} definePropertiesBranch
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_DEFINE_PROPERTIES_BRANCH = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_UPDATER.subUpdater(6, 1))); /** * Source Info:
         *   Specialization: {@link ObjectCreateNode#createPrototypeNull}
         *   Parameter: {@link InlinedConditionProfile} isNull
         *   Inline method: {@link InlinedConditionProfile#inline}
*/ private static final InlinedConditionProfile INLINED_IS_NULL = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, STATE_0_UPDATER.subUpdater(7, 2))); @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectCreateNode#createPrototypeNull}
         *   1: SpecializationActive {@link ObjectCreateNode#createForeignNullOrInvalidPrototype}
         *   2: SpecializationActive {@link ObjectCreateNode#createForeignNullOrInvalidPrototype}
         *   3: SpecializationActive {@link ObjectCreateNode#createObjectObject}
         *   4: SpecializationActive {@link ObjectCreateNode#createObjectNotNull}
         *   5: SpecializationActive {@link ObjectCreateNode#createObjectNull}
         *   6: InlinedCache
         *        Specialization: {@link ObjectCreateNode#createPrototypeNull}
         *        Parameter: {@link InlinedBranchProfile} definePropertiesBranch
         *        Inline method: {@link InlinedBranchProfile#inline}
         *   7-8: InlinedCache
         *        Specialization: {@link ObjectCreateNode#createPrototypeNull}
         *        Parameter: {@link InlinedConditionProfile} isNull
         *        Inline method: {@link InlinedConditionProfile#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; @UnsafeAccessedField @Child private CreateForeignNullOrInvalidPrototype0Data createForeignNullOrInvalidPrototype0_cache; private ObjectCreateNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @ExplodeLoop @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if ((state_0 & 0b111111) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createPrototypeNull(Object, Object, Node, InlinedBranchProfile, InlinedConditionProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectObject(JSObject, JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNotNull(JSObject, Object, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNull(JSObject, Object)] */) { if ((state_0 & 0b111) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createPrototypeNull(Object, Object, Node, InlinedBranchProfile, InlinedConditionProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createPrototypeNull(Object, Object, Node, InlinedBranchProfile, InlinedConditionProfile)] */) { if ((JSGuards.isJSNull(arguments0Value_))) { Node node__ = (this); return createPrototypeNull(arguments0Value_, arguments1Value_, node__, INLINED_DEFINE_PROPERTIES_BRANCH, INLINED_IS_NULL); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */) { CreateForeignNullOrInvalidPrototype0Data s1_ = this.createForeignNullOrInvalidPrototype0_cache; while (s1_ != null) { if ((s1_.interop_.accepts(arguments0Value_)) && (!(JSGuards.isJSNull(arguments0Value_))) && (!(JSGuards.isJSObject(arguments0Value_)))) { Node node__1 = (this); return createForeignNullOrInvalidPrototype(arguments0Value_, arguments1Value_, node__1, INLINED_DEFINE_PROPERTIES_BRANCH, s1_.interop_, INLINED_IS_NULL); } s1_ = s1_.next_; } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */) { if ((!(JSGuards.isJSNull(arguments0Value_))) && (!(JSGuards.isJSObject(arguments0Value_)))) { return this.createForeignNullOrInvalidPrototype1Boundary(state_0, arguments0Value_, arguments1Value_); } } } if ((state_0 & 0b111000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectObject(JSObject, JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNotNull(JSObject, Object, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNull(JSObject, Object)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectObject(JSObject, JSObject)] */ && arguments1Value_ instanceof JSObject) { JSObject arguments1Value__ = (JSObject) arguments1Value_; return createObjectObject(arguments0Value__, arguments1Value__); } if ((state_0 & 0b110000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNotNull(JSObject, Object, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNull(JSObject, Object)] */) { if ((state_0 & 0b10000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNotNull(JSObject, Object, InlinedBranchProfile)] */) { if ((!(JSGuards.isJSNull(arguments1Value_)))) { return createObjectNotNull(arguments0Value__, arguments1Value_, INLINED_DEFINE_PROPERTIES_BRANCH); } } if ((state_0 & 0b100000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNull(JSObject, Object)] */) { if ((JSGuards.isJSNull(arguments1Value_))) { return createObjectNull(arguments0Value__, arguments1Value_); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } @SuppressWarnings("static-method") @TruffleBoundary private Object createForeignNullOrInvalidPrototype1Boundary(int state_0, Object arguments0Value_, Object arguments1Value_) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { Node node__1 = (this); InteropLibrary interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value_)); return createForeignNullOrInvalidPrototype(arguments0Value_, arguments1Value_, node__1, INLINED_DEFINE_PROPERTIES_BRANCH, interop__, INLINED_IS_NULL); } } finally { encapsulating_.set(prev_); } } private JSDynamicObject executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; { Node node__ = null; if ((JSGuards.isJSNull(arguments0Value))) { node__ = (this); state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createPrototypeNull(Object, Object, Node, InlinedBranchProfile, InlinedConditionProfile)] */; this.state_0_ = state_0; return createPrototypeNull(arguments0Value, arguments1Value, node__, INLINED_DEFINE_PROPERTIES_BRANCH, INLINED_IS_NULL); } } { Node node__1 = null; if (((state_0 & 0b100)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */) { while (true) { int count1_ = 0; CreateForeignNullOrInvalidPrototype0Data s1_ = CREATE_FOREIGN_NULL_OR_INVALID_PROTOTYPE0_CACHE_UPDATER.getVolatile(this); CreateForeignNullOrInvalidPrototype0Data s1_original = s1_; while (s1_ != null) { if ((s1_.interop_.accepts(arguments0Value)) && (!(JSGuards.isJSNull(arguments0Value))) && (!(JSGuards.isJSObject(arguments0Value)))) { node__1 = (this); break; } count1_++; s1_ = s1_.next_; } if (s1_ == null) { if ((!(JSGuards.isJSNull(arguments0Value))) && (!(JSGuards.isJSObject(arguments0Value))) && count1_ < (JSConfig.InteropLibraryLimit)) { // assert (s1_.interop_.accepts(arguments0Value)); s1_ = this.insert(new CreateForeignNullOrInvalidPrototype0Data(s1_original)); node__1 = (this); InteropLibrary interop__ = s1_.insert((INTEROP_LIBRARY_.create(arguments0Value))); Objects.requireNonNull(interop__, "A specialization cache returned a 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 the default value."); s1_.interop_ = interop__; if (!CREATE_FOREIGN_NULL_OR_INVALID_PROTOTYPE0_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */; this.state_0_ = state_0; } } if (s1_ != null) { return createForeignNullOrInvalidPrototype(arguments0Value, arguments1Value, node__1, INLINED_DEFINE_PROPERTIES_BRANCH, s1_.interop_, INLINED_IS_NULL); } break; } } } { InteropLibrary interop__ = null; Node node__1 = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { if ((!(JSGuards.isJSNull(arguments0Value))) && (!(JSGuards.isJSObject(arguments0Value)))) { node__1 = (this); interop__ = (INTEROP_LIBRARY_.getUncached(arguments0Value)); this.createForeignNullOrInvalidPrototype0_cache = null; state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createForeignNullOrInvalidPrototype(Object, Object, Node, InlinedBranchProfile, InteropLibrary, InlinedConditionProfile)] */; this.state_0_ = state_0; return createForeignNullOrInvalidPrototype(arguments0Value, arguments1Value, node__1, INLINED_DEFINE_PROPERTIES_BRANCH, interop__, INLINED_IS_NULL); } } finally { encapsulating_.set(prev_); } } } if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (arguments1Value instanceof JSObject) { JSObject arguments1Value_ = (JSObject) arguments1Value; state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectObject(JSObject, JSObject)] */; this.state_0_ = state_0; return createObjectObject(arguments0Value_, arguments1Value_); } if ((!(JSGuards.isJSNull(arguments1Value)))) { state_0 = state_0 | 0b10000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNotNull(JSObject, Object, InlinedBranchProfile)] */; this.state_0_ = state_0; return createObjectNotNull(arguments0Value_, arguments1Value, INLINED_DEFINE_PROPERTIES_BRANCH); } if ((JSGuards.isJSNull(arguments1Value))) { state_0 = state_0 | 0b100000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectCreateNode.createObjectNull(JSObject, Object)] */; this.state_0_ = state_0; return createObjectNull(arguments0Value_, arguments1Value); } } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_, this.arguments1_}, arguments0Value, arguments1Value); } @NeverDefault public static ObjectCreateNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectCreateNodeGen(context, builtin, arguments); } @GeneratedBy(ObjectCreateNode.class) @DenyReplace private static final class CreateForeignNullOrInvalidPrototype0Data extends Node implements SpecializationDataNode { @Child CreateForeignNullOrInvalidPrototype0Data next_; /** * Source Info:
             *   Specialization: {@link ObjectCreateNode#createForeignNullOrInvalidPrototype}
             *   Parameter: {@link InteropLibrary} interop
*/ @Child InteropLibrary interop_; CreateForeignNullOrInvalidPrototype0Data(CreateForeignNullOrInvalidPrototype0Data next_) { this.next_ = next_; } } } /** * Debug Info:
     *   Specialization {@link ObjectDefinePropertyNode#definePropertyJSObjectTString}
     *     Activation probability: 0.65000
     *     With/without class size: 11/0 bytes
     *   Specialization {@link ObjectDefinePropertyNode#definePropertyGeneric}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(ObjectDefinePropertyNode.class) @SuppressWarnings("javadoc") public static final class ObjectDefinePropertyNodeGen extends ObjectDefinePropertyNode { @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; @Child private JavaScriptNode arguments2_; /** * State Info:
         *   0: SpecializationActive {@link ObjectDefinePropertyNode#definePropertyJSObjectTString}
         *   1: SpecializationActive {@link ObjectDefinePropertyNode#definePropertyGeneric}
         * 
*/ @CompilationFinal private int state_0_; private ObjectDefinePropertyNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; this.arguments2_ = arguments != null && 2 < arguments.length ? arguments[2] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_, this.arguments2_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); Object arguments2Value_ = this.arguments2_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyJSObjectTString(JSObject, TruffleString, Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyGeneric(Object, Object, Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyJSObjectTString(JSObject, TruffleString, Object)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if (arguments1Value_ instanceof TruffleString) { TruffleString arguments1Value__ = (TruffleString) arguments1Value_; return definePropertyJSObjectTString(arguments0Value__, arguments1Value__, arguments2Value_); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyGeneric(Object, Object, Object)] */) { return definePropertyGeneric(arguments0Value_, arguments1Value_, arguments2Value_); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_, arguments2Value_); } private JSObject executeAndSpecialize(Object arguments0Value, Object arguments1Value, Object arguments2Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyGeneric(Object, Object, Object)] */ && arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (arguments1Value instanceof TruffleString) { TruffleString arguments1Value_ = (TruffleString) arguments1Value; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyJSObjectTString(JSObject, TruffleString, Object)] */; this.state_0_ = state_0; return definePropertyJSObjectTString(arguments0Value_, arguments1Value_, arguments2Value); } } state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyJSObjectTString(JSObject, TruffleString, Object)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertyNode.definePropertyGeneric(Object, Object, Object)] */; this.state_0_ = state_0; return definePropertyGeneric(arguments0Value, arguments1Value, arguments2Value); } @NeverDefault public static ObjectDefinePropertyNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectDefinePropertyNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectDefinePropertiesNode#definePropertiesObjectObject}
     *     Activation probability: 0.65000
     *     With/without class size: 11/0 bytes
     *   Specialization {@link ObjectDefinePropertiesNode#definePropertiesGeneric}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(ObjectDefinePropertiesNode.class) @SuppressWarnings("javadoc") public static final class ObjectDefinePropertiesNodeGen extends ObjectDefinePropertiesNode { @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectDefinePropertiesNode#definePropertiesObjectObject}
         *   1: SpecializationActive {@link ObjectDefinePropertiesNode#definePropertiesGeneric}
         * 
*/ @CompilationFinal private int state_0_; private ObjectDefinePropertiesNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesObjectObject(JSObject, JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesGeneric(Object, Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesObjectObject(JSObject, JSObject)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if (arguments1Value_ instanceof JSObject) { JSObject arguments1Value__ = (JSObject) arguments1Value_; return definePropertiesObjectObject(arguments0Value__, arguments1Value__); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesGeneric(Object, Object)] */) { return definePropertiesGeneric(arguments0Value_, arguments1Value_); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } private JSObject executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesGeneric(Object, Object)] */ && arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (arguments1Value instanceof JSObject) { JSObject arguments1Value_ = (JSObject) arguments1Value; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesObjectObject(JSObject, JSObject)] */; this.state_0_ = state_0; return definePropertiesObjectObject(arguments0Value_, arguments1Value_); } } state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesObjectObject(JSObject, JSObject)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectDefinePropertiesNode.definePropertiesGeneric(Object, Object)] */; this.state_0_ = state_0; return definePropertiesGeneric(arguments0Value, arguments1Value); } @NeverDefault public static ObjectDefinePropertiesNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectDefinePropertiesNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectIsExtensibleNode#isExtensibleObject}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link ObjectIsExtensibleNode#isExtensibleNonObject}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(ObjectIsExtensibleNode.class) @SuppressWarnings("javadoc") public static final class ObjectIsExtensibleNodeGen extends ObjectIsExtensibleNode { @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectIsExtensibleNode#isExtensibleObject}
         *   1: SpecializationActive {@link ObjectIsExtensibleNode#isExtensibleNonObject}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectIsExtensibleNode#isExtensibleObject}
         *   Parameter: {@link IsExtensibleNode} isExtensibleNode
*/ @Child private IsExtensibleNode isExtensibleObject_isExtensibleNode_; private ObjectIsExtensibleNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsExtensibleNode.isExtensibleObject(JSObject, IsExtensibleNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectIsExtensibleNode.isExtensibleNonObject(Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsExtensibleNode.isExtensibleObject(JSObject, IsExtensibleNode)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; { IsExtensibleNode isExtensibleNode__ = this.isExtensibleObject_isExtensibleNode_; if (isExtensibleNode__ != null) { return isExtensibleObject(arguments0Value__, isExtensibleNode__); } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsExtensibleNode.isExtensibleNonObject(Object)] */) { if ((!(JSGuards.isJSObject(arguments0Value_)))) { return isExtensibleNonObject(arguments0Value_); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private boolean executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; IsExtensibleNode isExtensibleNode__ = this.insert((IsExtensibleNode.create())); Objects.requireNonNull(isExtensibleNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.isExtensibleObject_isExtensibleNode_ = isExtensibleNode__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectIsExtensibleNode.isExtensibleObject(JSObject, IsExtensibleNode)] */; this.state_0_ = state_0; return isExtensibleObject(arguments0Value_, isExtensibleNode__); } if ((!(JSGuards.isJSObject(arguments0Value)))) { state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectIsExtensibleNode.isExtensibleNonObject(Object)] */; this.state_0_ = state_0; return isExtensibleNonObject(arguments0Value); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectIsExtensibleNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectIsExtensibleNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectPreventExtensionsNode#preventExtensionsObject}
     *     Activation probability: 0.65000
     *     With/without class size: 11/0 bytes
     *   Specialization {@link ObjectPreventExtensionsNode#preventExtensionsNonObject}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(ObjectPreventExtensionsNode.class) @SuppressWarnings("javadoc") public static final class ObjectPreventExtensionsNodeGen extends ObjectPreventExtensionsNode { @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectPreventExtensionsNode#preventExtensionsObject}
         *   1: SpecializationActive {@link ObjectPreventExtensionsNode#preventExtensionsNonObject}
         * 
*/ @CompilationFinal private int state_0_; private ObjectPreventExtensionsNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectPreventExtensionsNode.preventExtensionsObject(JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectPreventExtensionsNode.preventExtensionsNonObject(Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectPreventExtensionsNode.preventExtensionsObject(JSObject)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; return ObjectPreventExtensionsNode.preventExtensionsObject(arguments0Value__); } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectPreventExtensionsNode.preventExtensionsNonObject(Object)] */) { if ((!(JSGuards.isJSObject(arguments0Value_)))) { return preventExtensionsNonObject(arguments0Value_); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private Object executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectPreventExtensionsNode.preventExtensionsObject(JSObject)] */; this.state_0_ = state_0; return ObjectPreventExtensionsNode.preventExtensionsObject(arguments0Value_); } if ((!(JSGuards.isJSObject(arguments0Value)))) { state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectPreventExtensionsNode.preventExtensionsNonObject(Object)] */; this.state_0_ = state_0; return preventExtensionsNonObject(arguments0Value); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectPreventExtensionsNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectPreventExtensionsNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectTestIntegrityLevelNode#doJSObjectFast}
     *     Activation probability: 0.27381
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectTestIntegrityLevelNode#doJSArray}
     *     Activation probability: 0.23095
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectTestIntegrityLevelNode#doJSTypedArray}
     *     Activation probability: 0.18810
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectTestIntegrityLevelNode#doJSObjectCached}
     *     Activation probability: 0.14524
     *     With/without class size: 6/4 bytes
     *   Specialization {@link ObjectTestIntegrityLevelNode#doJSObject}
     *     Activation probability: 0.10238
     *     With/without class size: 5/0 bytes
     *   Specialization {@link ObjectTestIntegrityLevelNode#doNotJSObject}
     *     Activation probability: 0.05952
     *     With/without class size: 4/0 bytes
     * 
*/ @GeneratedBy(ObjectTestIntegrityLevelNode.class) @SuppressWarnings("javadoc") public static final class ObjectTestIntegrityLevelNodeGen extends ObjectTestIntegrityLevelNode { static final ReferenceField J_S_OBJECT_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "jSObjectCached_cache", JSObjectCachedData.class); @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectTestIntegrityLevelNode#doJSObjectFast}
         *   1: SpecializationActive {@link ObjectTestIntegrityLevelNode#doJSArray}
         *   2: SpecializationActive {@link ObjectTestIntegrityLevelNode#doJSTypedArray}
         *   3: SpecializationActive {@link ObjectTestIntegrityLevelNode#doJSObjectCached}
         *   4: SpecializationActive {@link ObjectTestIntegrityLevelNode#doJSObject}
         *   5: SpecializationActive {@link ObjectTestIntegrityLevelNode#doNotJSObject}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @CompilationFinal private JSObjectCachedData jSObjectCached_cache; private ObjectTestIntegrityLevelNodeGen(JSContext context, JSBuiltin builtin, boolean frozen, JavaScriptNode[] arguments) { super(context, builtin, frozen); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @ExplodeLoop @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectFast(JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSArray(JSArrayObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSTypedArray(JSTypedArrayObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectCached(JSObject, Class)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObject(JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doNotJSObject(Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectFast(JSObject)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((JSShape.usesOrdinaryGetOwnProperty(arguments0Value__.getShape()))) { return doJSObjectFast(arguments0Value__); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSArray(JSArrayObject)] */ && arguments0Value_ instanceof JSArrayObject) { JSArrayObject arguments0Value__ = (JSArrayObject) arguments0Value_; return doJSArray(arguments0Value__); } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSTypedArray(JSTypedArrayObject)] */ && arguments0Value_ instanceof JSTypedArrayObject) { JSTypedArrayObject arguments0Value__ = (JSTypedArrayObject) arguments0Value_; return doJSTypedArray(arguments0Value__); } if ((state_0 & 0b11000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectCached(JSObject, Class)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObject(JSObject)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectCached(JSObject, Class)] */) { JSObjectCachedData s3_ = this.jSObjectCached_cache; while (s3_ != null) { if ((CompilerDirectives.isExact(arguments0Value__, s3_.cachedClass_))) { return doJSObjectCached(arguments0Value__, s3_.cachedClass_); } s3_ = s3_.next_; } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObject(JSObject)] */) { return doJSObject(arguments0Value__); } } if ((state_0 & 0b100000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doNotJSObject(Object)] */) { if ((!(JSGuards.isJSObject(arguments0Value_)))) { return doNotJSObject(arguments0Value_); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private boolean executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if ((JSShape.usesOrdinaryGetOwnProperty(arguments0Value_.getShape()))) { state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectFast(JSObject)] */; this.state_0_ = state_0; return doJSObjectFast(arguments0Value_); } } if (arguments0Value instanceof JSArrayObject) { JSArrayObject arguments0Value_ = (JSArrayObject) arguments0Value; state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSArray(JSArrayObject)] */; this.state_0_ = state_0; return doJSArray(arguments0Value_); } if (arguments0Value instanceof JSTypedArrayObject) { JSTypedArrayObject arguments0Value_ = (JSTypedArrayObject) arguments0Value; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSTypedArray(JSTypedArrayObject)] */; this.state_0_ = state_0; return doJSTypedArray(arguments0Value_); } if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (((state_0 & 0b10000)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObject(JSObject)] */) { while (true) { int count3_ = 0; JSObjectCachedData s3_ = J_S_OBJECT_CACHED_CACHE_UPDATER.getVolatile(this); JSObjectCachedData s3_original = s3_; while (s3_ != null) { if ((CompilerDirectives.isExact(arguments0Value_, s3_.cachedClass_))) { break; } count3_++; s3_ = s3_.next_; } if (s3_ == null) { { Class cachedClass__ = (arguments0Value_.getClass()); if ((CompilerDirectives.isExact(arguments0Value_, cachedClass__)) && count3_ < (5)) { s3_ = new JSObjectCachedData(s3_original); s3_.cachedClass_ = cachedClass__; if (!J_S_OBJECT_CACHED_CACHE_UPDATER.compareAndSet(this, s3_original, s3_)) { continue; } state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectCached(JSObject, Class)] */; this.state_0_ = state_0; } } } if (s3_ != null) { return doJSObjectCached(arguments0Value_, s3_.cachedClass_); } break; } } this.jSObjectCached_cache = null; state_0 = state_0 & 0xfffffff7 /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectCached(JSObject, Class)] */; state_0 = state_0 | 0b10000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObject(JSObject)] */; this.state_0_ = state_0; return doJSObject(arguments0Value_); } if ((!(JSGuards.isJSObject(arguments0Value)))) { state_0 = state_0 | 0b100000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doNotJSObject(Object)] */; this.state_0_ = state_0; return doNotJSObject(arguments0Value); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectTestIntegrityLevelNode create(JSContext context, JSBuiltin builtin, boolean frozen, JavaScriptNode[] arguments) { return new ObjectTestIntegrityLevelNodeGen(context, builtin, frozen, arguments); } @GeneratedBy(ObjectTestIntegrityLevelNode.class) @DenyReplace private static final class JSObjectCachedData implements SpecializationDataNode { @CompilationFinal final JSObjectCachedData next_; /** * Source Info:
             *   Specialization: {@link ObjectTestIntegrityLevelNode#doJSObjectCached}
             *   Parameter: {@link Class} cachedClass
*/ @CompilationFinal Class cachedClass_; JSObjectCachedData(JSObjectCachedData next_) { this.next_ = next_; } } } /** * Debug Info:
     *   Specialization {@link ObjectSetIntegrityLevelNode#doJSObjectFast}
     *     Activation probability: 0.27381
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectSetIntegrityLevelNode#doJSArray}
     *     Activation probability: 0.23095
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectSetIntegrityLevelNode#doJSTypedArray}
     *     Activation probability: 0.18810
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectSetIntegrityLevelNode#doJSObjectCached}
     *     Activation probability: 0.14524
     *     With/without class size: 6/4 bytes
     *   Specialization {@link ObjectSetIntegrityLevelNode#doJSObject}
     *     Activation probability: 0.10238
     *     With/without class size: 5/0 bytes
     *   Specialization {@link ObjectSetIntegrityLevelNode#doNotJSObject}
     *     Activation probability: 0.05952
     *     With/without class size: 4/0 bytes
     * 
*/ @GeneratedBy(ObjectSetIntegrityLevelNode.class) @SuppressWarnings("javadoc") public static final class ObjectSetIntegrityLevelNodeGen extends ObjectSetIntegrityLevelNode { static final ReferenceField J_S_OBJECT_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "jSObjectCached_cache", JSObjectCachedData.class); @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectSetIntegrityLevelNode#doJSObjectFast}
         *   1: SpecializationActive {@link ObjectSetIntegrityLevelNode#doJSArray}
         *   2: SpecializationActive {@link ObjectSetIntegrityLevelNode#doJSTypedArray}
         *   3: SpecializationActive {@link ObjectSetIntegrityLevelNode#doJSObjectCached}
         *   4: SpecializationActive {@link ObjectSetIntegrityLevelNode#doJSObject}
         *   5: SpecializationActive {@link ObjectSetIntegrityLevelNode#doNotJSObject}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @CompilationFinal private JSObjectCachedData jSObjectCached_cache; private ObjectSetIntegrityLevelNodeGen(JSContext context, JSBuiltin builtin, boolean freeze, JavaScriptNode[] arguments) { super(context, builtin, freeze); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @ExplodeLoop @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectFast(JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSArray(JSArrayObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSTypedArray(JSTypedArrayObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectCached(JSObject, Class)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObject(JSObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doNotJSObject(Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectFast(JSObject)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((JSShape.usesOrdinaryGetOwnProperty(arguments0Value__.getShape()))) { return doJSObjectFast(arguments0Value__); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSArray(JSArrayObject)] */ && arguments0Value_ instanceof JSArrayObject) { JSArrayObject arguments0Value__ = (JSArrayObject) arguments0Value_; return doJSArray(arguments0Value__); } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSTypedArray(JSTypedArrayObject)] */ && arguments0Value_ instanceof JSTypedArrayObject) { JSTypedArrayObject arguments0Value__ = (JSTypedArrayObject) arguments0Value_; return doJSTypedArray(arguments0Value__); } if ((state_0 & 0b11000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectCached(JSObject, Class)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObject(JSObject)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectCached(JSObject, Class)] */) { JSObjectCachedData s3_ = this.jSObjectCached_cache; while (s3_ != null) { if ((CompilerDirectives.isExact(arguments0Value__, s3_.cachedClass_))) { return doJSObjectCached(arguments0Value__, s3_.cachedClass_); } s3_ = s3_.next_; } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObject(JSObject)] */) { return doJSObject(arguments0Value__); } } if ((state_0 & 0b100000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doNotJSObject(Object)] */) { if ((!(JSGuards.isJSObject(arguments0Value_)))) { return doNotJSObject(arguments0Value_); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private Object executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if ((JSShape.usesOrdinaryGetOwnProperty(arguments0Value_.getShape()))) { state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectFast(JSObject)] */; this.state_0_ = state_0; return doJSObjectFast(arguments0Value_); } } if (arguments0Value instanceof JSArrayObject) { JSArrayObject arguments0Value_ = (JSArrayObject) arguments0Value; state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSArray(JSArrayObject)] */; this.state_0_ = state_0; return doJSArray(arguments0Value_); } if (arguments0Value instanceof JSTypedArrayObject) { JSTypedArrayObject arguments0Value_ = (JSTypedArrayObject) arguments0Value; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSTypedArray(JSTypedArrayObject)] */; this.state_0_ = state_0; return doJSTypedArray(arguments0Value_); } if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (((state_0 & 0b10000)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObject(JSObject)] */) { while (true) { int count3_ = 0; JSObjectCachedData s3_ = J_S_OBJECT_CACHED_CACHE_UPDATER.getVolatile(this); JSObjectCachedData s3_original = s3_; while (s3_ != null) { if ((CompilerDirectives.isExact(arguments0Value_, s3_.cachedClass_))) { break; } count3_++; s3_ = s3_.next_; } if (s3_ == null) { { Class cachedClass__ = (arguments0Value_.getClass()); if ((CompilerDirectives.isExact(arguments0Value_, cachedClass__)) && count3_ < (5)) { s3_ = new JSObjectCachedData(s3_original); s3_.cachedClass_ = cachedClass__; if (!J_S_OBJECT_CACHED_CACHE_UPDATER.compareAndSet(this, s3_original, s3_)) { continue; } state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectCached(JSObject, Class)] */; this.state_0_ = state_0; } } } if (s3_ != null) { return doJSObjectCached(arguments0Value_, s3_.cachedClass_); } break; } } this.jSObjectCached_cache = null; state_0 = state_0 & 0xfffffff7 /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectCached(JSObject, Class)] */; state_0 = state_0 | 0b10000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObject(JSObject)] */; this.state_0_ = state_0; return doJSObject(arguments0Value_); } if ((!(JSGuards.isJSObject(arguments0Value)))) { state_0 = state_0 | 0b100000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doNotJSObject(Object)] */; this.state_0_ = state_0; return doNotJSObject(arguments0Value); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectSetIntegrityLevelNode create(JSContext context, JSBuiltin builtin, boolean freeze, JavaScriptNode[] arguments) { return new ObjectSetIntegrityLevelNodeGen(context, builtin, freeze, arguments); } @GeneratedBy(ObjectSetIntegrityLevelNode.class) @DenyReplace private static final class JSObjectCachedData implements SpecializationDataNode { @CompilationFinal final JSObjectCachedData next_; /** * Source Info:
             *   Specialization: {@link ObjectSetIntegrityLevelNode#doJSObjectCached}
             *   Parameter: {@link Class} cachedClass
*/ @CompilationFinal Class cachedClass_; JSObjectCachedData(JSObjectCachedData next_) { this.next_ = next_; } } } /** * Debug Info:
     *   Specialization {@link ObjectKeysNode#keysDynamicObject}
     *     Activation probability: 0.23929
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectKeysNode#keysSymbol}
     *     Activation probability: 0.20714
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectKeysNode#keysString}
     *     Activation probability: 0.17500
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectKeysNode#keysSafeInt}
     *     Activation probability: 0.14286
     *     With/without class size: 5/0 bytes
     *   Specialization {@link ObjectKeysNode#keysBigInt}
     *     Activation probability: 0.11071
     *     With/without class size: 5/0 bytes
     *   Specialization {@link ObjectKeysNode#keysOther}
     *     Activation probability: 0.07857
     *     With/without class size: 4/0 bytes
     *   Specialization {@link ObjectKeysNode#keysForeign}
     *     Activation probability: 0.04643
     *     With/without class size: 4/0 bytes
     * 
*/ @GeneratedBy(ObjectKeysNode.class) @SuppressWarnings("javadoc") public static final class ObjectKeysNodeGen extends ObjectKeysNode { @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectKeysNode#keysDynamicObject}
         *   1: SpecializationActive {@link ObjectKeysNode#keysSymbol}
         *   2: SpecializationActive {@link ObjectKeysNode#keysString}
         *   3: SpecializationActive {@link ObjectKeysNode#keysSafeInt}
         *   4: SpecializationActive {@link ObjectKeysNode#keysBigInt}
         *   5: SpecializationActive {@link ObjectKeysNode#keysOther}
         *   6: SpecializationActive {@link ObjectKeysNode#keysForeign}
         * 
*/ @CompilationFinal private int state_0_; private ObjectKeysNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysDynamicObject(JSDynamicObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysSymbol(Symbol)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysString(TruffleString)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysSafeInt(SafeInteger)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysBigInt(BigInt)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysOther(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysForeign(Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysDynamicObject(JSDynamicObject)] */ && arguments0Value_ instanceof JSDynamicObject) { JSDynamicObject arguments0Value__ = (JSDynamicObject) arguments0Value_; if ((JSGuards.isJSDynamicObject(arguments0Value__))) { return keysDynamicObject(arguments0Value__); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysSymbol(Symbol)] */ && arguments0Value_ instanceof Symbol) { Symbol arguments0Value__ = (Symbol) arguments0Value_; return keysSymbol(arguments0Value__); } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysString(TruffleString)] */ && arguments0Value_ instanceof TruffleString) { TruffleString arguments0Value__ = (TruffleString) arguments0Value_; return keysString(arguments0Value__); } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysSafeInt(SafeInteger)] */ && arguments0Value_ instanceof SafeInteger) { SafeInteger arguments0Value__ = (SafeInteger) arguments0Value_; return keysSafeInt(arguments0Value__); } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysBigInt(BigInt)] */ && arguments0Value_ instanceof BigInt) { BigInt arguments0Value__ = (BigInt) arguments0Value_; return keysBigInt(arguments0Value__); } if ((state_0 & 0b1100000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysOther(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysForeign(Object)] */) { if ((state_0 & 0b100000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysOther(Object)] */) { if ((!(JSGuards.isTruffleObject(arguments0Value_)))) { return keysOther(arguments0Value_); } } if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysForeign(Object)] */) { if ((JSGuards.isForeignObject(arguments0Value_))) { return keysForeign(arguments0Value_); } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private JSDynamicObject executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSDynamicObject) { JSDynamicObject arguments0Value_ = (JSDynamicObject) arguments0Value; if ((JSGuards.isJSDynamicObject(arguments0Value_))) { state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysDynamicObject(JSDynamicObject)] */; this.state_0_ = state_0; return keysDynamicObject(arguments0Value_); } } if (arguments0Value instanceof Symbol) { Symbol arguments0Value_ = (Symbol) arguments0Value; state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysSymbol(Symbol)] */; this.state_0_ = state_0; return keysSymbol(arguments0Value_); } if (arguments0Value instanceof TruffleString) { TruffleString arguments0Value_ = (TruffleString) arguments0Value; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysString(TruffleString)] */; this.state_0_ = state_0; return keysString(arguments0Value_); } if (arguments0Value instanceof SafeInteger) { SafeInteger arguments0Value_ = (SafeInteger) arguments0Value; state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysSafeInt(SafeInteger)] */; this.state_0_ = state_0; return keysSafeInt(arguments0Value_); } if (arguments0Value instanceof BigInt) { BigInt arguments0Value_ = (BigInt) arguments0Value; state_0 = state_0 | 0b10000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysBigInt(BigInt)] */; this.state_0_ = state_0; return keysBigInt(arguments0Value_); } if ((!(JSGuards.isTruffleObject(arguments0Value)))) { state_0 = state_0 | 0b100000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysOther(Object)] */; this.state_0_ = state_0; return keysOther(arguments0Value); } if ((JSGuards.isForeignObject(arguments0Value))) { state_0 = state_0 | 0b1000000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectKeysNode.keysForeign(Object)] */; this.state_0_ = state_0; return keysForeign(arguments0Value); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectKeysNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectKeysNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObject}
     *     Activation probability: 0.32000
     *     With/without class size: 10/4 bytes
     *   Specialization {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObjectToInvalidNewProto}
     *     Activation probability: 0.26000
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectSetPrototypeOfNode#setPrototypeOfNonObjectCoercible}
     *     Activation probability: 0.20000
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectSetPrototypeOfNode#setPrototypeOfValue}
     *     Activation probability: 0.14000
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectSetPrototypeOfNode#setPrototypeOfForeignObject}
     *     Activation probability: 0.08000
     *     With/without class size: 4/0 bytes
     * 
*/ @GeneratedBy(ObjectSetPrototypeOfNode.class) @SuppressWarnings("javadoc") public static final class ObjectSetPrototypeOfNodeGen extends ObjectSetPrototypeOfNode { private static final StateField STATE_0_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
         *   Specialization: {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObject}
         *   Parameter: {@link InlinedBranchProfile} errorBranch
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_ERROR_BRANCH = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_UPDATER.subUpdater(5, 1))); @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObject}
         *   1: SpecializationActive {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObjectToInvalidNewProto}
         *   2: SpecializationActive {@link ObjectSetPrototypeOfNode#setPrototypeOfNonObjectCoercible}
         *   3: SpecializationActive {@link ObjectSetPrototypeOfNode#setPrototypeOfValue}
         *   4: SpecializationActive {@link ObjectSetPrototypeOfNode#setPrototypeOfForeignObject}
         *   5: InlinedCache
         *        Specialization: {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObject}
         *        Parameter: {@link InlinedBranchProfile} errorBranch
         *        Inline method: {@link InlinedBranchProfile#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectSetPrototypeOfNode#setPrototypeOfJSObject}
         *   Parameter: {@link JSClassProfile} classProfile
*/ @CompilationFinal private JSClassProfile setPrototypeOfJSObject_classProfile_; private ObjectSetPrototypeOfNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if ((state_0 & 0b11111) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObject(JSObject, JSDynamicObject, InlinedBranchProfile, JSClassProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObjectToInvalidNewProto(JSObject, Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfNonObjectCoercible(Object, Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfValue(Object, Object, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfForeignObject(Object, Object)] */) { if ((state_0 & 0b11) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObject(JSObject, JSDynamicObject, InlinedBranchProfile, JSClassProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObjectToInvalidNewProto(JSObject, Object)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObject(JSObject, JSDynamicObject, InlinedBranchProfile, JSClassProfile)] */ && arguments1Value_ instanceof JSDynamicObject) { JSDynamicObject arguments1Value__ = (JSDynamicObject) arguments1Value_; { JSClassProfile classProfile__ = this.setPrototypeOfJSObject_classProfile_; if (classProfile__ != null) { if ((JSGuards.isValidPrototype(arguments1Value__))) { return setPrototypeOfJSObject(arguments0Value__, arguments1Value__, INLINED_ERROR_BRANCH, classProfile__); } } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObjectToInvalidNewProto(JSObject, Object)] */) { if ((!(JSGuards.isValidPrototype(arguments1Value_)))) { return ObjectSetPrototypeOfNode.setPrototypeOfJSObjectToInvalidNewProto(arguments0Value__, arguments1Value_); } } } if ((state_0 & 0b11100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfNonObjectCoercible(Object, Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfValue(Object, Object, InlinedBranchProfile)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfForeignObject(Object, Object)] */) { if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfNonObjectCoercible(Object, Object)] */) { if ((JSGuards.isNullOrUndefined(arguments0Value_))) { return setPrototypeOfNonObjectCoercible(arguments0Value_, arguments1Value_); } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfValue(Object, Object, InlinedBranchProfile)] */) { if ((!(JSGuards.isJSObject(arguments0Value_))) && (!(JSGuards.isNullOrUndefined(arguments0Value_))) && (!(JSGuards.isForeignObject(arguments0Value_)))) { return setPrototypeOfValue(arguments0Value_, arguments1Value_, INLINED_ERROR_BRANCH); } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfForeignObject(Object, Object)] */) { if ((JSGuards.isForeignObject(arguments0Value_))) { return setPrototypeOfForeignObject(arguments0Value_, arguments1Value_); } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } private Object executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (arguments1Value instanceof JSDynamicObject) { JSDynamicObject arguments1Value_ = (JSDynamicObject) arguments1Value; if ((JSGuards.isValidPrototype(arguments1Value_))) { JSClassProfile classProfile__ = (JSClassProfile.create()); Objects.requireNonNull(classProfile__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.setPrototypeOfJSObject_classProfile_ = classProfile__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObject(JSObject, JSDynamicObject, InlinedBranchProfile, JSClassProfile)] */; this.state_0_ = state_0; return setPrototypeOfJSObject(arguments0Value_, arguments1Value_, INLINED_ERROR_BRANCH, classProfile__); } } if ((!(JSGuards.isValidPrototype(arguments1Value)))) { state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfJSObjectToInvalidNewProto(JSObject, Object)] */; this.state_0_ = state_0; return ObjectSetPrototypeOfNode.setPrototypeOfJSObjectToInvalidNewProto(arguments0Value_, arguments1Value); } } if ((JSGuards.isNullOrUndefined(arguments0Value))) { state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfNonObjectCoercible(Object, Object)] */; this.state_0_ = state_0; return setPrototypeOfNonObjectCoercible(arguments0Value, arguments1Value); } if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isNullOrUndefined(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfValue(Object, Object, InlinedBranchProfile)] */; this.state_0_ = state_0; return setPrototypeOfValue(arguments0Value, arguments1Value, INLINED_ERROR_BRANCH); } if ((JSGuards.isForeignObject(arguments0Value))) { state_0 = state_0 | 0b10000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectSetPrototypeOfNode.setPrototypeOfForeignObject(Object, Object)] */; this.state_0_ = state_0; return setPrototypeOfForeignObject(arguments0Value, arguments1Value); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_, this.arguments1_}, arguments0Value, arguments1Value); } @NeverDefault public static ObjectSetPrototypeOfNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectSetPrototypeOfNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectIsNode#isInt}
     *     Activation probability: 0.38500
     *     With/without class size: 8/0 bytes
     *   Specialization {@link ObjectIsNode#isDouble}
     *     Activation probability: 0.29500
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectIsNode#isNumberNumber(Number, Number, JSIdenticalNode)}
     *     Activation probability: 0.20500
     *     With/without class size: 6/0 bytes
     *   Specialization {@link ObjectIsNode#isObject}
     *     Activation probability: 0.11500
     *     With/without class size: 5/0 bytes
     * 
*/ @GeneratedBy(ObjectIsNode.class) @SuppressWarnings("javadoc") public static final class ObjectIsNodeGen extends ObjectIsNode { @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectIsNode#isInt}
         *   1: SpecializationActive {@link ObjectIsNode#isDouble}
         *   2: SpecializationActive {@link ObjectIsNode#isNumberNumber(Number, Number, JSIdenticalNode)}
         *   3: SpecializationActive {@link ObjectIsNode#isObject}
         *   4-6: ImplicitCast[type=double, index=0]
         *   7-9: ImplicitCast[type=double, index=1]
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectIsNode#isNumberNumber(Number, Number, JSIdenticalNode)}
         *   Parameter: {@link JSIdenticalNode} sameValueNode
*/ @Child private JSIdenticalNode sameValueNode; private ObjectIsNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; if ((state_0 & 0b1110) == 0 /* only-active SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */)) { return execute_int_int0(state_0, frameValue); } else if ((state_0 & 0b1101) == 0 /* only-active SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */)) { return execute_double_double1(state_0, frameValue); } else { return execute_generic2(state_0, frameValue); } } private Object execute_int_int0(int state_0__, VirtualFrame frameValue) { int state_0 = state_0__; int arguments0Value_; try { arguments0Value_ = this.arguments0_.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object arguments1Value = this.arguments1_.execute(frameValue); return executeAndSpecialize(ex.getResult(), arguments1Value); } int arguments1Value_; try { arguments1Value_ = this.arguments1_.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, ex.getResult()); } assert (state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] */; return isInt(arguments0Value_, arguments1Value_); } private Object execute_double_double1(int state_0__, VirtualFrame frameValue) { int state_0 = state_0__; int arguments0Value_int = 0; double arguments0Value_; try { if ((state_0 & 0b1100000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */)) { arguments0Value_ = this.arguments0_.executeDouble(frameValue); } else if ((state_0 & 0b1010000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */)) { arguments0Value_int = this.arguments0_.executeInt(frameValue); arguments0Value_ = JSTypes.intToDouble(arguments0Value_int); } else { Object arguments0Value__ = this.arguments0_.execute(frameValue); arguments0Value_ = JSTypesGen.expectImplicitDouble((state_0 & 0b1110000) >>> 4 /* get-int ImplicitCast[type=double, index=0] */, arguments0Value__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object arguments1Value = this.arguments1_.execute(frameValue); return executeAndSpecialize(ex.getResult(), arguments1Value); } int arguments1Value_int = 0; double arguments1Value_; try { if ((state_0 & 0b1100000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */)) { arguments1Value_ = this.arguments1_.executeDouble(frameValue); } else if ((state_0 & 0b1010000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */)) { arguments1Value_int = this.arguments1_.executeInt(frameValue); arguments1Value_ = JSTypes.intToDouble(arguments1Value_int); } else { Object arguments1Value__ = this.arguments1_.execute(frameValue); arguments1Value_ = JSTypesGen.expectImplicitDouble((state_0 & 0b1110000000) >>> 7 /* get-int ImplicitCast[type=double, index=1] */, arguments1Value__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(((state_0 & 0b1010000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0b1111) != 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] && SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */) ? (Object) arguments0Value_int : (Object) arguments0Value_), ex.getResult()); } assert (state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] */; return isDouble(arguments0Value_, arguments1Value_); } private Object execute_generic2(int state_0__, VirtualFrame frameValue) { int state_0 = state_0__; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if ((state_0 & 0b1111) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] || SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] || SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] || SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] */ && arguments0Value_ instanceof Integer) { int arguments0Value__ = (int) arguments0Value_; if (arguments1Value_ instanceof Integer) { int arguments1Value__ = (int) arguments1Value_; return isInt(arguments0Value__, arguments1Value__); } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] */ && JSTypesGen.isImplicitDouble((state_0 & 0b1110000) >>> 4 /* get-int ImplicitCast[type=double, index=0] */, arguments0Value_)) { double arguments0Value__ = JSTypesGen.asImplicitDouble((state_0 & 0b1110000) >>> 4 /* get-int ImplicitCast[type=double, index=0] */, arguments0Value_); if (JSTypesGen.isImplicitDouble((state_0 & 0b1110000000) >>> 7 /* get-int ImplicitCast[type=double, index=1] */, arguments1Value_)) { double arguments1Value__ = JSTypesGen.asImplicitDouble((state_0 & 0b1110000000) >>> 7 /* get-int ImplicitCast[type=double, index=1] */, arguments1Value_); return isDouble(arguments0Value__, arguments1Value__); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] */ && arguments0Value_ instanceof Number) { Number arguments0Value__ = (Number) arguments0Value_; if (arguments1Value_ instanceof Number) { Number arguments1Value__ = (Number) arguments1Value_; { JSIdenticalNode sameValueNode_ = this.sameValueNode; if (sameValueNode_ != null) { if ((isNumberNumber(arguments0Value__, arguments1Value__))) { return isNumberNumber(arguments0Value__, arguments1Value__, sameValueNode_); } } } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */) { { JSIdenticalNode sameValueNode_1 = this.sameValueNode; if (sameValueNode_1 != null) { if ((!(isNumberNumber(arguments0Value_, arguments1Value_)))) { return isObject(arguments0Value_, arguments1Value_, sameValueNode_1); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } private boolean executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; if (arguments0Value instanceof Integer) { int arguments0Value_ = (int) arguments0Value; if (arguments1Value instanceof Integer) { int arguments1Value_ = (int) arguments1Value; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isInt(int, int)] */; this.state_0_ = state_0; return isInt(arguments0Value_, arguments1Value_); } } { int doubleCast0; if ((doubleCast0 = JSTypesGen.specializeImplicitDouble(arguments0Value)) != 0) { double arguments0Value_ = JSTypesGen.asImplicitDouble(doubleCast0, arguments0Value); int doubleCast1; if ((doubleCast1 = JSTypesGen.specializeImplicitDouble(arguments1Value)) != 0) { double arguments1Value_ = JSTypesGen.asImplicitDouble(doubleCast1, arguments1Value); state_0 = (state_0 | (doubleCast0 << 4) /* set-int ImplicitCast[type=double, index=0] */); state_0 = (state_0 | (doubleCast1 << 7) /* set-int ImplicitCast[type=double, index=1] */); state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isDouble(double, double)] */; this.state_0_ = state_0; return isDouble(arguments0Value_, arguments1Value_); } } } if (arguments0Value instanceof Number) { Number arguments0Value_ = (Number) arguments0Value; if (arguments1Value instanceof Number) { Number arguments1Value_ = (Number) arguments1Value; if ((isNumberNumber(arguments0Value_, arguments1Value_))) { JSIdenticalNode sameValueNode_; JSIdenticalNode sameValueNode__shared = this.sameValueNode; if (sameValueNode__shared != null) { sameValueNode_ = sameValueNode__shared; } else { sameValueNode_ = this.insert((JSIdenticalNode.createSameValue())); if (sameValueNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.sameValueNode == null) { VarHandle.storeStoreFence(); this.sameValueNode = sameValueNode_; } state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isNumberNumber(Number, Number, JSIdenticalNode)] */; this.state_0_ = state_0; return isNumberNumber(arguments0Value_, arguments1Value_, sameValueNode_); } } } if ((!(isNumberNumber(arguments0Value, arguments1Value)))) { JSIdenticalNode sameValueNode_1; JSIdenticalNode sameValueNode_1_shared = this.sameValueNode; if (sameValueNode_1_shared != null) { sameValueNode_1 = sameValueNode_1_shared; } else { sameValueNode_1 = this.insert((JSIdenticalNode.createSameValue())); if (sameValueNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.sameValueNode == null) { VarHandle.storeStoreFence(); this.sameValueNode = sameValueNode_1; } state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectIsNode.isObject(Object, Object, JSIdenticalNode)] */; this.state_0_ = state_0; return isObject(arguments0Value, arguments1Value, sameValueNode_1); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_, this.arguments1_}, arguments0Value, arguments1Value); } @NeverDefault public static ObjectIsNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectIsNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectAssignNode#assign}
     *     Activation probability: 1.00000
     *     With/without class size: 32/12 bytes
     * 
*/ @GeneratedBy(ObjectAssignNode.class) @SuppressWarnings("javadoc") public static final class ObjectAssignNodeGen extends ObjectAssignNode { @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectAssignNode#assign}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectAssignNode#assign}
         *   Parameter: {@link JSToObjectNode} toObjectNode
*/ @Child private JSToObjectNode toObjectNode_; /** * Source Info:
         *   Specialization: {@link ObjectAssignNode#assign}
         *   Parameter: {@link WriteElementNode} write
*/ @Child private WriteElementNode write_; /** * Source Info:
         *   Specialization: {@link ObjectAssignNode#assign}
         *   Parameter: {@link AssignPropertiesNode} assignProperties
*/ @Child private AssignPropertiesNode assignProperties_; private ObjectAssignNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectAssignNode.assign(Object, Object[], JSToObjectNode, WriteElementNode, AssignPropertiesNode)] */ && arguments1Value_ instanceof Object[]) { Object[] arguments1Value__ = (Object[]) arguments1Value_; { JSToObjectNode toObjectNode__ = this.toObjectNode_; if (toObjectNode__ != null) { WriteElementNode write__ = this.write_; if (write__ != null) { AssignPropertiesNode assignProperties__ = this.assignProperties_; if (assignProperties__ != null) { return assign(arguments0Value_, arguments1Value__, toObjectNode__, write__, assignProperties__); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } private Object executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; if (arguments1Value instanceof Object[]) { Object[] arguments1Value_ = (Object[]) arguments1Value; JSToObjectNode toObjectNode__ = this.insert((JSToObjectNode.create())); Objects.requireNonNull(toObjectNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.toObjectNode_ = toObjectNode__; WriteElementNode write__ = this.insert((WriteElementNode.create(getContext(), ObjectAssignNode.STRICT))); Objects.requireNonNull(write__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.write_ = write__; AssignPropertiesNode assignProperties__ = this.insert((AssignPropertiesNodeGen.create(getContext()))); Objects.requireNonNull(assignProperties__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.assignProperties_ = assignProperties__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectAssignNode.assign(Object, Object[], JSToObjectNode, WriteElementNode, AssignPropertiesNode)] */; this.state_0_ = state_0; return assign(arguments0Value, arguments1Value_, toObjectNode__, write__, assignProperties__); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_, this.arguments1_}, arguments0Value, arguments1Value); } @NeverDefault public static ObjectAssignNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectAssignNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link AssignPropertiesNode#copyPropertiesFromJSObject}
     *     Activation probability: 0.48333
     *     With/without class size: 21/20 bytes
     *   Specialization {@link AssignPropertiesNode#doObject}
     *     Activation probability: 0.33333
     *     With/without class size: 17/20 bytes
     *   Specialization {@link AssignPropertiesNode#doObject}
     *     Activation probability: 0.18333
     *     With/without class size: 9/16 bytes
     * 
*/ @GeneratedBy(AssignPropertiesNode.class) @SuppressWarnings("javadoc") static final class AssignPropertiesNodeGen extends AssignPropertiesNode { static final ReferenceField OBJECT0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "object0_cache", Object0Data.class); /** * State Info:
         *   0: SpecializationActive {@link AssignPropertiesNode#copyPropertiesFromJSObject}
         *   1: SpecializationActive {@link AssignPropertiesNode#doObject}
         *   2: SpecializationActive {@link AssignPropertiesNode#doObject}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link AssignPropertiesNode#copyPropertiesFromJSObject}
         *   Parameter: {@link ReadElementNode} read
*/ @Child private ReadElementNode copyPropertiesFromJSObject_read_; /** * Source Info:
         *   Specialization: {@link AssignPropertiesNode#copyPropertiesFromJSObject}
         *   Parameter: {@link JSGetOwnPropertyNode} getOwnProperty
*/ @Child private JSGetOwnPropertyNode copyPropertiesFromJSObject_getOwnProperty_; /** * Source Info:
         *   Specialization: {@link AssignPropertiesNode#copyPropertiesFromJSObject}
         *   Parameter: {@link ListSizeNode} listSize
*/ @Child private ListSizeNode copyPropertiesFromJSObject_listSize_; /** * Source Info:
         *   Specialization: {@link AssignPropertiesNode#copyPropertiesFromJSObject}
         *   Parameter: {@link ListGetNode} listGet
*/ @Child private ListGetNode copyPropertiesFromJSObject_listGet_; /** * Source Info:
         *   Specialization: {@link AssignPropertiesNode#copyPropertiesFromJSObject}
         *   Parameter: {@link JSClassProfile} classProfile
*/ @CompilationFinal private JSClassProfile copyPropertiesFromJSObject_classProfile_; @UnsafeAccessedField @Child private Object0Data object0_cache; @Child private Object1Data object1_cache; private AssignPropertiesNodeGen(JSContext context) { super(context); } @ExplodeLoop @Override void executeVoid(Object arg0Value, Object arg1Value, WriteElementNode arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.copyPropertiesFromJSObject(Object, JSObject, WriteElementNode, ReadElementNode, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] || SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] || SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.copyPropertiesFromJSObject(Object, JSObject, WriteElementNode, ReadElementNode, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] */ && arg1Value instanceof JSObject) { JSObject arg1Value_ = (JSObject) arg1Value; { ReadElementNode read__ = this.copyPropertiesFromJSObject_read_; if (read__ != null) { JSGetOwnPropertyNode getOwnProperty__ = this.copyPropertiesFromJSObject_getOwnProperty_; if (getOwnProperty__ != null) { ListSizeNode listSize__ = this.copyPropertiesFromJSObject_listSize_; if (listSize__ != null) { ListGetNode listGet__ = this.copyPropertiesFromJSObject_listGet_; if (listGet__ != null) { JSClassProfile classProfile__ = this.copyPropertiesFromJSObject_classProfile_; if (classProfile__ != null) { AssignPropertiesNode.copyPropertiesFromJSObject(arg0Value, arg1Value_, arg2Value, read__, getOwnProperty__, listSize__, listGet__, classProfile__); return; } } } } } } } if ((state_0 & 0b110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] || SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */) { Object0Data s1_ = this.object0_cache; while (s1_ != null) { if ((s1_.fromInterop_.accepts(arg1Value)) && (!(JSGuards.isJSObject(arg1Value)))) { doObject(arg0Value, arg1Value, arg2Value, s1_.fromInterop_, s1_.keysInterop_, s1_.stringInterop_, s1_.toJSType_, s1_.fromJavaString_); return; } s1_ = s1_.next_; } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */) { Object1Data s2_ = this.object1_cache; if (s2_ != null) { if ((!(JSGuards.isJSObject(arg1Value)))) { this.object1Boundary(state_0, s2_, arg0Value, arg1Value, arg2Value); return; } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); executeAndSpecialize(arg0Value, arg1Value, arg2Value); return; } @SuppressWarnings("static-method") @TruffleBoundary private void object1Boundary(int state_0, Object1Data s2_, Object arg0Value, Object arg1Value, WriteElementNode arg2Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { InteropLibrary fromInterop__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); doObject(arg0Value, arg1Value, arg2Value, fromInterop__, s2_.keysInterop_, s2_.stringInterop_, s2_.toJSType_, s2_.fromJavaString_); return; } } finally { encapsulating_.set(prev_); } } private void executeAndSpecialize(Object arg0Value, Object arg1Value, WriteElementNode arg2Value) { int state_0 = this.state_0_; if (arg1Value instanceof JSObject) { JSObject arg1Value_ = (JSObject) arg1Value; ReadElementNode read__ = this.insert((ReadElementNode.create(context))); Objects.requireNonNull(read__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.copyPropertiesFromJSObject_read_ = read__; JSGetOwnPropertyNode getOwnProperty__ = this.insert((JSGetOwnPropertyNode.create(false))); Objects.requireNonNull(getOwnProperty__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.copyPropertiesFromJSObject_getOwnProperty_ = getOwnProperty__; ListSizeNode listSize__ = this.insert((ListSizeNodeGen.create())); Objects.requireNonNull(listSize__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.copyPropertiesFromJSObject_listSize_ = listSize__; ListGetNode listGet__ = this.insert((ListGetNodeGen.create())); Objects.requireNonNull(listGet__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.copyPropertiesFromJSObject_listGet_ = listGet__; JSClassProfile classProfile__ = (JSClassProfile.create()); Objects.requireNonNull(classProfile__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.copyPropertiesFromJSObject_classProfile_ = classProfile__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.copyPropertiesFromJSObject(Object, JSObject, WriteElementNode, ReadElementNode, JSGetOwnPropertyNode, ListSizeNode, ListGetNode, JSClassProfile)] */; this.state_0_ = state_0; AssignPropertiesNode.copyPropertiesFromJSObject(arg0Value, arg1Value_, arg2Value, read__, getOwnProperty__, listSize__, listGet__, classProfile__); return; } if (((state_0 & 0b100)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */) { while (true) { int count1_ = 0; Object0Data s1_ = OBJECT0_CACHE_UPDATER.getVolatile(this); Object0Data s1_original = s1_; while (s1_ != null) { if ((s1_.fromInterop_.accepts(arg1Value)) && (!(JSGuards.isJSObject(arg1Value)))) { break; } count1_++; s1_ = s1_.next_; } if (s1_ == null) { if ((!(JSGuards.isJSObject(arg1Value))) && count1_ < (JSConfig.InteropLibraryLimit)) { // assert (s1_.fromInterop_.accepts(arg1Value)); s1_ = this.insert(new Object0Data(s1_original)); InteropLibrary fromInterop__ = s1_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(fromInterop__, "A specialization cache returned a 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 the default value."); s1_.fromInterop_ = fromInterop__; InteropLibrary keysInterop__ = s1_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(keysInterop__, "A specialization cache returned a 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 the default value."); s1_.keysInterop_ = keysInterop__; InteropLibrary stringInterop__ = s1_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(stringInterop__, "A specialization cache returned a 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 the default value."); s1_.stringInterop_ = stringInterop__; ImportValueNode toJSType__ = s1_.insert((ImportValueNode.create())); Objects.requireNonNull(toJSType__, "A specialization cache returned a 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 the default value."); s1_.toJSType_ = toJSType__; FromJavaStringNode fromJavaString__ = s1_.insert((FromJavaStringNode.create())); Objects.requireNonNull(fromJavaString__, "A specialization cache returned a 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 the default value."); s1_.fromJavaString_ = fromJavaString__; if (!OBJECT0_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */; this.state_0_ = state_0; } } if (s1_ != null) { doObject(arg0Value, arg1Value, arg2Value, s1_.fromInterop_, s1_.keysInterop_, s1_.stringInterop_, s1_.toJSType_, s1_.fromJavaString_); return; } break; } } { InteropLibrary fromInterop__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { if ((!(JSGuards.isJSObject(arg1Value)))) { Object1Data s2_ = this.insert(new Object1Data()); fromInterop__ = (INTEROP_LIBRARY_.getUncached(arg1Value)); InteropLibrary keysInterop__ = s2_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(keysInterop__, "A specialization cache returned a 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 the default value."); s2_.keysInterop_ = keysInterop__; InteropLibrary stringInterop__ = s2_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(stringInterop__, "A specialization cache returned a 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 the default value."); s2_.stringInterop_ = stringInterop__; ImportValueNode toJSType__ = s2_.insert((ImportValueNode.create())); Objects.requireNonNull(toJSType__, "A specialization cache returned a 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 the default value."); s2_.toJSType_ = toJSType__; FromJavaStringNode fromJavaString__ = s2_.insert((FromJavaStringNode.create())); Objects.requireNonNull(fromJavaString__, "A specialization cache returned a 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 the default value."); s2_.fromJavaString_ = fromJavaString__; VarHandle.storeStoreFence(); this.object1_cache = s2_; this.object0_cache = null; state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.AssignPropertiesNode.doObject(Object, Object, WriteElementNode, InteropLibrary, InteropLibrary, InteropLibrary, ImportValueNode, FromJavaStringNode)] */; this.state_0_ = state_0; doObject(arg0Value, arg1Value, arg2Value, fromInterop__, keysInterop__, stringInterop__, toJSType__, fromJavaString__); return; } } finally { encapsulating_.set(prev_); } } } throw new UnsupportedSpecializationException(this, null, arg0Value, arg1Value, arg2Value); } @NeverDefault public static AssignPropertiesNode create(JSContext context) { return new AssignPropertiesNodeGen(context); } @GeneratedBy(AssignPropertiesNode.class) @DenyReplace private static final class Object0Data extends Node implements SpecializationDataNode { @Child Object0Data next_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link InteropLibrary} fromInterop
*/ @Child InteropLibrary fromInterop_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link InteropLibrary} keysInterop
*/ @Child InteropLibrary keysInterop_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link InteropLibrary} stringInterop
*/ @Child InteropLibrary stringInterop_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link ImportValueNode} toJSType
*/ @Child ImportValueNode toJSType_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link FromJavaStringNode} fromJavaString
*/ @Child FromJavaStringNode fromJavaString_; Object0Data(Object0Data next_) { this.next_ = next_; } } @GeneratedBy(AssignPropertiesNode.class) @DenyReplace private static final class Object1Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link InteropLibrary} keysInterop
*/ @Child InteropLibrary keysInterop_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link InteropLibrary} stringInterop
*/ @Child InteropLibrary stringInterop_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link ImportValueNode} toJSType
*/ @Child ImportValueNode toJSType_; /** * Source Info:
             *   Specialization: {@link AssignPropertiesNode#doObject}
             *   Parameter: {@link FromJavaStringNode} fromJavaString
*/ @Child FromJavaStringNode fromJavaString_; Object1Data() { } } } /** * Debug Info:
     *   Specialization {@link ObjectValuesOrEntriesNode#valuesOrEntriesJSObject}
     *     Activation probability: 0.48333
     *     With/without class size: 9/0 bytes
     *   Specialization {@link ObjectValuesOrEntriesNode#valuesOrEntriesForeign}
     *     Activation probability: 0.33333
     *     With/without class size: 8/0 bytes
     *   Specialization {@link ObjectValuesOrEntriesNode#valuesOrEntriesGeneric}
     *     Activation probability: 0.18333
     *     With/without class size: 7/4 bytes
     * 
*/ @GeneratedBy(ObjectValuesOrEntriesNode.class) @SuppressWarnings("javadoc") public static final class ObjectValuesOrEntriesNodeGen extends ObjectValuesOrEntriesNode { @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectValuesOrEntriesNode#valuesOrEntriesJSObject}
         *   1: SpecializationActive {@link ObjectValuesOrEntriesNode#valuesOrEntriesForeign}
         *   2: SpecializationActive {@link ObjectValuesOrEntriesNode#valuesOrEntriesGeneric}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectValuesOrEntriesNode#valuesOrEntriesGeneric}
         *   Parameter: {@link ObjectValuesOrEntriesNode} recursive
*/ @Child private ObjectValuesOrEntriesNode valuesOrEntriesGeneric_recursive_; private ObjectValuesOrEntriesNodeGen(JSContext context, JSBuiltin builtin, boolean entries, JavaScriptNode[] arguments) { super(context, builtin, entries); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override protected JSDynamicObject executeEvaluated(Object arguments0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesJSObject(JSDynamicObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesJSObject(JSDynamicObject)] */ && arguments0Value instanceof JSDynamicObject) { JSDynamicObject arguments0Value_ = (JSDynamicObject) arguments0Value; if ((JSGuards.isJSObject(arguments0Value_))) { return valuesOrEntriesJSObject(arguments0Value_); } } if ((state_0 & 0b110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] */) { if ((JSGuards.isForeignObject(arguments0Value))) { return valuesOrEntriesForeign(arguments0Value); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */) { { ObjectValuesOrEntriesNode recursive__ = this.valuesOrEntriesGeneric_recursive_; if (recursive__ != null) { if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { return valuesOrEntriesGeneric(arguments0Value, recursive__); } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value); } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesJSObject(JSDynamicObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesJSObject(JSDynamicObject)] */ && arguments0Value_ instanceof JSDynamicObject) { JSDynamicObject arguments0Value__ = (JSDynamicObject) arguments0Value_; if ((JSGuards.isJSObject(arguments0Value__))) { return valuesOrEntriesJSObject(arguments0Value__); } } if ((state_0 & 0b110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */) { if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] */) { if ((JSGuards.isForeignObject(arguments0Value_))) { return valuesOrEntriesForeign(arguments0Value_); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */) { { ObjectValuesOrEntriesNode recursive__ = this.valuesOrEntriesGeneric_recursive_; if (recursive__ != null) { if ((!(JSGuards.isJSObject(arguments0Value_))) && (!(JSGuards.isForeignObject(arguments0Value_)))) { return valuesOrEntriesGeneric(arguments0Value_, recursive__); } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private JSDynamicObject executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; if (arguments0Value instanceof JSDynamicObject) { JSDynamicObject arguments0Value_ = (JSDynamicObject) arguments0Value; if ((JSGuards.isJSObject(arguments0Value_))) { state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesJSObject(JSDynamicObject)] */; this.state_0_ = state_0; return valuesOrEntriesJSObject(arguments0Value_); } } if ((JSGuards.isForeignObject(arguments0Value))) { state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesForeign(Object)] */; this.state_0_ = state_0; return valuesOrEntriesForeign(arguments0Value); } if ((!(JSGuards.isJSObject(arguments0Value))) && (!(JSGuards.isForeignObject(arguments0Value)))) { ObjectValuesOrEntriesNode recursive__ = this.insert((createRecursive())); Objects.requireNonNull(recursive__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.valuesOrEntriesGeneric_recursive_ = recursive__; state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectValuesOrEntriesNode.valuesOrEntriesGeneric(Object, ObjectValuesOrEntriesNode)] */; this.state_0_ = state_0; return valuesOrEntriesGeneric(arguments0Value, recursive__); } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_}, arguments0Value); } @NeverDefault public static ObjectValuesOrEntriesNode create(JSContext context, JSBuiltin builtin, boolean entries, JavaScriptNode[] arguments) { return new ObjectValuesOrEntriesNodeGen(context, builtin, entries, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectFromEntriesNode#entries}
     *     Activation probability: 1.00000
     *     With/without class size: 72/49 bytes
     * 
*/ @GeneratedBy(ObjectFromEntriesNode.class) @SuppressWarnings("javadoc") public static final class ObjectFromEntriesNodeGen extends ObjectFromEntriesNode { private static final StateField STATE_0_ObjectFromEntriesNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link GetIteratorNode} getIteratorNode
         *   Inline method: {@link GetIteratorNodeGen#inline}
*/ private static final GetIteratorNode INLINED_GET_ITERATOR_NODE_ = GetIteratorNodeGen.inline(InlineTarget.create(GetIteratorNode.class, STATE_0_ObjectFromEntriesNode_UPDATER.subUpdater(1, 6), ReferenceField.create(MethodHandles.lookup(), "getIteratorNode__field1_", Node.class), ReferenceField.create(MethodHandles.lookup(), "getIteratorNode__field2_", Node.class), ReferenceField.create(MethodHandles.lookup(), "getIteratorNode__field3_", Node.class), ReferenceField.create(MethodHandles.lookup(), "getIteratorNode__field4_", Node.class), ReferenceField.create(MethodHandles.lookup(), "getIteratorNode__field5_", Node.class))); /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link InlinedBranchProfile} errorBranch
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_ERROR_BRANCH_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_ObjectFromEntriesNode_UPDATER.subUpdater(7, 1))); @Child private JavaScriptNode arguments0_; /** * State Info:
         *   0: SpecializationActive {@link ObjectFromEntriesNode#entries}
         *   1-6: InlinedCache
         *        Specialization: {@link ObjectFromEntriesNode#entries}
         *        Parameter: {@link GetIteratorNode} getIteratorNode
         *        Inline method: {@link GetIteratorNodeGen#inline}
         *   7: InlinedCache
         *        Specialization: {@link ObjectFromEntriesNode#entries}
         *        Parameter: {@link InlinedBranchProfile} errorBranch
         *        Inline method: {@link InlinedBranchProfile#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link RequireObjectCoercibleNode} requireObjectCoercibleNode
*/ @Child private RequireObjectCoercibleNode requireObjectCoercibleNode_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link GetIteratorNode} getIteratorNode
         *   Inline method: {@link GetIteratorNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getIteratorNode__field1_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link GetIteratorNode} getIteratorNode
         *   Inline method: {@link GetIteratorNodeGen#inline}
         *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getIteratorNode__field2_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link GetIteratorNode} getIteratorNode
         *   Inline method: {@link GetIteratorNodeGen#inline}
         *   Inline field: {@link Node} field3
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getIteratorNode__field3_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link GetIteratorNode} getIteratorNode
         *   Inline method: {@link GetIteratorNodeGen#inline}
         *   Inline field: {@link Node} field4
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getIteratorNode__field4_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link GetIteratorNode} getIteratorNode
         *   Inline method: {@link GetIteratorNodeGen#inline}
         *   Inline field: {@link Node} field5
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getIteratorNode__field5_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link IteratorStepNode} iteratorStepNode
*/ @Child private IteratorStepNode iteratorStepNode_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link IteratorValueNode} iteratorValueNode
*/ @Child private IteratorValueNode iteratorValueNode_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link IsObjectNode} isObjectNode
*/ @Child private IsObjectNode isObjectNode_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link JSToPropertyKeyNode} toPropertyKeyNode
*/ @Child private JSToPropertyKeyNode toPropertyKeyNode_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link ReadElementNode} readElementNode
*/ @Child private ReadElementNode readElementNode_; /** * Source Info:
         *   Specialization: {@link ObjectFromEntriesNode#entries}
         *   Parameter: {@link IteratorCloseNode} iteratorCloseNode
*/ @Child private IteratorCloseNode iteratorCloseNode_; private ObjectFromEntriesNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectFromEntriesNode.entries(Object, RequireObjectCoercibleNode, GetIteratorNode, IteratorStepNode, IteratorValueNode, IsObjectNode, JSToPropertyKeyNode, ReadElementNode, IteratorCloseNode, InlinedBranchProfile)] */) { { RequireObjectCoercibleNode requireObjectCoercibleNode__ = this.requireObjectCoercibleNode_; if (requireObjectCoercibleNode__ != null) { IteratorStepNode iteratorStepNode__ = this.iteratorStepNode_; if (iteratorStepNode__ != null) { IteratorValueNode iteratorValueNode__ = this.iteratorValueNode_; if (iteratorValueNode__ != null) { IsObjectNode isObjectNode__ = this.isObjectNode_; if (isObjectNode__ != null) { JSToPropertyKeyNode toPropertyKeyNode__ = this.toPropertyKeyNode_; if (toPropertyKeyNode__ != null) { ReadElementNode readElementNode__ = this.readElementNode_; if (readElementNode__ != null) { IteratorCloseNode iteratorCloseNode__ = this.iteratorCloseNode_; if (iteratorCloseNode__ != null) { return entries(arguments0Value_, requireObjectCoercibleNode__, INLINED_GET_ITERATOR_NODE_, iteratorStepNode__, iteratorValueNode__, isObjectNode__, toPropertyKeyNode__, readElementNode__, iteratorCloseNode__, INLINED_ERROR_BRANCH_); } } } } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_); } private JSDynamicObject executeAndSpecialize(Object arguments0Value) { int state_0 = this.state_0_; RequireObjectCoercibleNode requireObjectCoercibleNode__ = this.insert((RequireObjectCoercibleNode.create())); Objects.requireNonNull(requireObjectCoercibleNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.requireObjectCoercibleNode_ = requireObjectCoercibleNode__; IteratorStepNode iteratorStepNode__ = this.insert((IteratorStepNode.create())); Objects.requireNonNull(iteratorStepNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.iteratorStepNode_ = iteratorStepNode__; IteratorValueNode iteratorValueNode__ = this.insert((IteratorValueNode.create())); Objects.requireNonNull(iteratorValueNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.iteratorValueNode_ = iteratorValueNode__; IsObjectNode isObjectNode__ = this.insert((IsObjectNode.create())); Objects.requireNonNull(isObjectNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.isObjectNode_ = isObjectNode__; JSToPropertyKeyNode toPropertyKeyNode__ = this.insert((JSToPropertyKeyNode.create())); Objects.requireNonNull(toPropertyKeyNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.toPropertyKeyNode_ = toPropertyKeyNode__; ReadElementNode readElementNode__ = this.insert((ReadElementNode.create(getContext()))); Objects.requireNonNull(readElementNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.readElementNode_ = readElementNode__; IteratorCloseNode iteratorCloseNode__ = this.insert((IteratorCloseNode.create(getContext()))); Objects.requireNonNull(iteratorCloseNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.iteratorCloseNode_ = iteratorCloseNode__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectFromEntriesNode.entries(Object, RequireObjectCoercibleNode, GetIteratorNode, IteratorStepNode, IteratorValueNode, IsObjectNode, JSToPropertyKeyNode, ReadElementNode, IteratorCloseNode, InlinedBranchProfile)] */; this.state_0_ = state_0; return entries(arguments0Value, requireObjectCoercibleNode__, INLINED_GET_ITERATOR_NODE_, iteratorStepNode__, iteratorValueNode__, isObjectNode__, toPropertyKeyNode__, readElementNode__, iteratorCloseNode__, INLINED_ERROR_BRANCH_); } @NeverDefault public static ObjectFromEntriesNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectFromEntriesNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectBindPropertiesNode#bindPropertiesInvalidTarget}
     *     Activation probability: 0.32000
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectBindPropertiesNode#bindPropertiesFromJSDynamicObject}
     *     Activation probability: 0.26000
     *     With/without class size: 7/0 bytes
     *   Specialization {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
     *     Activation probability: 0.20000
     *     With/without class size: 9/8 bytes
     *   Specialization {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
     *     Activation probability: 0.14000
     *     With/without class size: 6/4 bytes
     *   Specialization {@link ObjectBindPropertiesNode#bindPropertiesFromOther}
     *     Activation probability: 0.08000
     *     With/without class size: 4/0 bytes
     * 
*/ @GeneratedBy(ObjectBindPropertiesNode.class) @SuppressWarnings("javadoc") public static final class ObjectBindPropertiesNodeGen extends ObjectBindPropertiesNode { static final ReferenceField BIND_PROPERTIES_FROM_FOREIGN0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "bindPropertiesFromForeign0_cache", BindPropertiesFromForeign0Data.class); @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectBindPropertiesNode#bindPropertiesInvalidTarget}
         *   1: SpecializationActive {@link ObjectBindPropertiesNode#bindPropertiesFromJSDynamicObject}
         *   2: SpecializationActive {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
         *   3: SpecializationActive {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
         *   4: SpecializationActive {@link ObjectBindPropertiesNode#bindPropertiesFromOther}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private BindPropertiesFromForeign0Data bindPropertiesFromForeign0_cache; /** * Source Info:
         *   Specialization: {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
         *   Parameter: {@link InteropLibrary} members
*/ @Child private InteropLibrary bindPropertiesFromForeign1_members_; private ObjectBindPropertiesNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @ExplodeLoop @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesInvalidTarget(Object, Object)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromJSDynamicObject(JSObject, JSDynamicObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromOther(JSObject, Object)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesInvalidTarget(Object, Object)] */) { if ((!(JSGuards.isJSObject(arguments0Value_)))) { return bindPropertiesInvalidTarget(arguments0Value_, arguments1Value_); } } if ((state_0 & 0b11110) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromJSDynamicObject(JSObject, JSDynamicObject)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromOther(JSObject, Object)] */ && arguments0Value_ instanceof JSObject) { JSObject arguments0Value__ = (JSObject) arguments0Value_; if ((state_0 & 0b10) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromJSDynamicObject(JSObject, JSDynamicObject)] */ && arguments1Value_ instanceof JSDynamicObject) { JSDynamicObject arguments1Value__ = (JSDynamicObject) arguments1Value_; return bindPropertiesFromJSDynamicObject(arguments0Value__, arguments1Value__); } if ((state_0 & 0b11100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] || SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromOther(JSObject, Object)] */) { if ((state_0 & 0b100) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] */) { BindPropertiesFromForeign0Data s2_ = this.bindPropertiesFromForeign0_cache; while (s2_ != null) { if ((s2_.interop_.accepts(arguments1Value_)) && (JSGuards.isForeignObject(arguments1Value_))) { return bindPropertiesFromForeign(arguments0Value__, arguments1Value_, s2_.interop_, s2_.members_); } s2_ = s2_.next_; } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] */) { { InteropLibrary members__ = this.bindPropertiesFromForeign1_members_; if (members__ != null) { if ((JSGuards.isForeignObject(arguments1Value_))) { return this.bindPropertiesFromForeign1Boundary(state_0, arguments0Value__, arguments1Value_, members__); } } } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromOther(JSObject, Object)] */) { if ((!(JSGuards.isJSDynamicObject(arguments1Value_))) && (!(JSGuards.isForeignObject(arguments1Value_)))) { return bindPropertiesFromOther(arguments0Value__, arguments1Value_); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } @SuppressWarnings("static-method") @TruffleBoundary private Object bindPropertiesFromForeign1Boundary(int state_0, JSObject arguments0Value__, Object arguments1Value_, InteropLibrary members__) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { InteropLibrary interop__ = (INTEROP_LIBRARY_.getUncached(arguments1Value_)); return bindPropertiesFromForeign(arguments0Value__, arguments1Value_, interop__, members__); } } finally { encapsulating_.set(prev_); } } private JSDynamicObject executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; if ((!(JSGuards.isJSObject(arguments0Value)))) { state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesInvalidTarget(Object, Object)] */; this.state_0_ = state_0; return bindPropertiesInvalidTarget(arguments0Value, arguments1Value); } if (arguments0Value instanceof JSObject) { JSObject arguments0Value_ = (JSObject) arguments0Value; if (arguments1Value instanceof JSDynamicObject) { JSDynamicObject arguments1Value_ = (JSDynamicObject) arguments1Value; state_0 = state_0 | 0b10 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromJSDynamicObject(JSObject, JSDynamicObject)] */; this.state_0_ = state_0; return bindPropertiesFromJSDynamicObject(arguments0Value_, arguments1Value_); } if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] */) { while (true) { int count2_ = 0; BindPropertiesFromForeign0Data s2_ = BIND_PROPERTIES_FROM_FOREIGN0_CACHE_UPDATER.getVolatile(this); BindPropertiesFromForeign0Data s2_original = s2_; while (s2_ != null) { if ((s2_.interop_.accepts(arguments1Value)) && (JSGuards.isForeignObject(arguments1Value))) { break; } count2_++; s2_ = s2_.next_; } if (s2_ == null) { if ((JSGuards.isForeignObject(arguments1Value)) && count2_ < (JSConfig.InteropLibraryLimit)) { // assert (s2_.interop_.accepts(arguments1Value)); s2_ = this.insert(new BindPropertiesFromForeign0Data(s2_original)); InteropLibrary interop__ = s2_.insert((INTEROP_LIBRARY_.create(arguments1Value))); Objects.requireNonNull(interop__, "A specialization cache returned a 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 the default value."); s2_.interop_ = interop__; InteropLibrary members__ = s2_.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(members__, "A specialization cache returned a 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 the default value."); s2_.members_ = members__; if (!BIND_PROPERTIES_FROM_FOREIGN0_CACHE_UPDATER.compareAndSet(this, s2_original, s2_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] */; this.state_0_ = state_0; } } if (s2_ != null) { return bindPropertiesFromForeign(arguments0Value_, arguments1Value, s2_.interop_, s2_.members_); } break; } } { InteropLibrary interop__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { if ((JSGuards.isForeignObject(arguments1Value))) { interop__ = (INTEROP_LIBRARY_.getUncached(arguments1Value)); InteropLibrary members__ = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); Objects.requireNonNull(members__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.bindPropertiesFromForeign1_members_ = members__; this.bindPropertiesFromForeign0_cache = null; state_0 = state_0 & 0xfffffffb /* remove SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] */; state_0 = state_0 | 0b1000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromForeign(JSObject, Object, InteropLibrary, InteropLibrary)] */; this.state_0_ = state_0; return bindPropertiesFromForeign(arguments0Value_, arguments1Value, interop__, members__); } } finally { encapsulating_.set(prev_); } } } if ((!(JSGuards.isJSDynamicObject(arguments1Value))) && (!(JSGuards.isForeignObject(arguments1Value)))) { state_0 = state_0 | 0b10000 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectBindPropertiesNode.bindPropertiesFromOther(JSObject, Object)] */; this.state_0_ = state_0; return bindPropertiesFromOther(arguments0Value_, arguments1Value); } } throw new UnsupportedSpecializationException(this, new Node[] {this.arguments0_, this.arguments1_}, arguments0Value, arguments1Value); } @NeverDefault public static ObjectBindPropertiesNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectBindPropertiesNodeGen(context, builtin, arguments); } @GeneratedBy(ObjectBindPropertiesNode.class) @DenyReplace private static final class BindPropertiesFromForeign0Data extends Node implements SpecializationDataNode { @Child BindPropertiesFromForeign0Data next_; /** * Source Info:
             *   Specialization: {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
             *   Parameter: {@link InteropLibrary} interop
*/ @Child InteropLibrary interop_; /** * Source Info:
             *   Specialization: {@link ObjectBindPropertiesNode#bindPropertiesFromForeign}
             *   Parameter: {@link InteropLibrary} members
*/ @Child InteropLibrary members_; BindPropertiesFromForeign0Data(BindPropertiesFromForeign0Data next_) { this.next_ = next_; } } } /** * Debug Info:
     *   Specialization {@link ObjectHasOwnNode#hasOwn}
     *     Activation probability: 1.00000
     *     With/without class size: 16/0 bytes
     * 
*/ @GeneratedBy(ObjectHasOwnNode.class) @SuppressWarnings("javadoc") public static final class ObjectHasOwnNodeGen extends ObjectHasOwnNode { @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; private ObjectHasOwnNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @Override public Object execute(VirtualFrame frameValue) { Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); return hasOwn(arguments0Value_, arguments1Value_); } @NeverDefault public static ObjectHasOwnNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectHasOwnNodeGen(context, builtin, arguments); } } /** * Debug Info:
     *   Specialization {@link ObjectGroupByNode#groupBy}
     *     Activation probability: 1.00000
     *     With/without class size: 24/4 bytes
     * 
*/ @GeneratedBy(ObjectGroupByNode.class) @SuppressWarnings("javadoc") public static final class ObjectGroupByNodeGen extends ObjectGroupByNode { @Child private JavaScriptNode arguments0_; @Child private JavaScriptNode arguments1_; /** * State Info:
         *   0: SpecializationActive {@link ObjectGroupByNode#groupBy}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link ObjectGroupByNode#groupBy}
         *   Parameter: {@link GroupByNode} groupByNode
*/ @Child private GroupByNode groupByNode_; private ObjectGroupByNodeGen(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { super(context, builtin); this.arguments0_ = arguments != null && 0 < arguments.length ? arguments[0] : null; this.arguments1_ = arguments != null && 1 < arguments.length ? arguments[1] : null; } @Override public JavaScriptNode[] getArguments() { return new JavaScriptNode[] {this.arguments0_, this.arguments1_}; } @Override public Object execute(VirtualFrame frameValue) { int state_0 = this.state_0_; Object arguments0Value_ = this.arguments0_.execute(frameValue); Object arguments1Value_ = this.arguments1_.execute(frameValue); if (state_0 != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectGroupByNode.groupBy(Object, Object, GroupByNode)] */) { { GroupByNode groupByNode__ = this.groupByNode_; if (groupByNode__ != null) { return groupBy(arguments0Value_, arguments1Value_, groupByNode__); } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arguments0Value_, arguments1Value_); } private JSObject executeAndSpecialize(Object arguments0Value, Object arguments1Value) { int state_0 = this.state_0_; GroupByNode groupByNode__ = this.insert((GroupByNodeGen.create(getContext(), true))); Objects.requireNonNull(groupByNode__, "A specialization cache returned a 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 the default value."); VarHandle.storeStoreFence(); this.groupByNode_ = groupByNode__; state_0 = state_0 | 0b1 /* add SpecializationActive[ObjectFunctionBuiltins.ObjectGroupByNode.groupBy(Object, Object, GroupByNode)] */; this.state_0_ = state_0; return groupBy(arguments0Value, arguments1Value, groupByNode__); } @NeverDefault public static ObjectGroupByNode create(JSContext context, JSBuiltin builtin, JavaScriptNode[] arguments) { return new ObjectGroupByNodeGen(context, builtin, arguments); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy