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 extends JSObject>)] || 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 extends JSObject>)] || SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObject(JSObject)] */ && arguments0Value_ instanceof JSObject) {
JSObject arguments0Value__ = (JSObject) arguments0Value_;
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectTestIntegrityLevelNode.doJSObjectCached(JSObject, Class extends JSObject>)] */) {
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 extends JSObject> 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 extends JSObject>)] */;
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 extends JSObject>)] */;
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 extends JSObject> 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 extends JSObject>)] || 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 extends JSObject>)] || SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObject(JSObject)] */ && arguments0Value_ instanceof JSObject) {
JSObject arguments0Value__ = (JSObject) arguments0Value_;
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[ObjectFunctionBuiltins.ObjectSetIntegrityLevelNode.doJSObjectCached(JSObject, Class extends JSObject>)] */) {
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 extends JSObject> 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 extends JSObject>)] */;
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 extends JSObject>)] */;
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 extends JSObject> 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