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

com.oracle.truffle.js.nodes.binary.JSEqualNodeGen Maven / Gradle / Ivy

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

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.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.Node;
import com.oracle.truffle.api.nodes.UnexpectedResultException;
import com.oracle.truffle.api.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleString.EqualNode;
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.IsObjectNode;
import com.oracle.truffle.js.nodes.access.IsPrimitiveNode;
import com.oracle.truffle.js.nodes.cast.JSStringToNumberNode;
import com.oracle.truffle.js.nodes.cast.JSToBooleanNode;
import com.oracle.truffle.js.nodes.cast.JSToBooleanNodeGen;
import com.oracle.truffle.js.nodes.cast.JSToPrimitiveNode;
import com.oracle.truffle.js.nodes.cast.LongToBigIntNode;
import com.oracle.truffle.js.nodes.cast.LongToBigIntNodeGen;
import com.oracle.truffle.js.runtime.BigInt;
import com.oracle.truffle.js.runtime.JSConfig;
import com.oracle.truffle.js.runtime.JSRuntime;
import com.oracle.truffle.js.runtime.Symbol;
import com.oracle.truffle.js.runtime.objects.JSDynamicObject;
import com.oracle.truffle.js.runtime.objects.JSObject;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;

/**
 * Debug Info: 
 *   Specialization {@link JSEqualNode#doInt}
 *     Activation probability: 0.05143
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doIntBoolean}
 *     Activation probability: 0.05008
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doLong}
 *     Activation probability: 0.04872
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doDouble}
 *     Activation probability: 0.04737
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBigInt}
 *     Activation probability: 0.04602
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doDoubleString}
 *     Activation probability: 0.04467
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doDoubleBoolean}
 *     Activation probability: 0.04332
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBoolean}
 *     Activation probability: 0.04197
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBooleanInt}
 *     Activation probability: 0.04062
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBooleanDouble}
 *     Activation probability: 0.03926
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBooleanString}
 *     Activation probability: 0.03791
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doStringIdentity}
 *     Activation probability: 0.03656
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doString}
 *     Activation probability: 0.03521
 *     With/without class size: 4/4 bytes
 *   Specialization {@link JSEqualNode#doStringDouble}
 *     Activation probability: 0.03386
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doStringBoolean}
 *     Activation probability: 0.03251
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doStringBigInt}
 *     Activation probability: 0.03116
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBigIntString}
 *     Activation probability: 0.02980
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBooleanBigInt}
 *     Activation probability: 0.02845
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBigIntBoolean}
 *     Activation probability: 0.02710
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBothNullOrUndefined}
 *     Activation probability: 0.02575
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doLeftNullOrUndefined}
 *     Activation probability: 0.02440
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doRightNullOrUndefined}
 *     Activation probability: 0.02305
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doOverloaded}
 *     Activation probability: 0.02170
 *     With/without class size: 4/10 bytes
 *   Specialization {@link JSEqualNode#doJSObject(JSObject, JSDynamicObject)}
 *     Activation probability: 0.02035
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doJSObject(JSDynamicObject, JSObject)}
 *     Activation probability: 0.01899
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
 *     Activation probability: 0.01764
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
 *     Activation probability: 0.01629
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBigIntAndInt}
 *     Activation probability: 0.01494
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doBigIntAndNumber}
 *     Activation probability: 0.01359
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doIntAndBigInt}
 *     Activation probability: 0.01224
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doNumberAndBigInt}
 *     Activation probability: 0.01089
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doSymbol}
 *     Activation probability: 0.00953
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doSymbolNotSymbol(Symbol, Object, IsObjectNode)}
 *     Activation probability: 0.00818
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doSymbolNotSymbol(Object, Symbol, IsObjectNode)}
 *     Activation probability: 0.00683
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSEqualNode#doForeign}
 *     Activation probability: 0.00548
 *     With/without class size: 4/1 bytes
 *   Specialization {@link JSEqualNode#doFallback}
 *     Activation probability: 0.00413
 *     With/without class size: 4/0 bytes
 * 
*/ @GeneratedBy(JSEqualNode.class) @SuppressWarnings({"javadoc", "unused"}) public final class JSEqualNodeGen extends JSEqualNode { private static final StateField OVERLOADED__J_S_EQUAL_NODE_OVERLOADED_STATE_0_UPDATER = StateField.create(OverloadedData.lookup_(), "overloaded_state_0_"); private static final StateField STATE_1_JSEqualNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_1_"); /** * Source Info:
     *   Specialization: {@link JSEqualNode#doOverloaded}
     *   Parameter: {@link JSToBooleanNode} toBooleanNode
     *   Inline method: {@link JSToBooleanNodeGen#inline}
*/ private static final JSToBooleanNode INLINED_OVERLOADED_TO_BOOLEAN_NODE_ = JSToBooleanNodeGen.inline(InlineTarget.create(JSToBooleanNode.class, OVERLOADED__J_S_EQUAL_NODE_OVERLOADED_STATE_0_UPDATER.subUpdater(0, 15), ReferenceField.create(OverloadedData.lookup_(), "overloaded_toBooleanNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link JSEqualNode#doForeign}
     *   Parameter: {@link LongToBigIntNode} longToBigIntA
     *   Inline method: {@link LongToBigIntNodeGen#inline}
*/ private static final LongToBigIntNode INLINED_FOREIGN_LONG_TO_BIG_INT_A_ = LongToBigIntNodeGen.inline(InlineTarget.create(LongToBigIntNode.class, STATE_1_JSEqualNode_UPDATER.subUpdater(14, 2))); /** * Source Info:
     *   Specialization: {@link JSEqualNode#doForeign}
     *   Parameter: {@link LongToBigIntNode} longToBigIntB
     *   Inline method: {@link LongToBigIntNodeGen#inline}
*/ private static final LongToBigIntNode INLINED_FOREIGN_LONG_TO_BIG_INT_B_ = LongToBigIntNodeGen.inline(InlineTarget.create(LongToBigIntNode.class, STATE_1_JSEqualNode_UPDATER.subUpdater(16, 2))); private static final LibraryFactory INTEROP_LIBRARY_ = LibraryFactory.resolve(InteropLibrary.class); /** * State Info:
     *   0: SpecializationActive {@link JSEqualNode#doInt}
     *   1: SpecializationActive {@link JSEqualNode#doIntBoolean}
     *   2: SpecializationActive {@link JSEqualNode#doLong}
     *   3: SpecializationActive {@link JSEqualNode#doDouble}
     *   4: SpecializationActive {@link JSEqualNode#doBigInt}
     *   5: SpecializationActive {@link JSEqualNode#doDoubleString}
     *   6: SpecializationActive {@link JSEqualNode#doDoubleBoolean}
     *   7: SpecializationActive {@link JSEqualNode#doBoolean}
     *   8: SpecializationActive {@link JSEqualNode#doBooleanInt}
     *   9: SpecializationActive {@link JSEqualNode#doBooleanDouble}
     *   10: SpecializationActive {@link JSEqualNode#doBooleanString}
     *   11: SpecializationActive {@link JSEqualNode#doStringIdentity}
     *   12: SpecializationActive {@link JSEqualNode#doString}
     *   13: SpecializationActive {@link JSEqualNode#doStringDouble}
     *   14: SpecializationActive {@link JSEqualNode#doStringBoolean}
     *   15: SpecializationActive {@link JSEqualNode#doStringBigInt}
     *   16: SpecializationActive {@link JSEqualNode#doBigIntString}
     *   17: SpecializationActive {@link JSEqualNode#doBooleanBigInt}
     *   18: SpecializationActive {@link JSEqualNode#doBigIntBoolean}
     *   19: SpecializationActive {@link JSEqualNode#doBothNullOrUndefined}
     *   20: SpecializationActive {@link JSEqualNode#doLeftNullOrUndefined}
     *   21: SpecializationActive {@link JSEqualNode#doRightNullOrUndefined}
     *   22: SpecializationActive {@link JSEqualNode#doOverloaded}
     *   23: SpecializationActive {@link JSEqualNode#doJSObject(JSObject, JSDynamicObject)}
     *   24: SpecializationActive {@link JSEqualNode#doJSObject(JSDynamicObject, JSObject)}
     *   25: SpecializationActive {@link JSEqualNode#doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   26: GuardActive[guardIndex=1] {@link JSEqualNode#doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   27: SpecializationActive {@link JSEqualNode#doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   28: GuardActive[guardIndex=1] {@link JSEqualNode#doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   29: SpecializationActive {@link JSEqualNode#doBigIntAndInt}
     *   30: SpecializationActive {@link JSEqualNode#doBigIntAndNumber}
     *   31: SpecializationActive {@link JSEqualNode#doIntAndBigInt}
     * 
*/ @CompilationFinal private int state_0_; /** * State Info:
     *   0: SpecializationActive {@link JSEqualNode#doNumberAndBigInt}
     *   1: SpecializationActive {@link JSEqualNode#doSymbol}
     *   2: SpecializationActive {@link JSEqualNode#doSymbolNotSymbol(Symbol, Object, IsObjectNode)}
     *   3: GuardActive[guardIndex=1] {@link JSEqualNode#doSymbolNotSymbol(Symbol, Object, IsObjectNode)}
     *   4: SpecializationActive {@link JSEqualNode#doSymbolNotSymbol(Object, Symbol, IsObjectNode)}
     *   5: GuardActive[guardIndex=1] {@link JSEqualNode#doSymbolNotSymbol(Object, Symbol, IsObjectNode)}
     *   6: SpecializationActive {@link JSEqualNode#doForeign}
     *   7: SpecializationActive {@link JSEqualNode#doFallback}
     *   8-10: ImplicitCast[type=double, index=0]
     *   11-13: ImplicitCast[type=double, index=1]
     *   14-15: InlinedCache
     *        Specialization: {@link JSEqualNode#doForeign}
     *        Parameter: {@link LongToBigIntNode} longToBigIntA
     *        Inline method: {@link LongToBigIntNodeGen#inline}
     *   16-17: InlinedCache
     *        Specialization: {@link JSEqualNode#doForeign}
     *        Parameter: {@link LongToBigIntNode} longToBigIntB
     *        Inline method: {@link LongToBigIntNodeGen#inline}
     * 
*/ @CompilationFinal @UnsafeAccessedField private int state_1_; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doDoubleString}
     *   Parameter: {@link JSStringToNumberNode} stringToDouble
*/ @Child private JSStringToNumberNode stringToDouble; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doLeftNullOrUndefined}
     *   Parameter: {@link InteropLibrary} bInterop
*/ @Child private InteropLibrary bInterop; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doRightNullOrUndefined}
     *   Parameter: {@link InteropLibrary} aInterop
*/ @Child private InteropLibrary aInterop; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   Parameter: {@link JSToPrimitiveNode} toPrimitiveNode
*/ @Child private JSToPrimitiveNode toPrimitiveNode; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   Parameter: {@link IsPrimitiveNode} isPrimitiveNode
*/ @Child private IsPrimitiveNode isPrimitiveNode; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)}
     *   Parameter: {@link JSEqualNode} nestedEqualNode
*/ @Child private JSEqualNode nestedEqualNode; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doSymbolNotSymbol(Symbol, Object, IsObjectNode)}
     *   Parameter: {@link IsObjectNode} isObjectNode
*/ @Child private IsObjectNode isObjectNode; /** * Source Info:
     *   Specialization: {@link JSEqualNode#doString}
     *   Parameter: {@link EqualNode} equalsNode
*/ @Child private EqualNode string_equalsNode_; @Child private OverloadedData overloaded_cache; private JSEqualNodeGen(JavaScriptNode left, JavaScriptNode right) { super(left, right); } @SuppressWarnings("static-method") private boolean fallbackGuard_(int state_0, int state_1, Object leftNodeValue, Object rightNodeValue) { if (!((state_0 & 0b100) != 0 /* is SpecializationActive[JSEqualNode.doLong(long, long)] */) && leftNodeValue instanceof Long && rightNodeValue instanceof Long) { return false; } if (JSTypesGen.isImplicitDouble(leftNodeValue) && JSTypesGen.isImplicitDouble(rightNodeValue)) { return false; } if (!((state_0 & 0b10000) != 0 /* is SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] */) && leftNodeValue instanceof BigInt && rightNodeValue instanceof BigInt) { return false; } if (JSTypesGen.isImplicitDouble(leftNodeValue)) { if (!((state_0 & 0b100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] */) && rightNodeValue instanceof TruffleString) { return false; } if (!((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */) && rightNodeValue instanceof Boolean) { return false; } } if (leftNodeValue instanceof Boolean) { if (!((state_0 & 0b10000000) != 0 /* is SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] */) && rightNodeValue instanceof Boolean) { return false; } if (JSTypesGen.isImplicitDouble(rightNodeValue)) { return false; } if (!((state_0 & 0b10000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */) && rightNodeValue instanceof TruffleString) { return false; } } if (leftNodeValue instanceof TruffleString) { if (!((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */) && rightNodeValue instanceof TruffleString) { return false; } if (JSTypesGen.isImplicitDouble(rightNodeValue)) { return false; } if (!((state_0 & 0b100000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] */) && rightNodeValue instanceof Boolean) { return false; } if (!((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] */) && rightNodeValue instanceof BigInt) { return false; } } if (!((state_0 & 0x10000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] */) && leftNodeValue instanceof BigInt && rightNodeValue instanceof TruffleString) { return false; } if (!((state_0 & 0x20000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */) && leftNodeValue instanceof Boolean && rightNodeValue instanceof BigInt) { return false; } if (!((state_0 & 0x40000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */) && leftNodeValue instanceof BigInt && rightNodeValue instanceof Boolean) { return false; } if (!((state_0 & 0x80000) != 0 /* is SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] */) && (JSRuntime.isNullOrUndefined(leftNodeValue)) && (JSRuntime.isNullOrUndefined(rightNodeValue))) { return false; } if (!((state_0 & 0x100000) != 0 /* is SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] */) && (JSRuntime.isNullOrUndefined(leftNodeValue))) { return false; } if (!((state_0 & 0x200000) != 0 /* is SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] */) && (JSRuntime.isNullOrUndefined(rightNodeValue))) { return false; } if (!((state_0 & 0x400000) != 0 /* is SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] */) && (hasOverloadedOperators(leftNodeValue) || hasOverloadedOperators(rightNodeValue))) { return false; } if (leftNodeValue instanceof JSObject && rightNodeValue instanceof JSDynamicObject) { JSObject leftNodeValue_ = (JSObject) leftNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_)))) { JSDynamicObject rightNodeValue_ = (JSDynamicObject) rightNodeValue; if ((!(hasOverloadedOperators(rightNodeValue_)))) { return false; } } } if (leftNodeValue instanceof JSDynamicObject && rightNodeValue instanceof JSObject) { JSDynamicObject leftNodeValue_ = (JSDynamicObject) leftNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_)))) { JSObject rightNodeValue_ = (JSObject) rightNodeValue; if ((!(hasOverloadedOperators(rightNodeValue_)))) { return false; } } } if (leftNodeValue instanceof JSObject) { JSObject leftNodeValue_ = (JSObject) leftNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_)))) { IsPrimitiveNode isPrimitiveNode_ = this.isPrimitiveNode; if ((((state_0 & 0x4000000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode), guardIndex=1] */ || isPrimitiveNode_ == null || (isPrimitiveNode_.executeBoolean(rightNodeValue)))) { return false; } } } if (rightNodeValue instanceof JSObject) { JSObject rightNodeValue_ = (JSObject) rightNodeValue; if ((!(hasOverloadedOperators(rightNodeValue_)))) { IsPrimitiveNode isPrimitiveNode_1 = this.isPrimitiveNode; if ((((state_0 & 0x10000000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode), guardIndex=1] */ || isPrimitiveNode_1 == null || (isPrimitiveNode_1.executeBoolean(leftNodeValue)))) { return false; } } } if (leftNodeValue instanceof BigInt && JSTypesGen.isImplicitDouble(rightNodeValue)) { return false; } if (JSTypesGen.isImplicitDouble(leftNodeValue) && rightNodeValue instanceof BigInt) { return false; } if (leftNodeValue instanceof Symbol) { if (!((state_1 & 0b10) != 0 /* is SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] */) && rightNodeValue instanceof Symbol) { return false; } if ((!(JSGuards.isSymbol(rightNodeValue)))) { IsObjectNode isObjectNode_ = this.isObjectNode; if ((((state_1 & 0b1000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode), guardIndex=1] */ || isObjectNode_ == null || (!(isObjectNode_.executeBoolean(rightNodeValue))))) { return false; } } } if (rightNodeValue instanceof Symbol && (!(JSGuards.isSymbol(leftNodeValue)))) { IsObjectNode isObjectNode_1 = this.isObjectNode; if ((((state_1 & 0b100000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode), guardIndex=1] */ || isObjectNode_1 == null || (!(isObjectNode_1.executeBoolean(leftNodeValue))))) { return false; } } if (!((state_1 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] */) && ((JSGuards.isForeignObjectOrNumber(leftNodeValue)) || (JSGuards.isForeignObjectOrNumber(rightNodeValue)))) { return false; } return true; } @Override public boolean executeBoolean(Object leftNodeValue, Object rightNodeValue) { int state_0 = this.state_0_; int state_1 = this.state_1_; if (((state_0 & 0xebffffff) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] || SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] || SpecializationActive[JSEqualNode.doLong(long, long)] || SpecializationActive[JSEqualNode.doDouble(double, double)] || SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] || SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] || SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] || SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] || SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] || SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] || SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] || SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] || SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] || SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] || SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] || SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] || SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] || SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] || SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] || SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] || SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] || SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] || SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] || SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] || SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] || SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] || SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] || SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] || SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { if ((state_0 & 0b11) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] || SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */ && leftNodeValue instanceof Integer) { int leftNodeValue_ = (int) leftNodeValue; if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] */ && rightNodeValue instanceof Integer) { int rightNodeValue_ = (int) rightNodeValue; return JSEqualNode.doInt(leftNodeValue_, rightNodeValue_); } if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */ && rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; return JSEqualNode.doIntBoolean(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[JSEqualNode.doLong(long, long)] */ && leftNodeValue instanceof Long) { long leftNodeValue_ = (long) leftNodeValue; if (rightNodeValue instanceof Long) { long rightNodeValue_ = (long) rightNodeValue; return JSEqualNode.doLong(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSEqualNode.doDouble(double, double)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue)) { double leftNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue); if (JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue)) { double rightNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue); return JSEqualNode.doDouble(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] */ && leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; return JSEqualNode.doBigInt(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0b1100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue)) { double leftNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue); if ((state_0 & 0b100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] */ && rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; { JSStringToNumberNode stringToDouble_ = this.stringToDouble; if (stringToDouble_ != null) { return JSEqualNode.doDoubleString(leftNodeValue_, rightNodeValue_, stringToDouble_); } } } if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; return JSEqualNode.doDoubleBoolean(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0b11110000000) != 0 /* is SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] || SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] || SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] || SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */ && leftNodeValue instanceof Boolean) { boolean leftNodeValue_ = (boolean) leftNodeValue; if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] */ && rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; return JSEqualNode.doBoolean(leftNodeValue_, rightNodeValue_); } if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] */ && rightNodeValue instanceof Integer) { int rightNodeValue_ = (int) rightNodeValue; return JSEqualNode.doBooleanInt(leftNodeValue_, rightNodeValue_); } if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue)) { double rightNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue); return JSEqualNode.doBooleanDouble(leftNodeValue_, rightNodeValue_); } if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */ && rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; { JSStringToNumberNode stringToDouble_1 = this.stringToDouble; if (stringToDouble_1 != null) { return JSEqualNode.doBooleanString(leftNodeValue_, rightNodeValue_, stringToDouble_1); } } } } if ((state_0 & 0b1111100000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] || SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] || SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] */ && leftNodeValue instanceof TruffleString) { TruffleString leftNodeValue_ = (TruffleString) leftNodeValue; if ((state_0 & 0b1100000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] || SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */ && rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; if ((state_0 & 0b100000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] */) { if ((JSGuards.isReferenceEquals(leftNodeValue_, rightNodeValue_))) { return JSEqualNode.doStringIdentity(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */) { { EqualNode equalsNode__ = this.string_equalsNode_; if (equalsNode__ != null) { return JSEqualNode.doString(leftNodeValue_, rightNodeValue_, equalsNode__); } } } } if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue)) { double rightNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue); { JSStringToNumberNode stringToDouble_2 = this.stringToDouble; if (stringToDouble_2 != null) { return JSEqualNode.doStringDouble(leftNodeValue_, rightNodeValue_, stringToDouble_2); } } } if ((state_0 & 0b100000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] */ && rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; { JSStringToNumberNode stringToDouble_3 = this.stringToDouble; if (stringToDouble_3 != null) { return JSEqualNode.doStringBoolean(leftNodeValue_, rightNodeValue_, stringToDouble_3); } } } if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] */ && rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; return JSEqualNode.doStringBigInt(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0x10000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] */ && leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; return JSEqualNode.doBigIntString(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0x20000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */ && leftNodeValue instanceof Boolean) { boolean leftNodeValue_ = (boolean) leftNodeValue; if (rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; return JSEqualNode.doBooleanBigInt(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0x40000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */ && leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; return JSEqualNode.doBigIntBoolean(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0x780000) != 0 /* is SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] || SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] */) { if ((state_0 & 0x80000) != 0 /* is SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] */) { if ((JSRuntime.isNullOrUndefined(leftNodeValue)) && (JSRuntime.isNullOrUndefined(rightNodeValue))) { return JSEqualNode.doBothNullOrUndefined(leftNodeValue, rightNodeValue); } } if ((state_0 & 0x100000) != 0 /* is SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] */) { { InteropLibrary bInterop_ = this.bInterop; if (bInterop_ != null) { if ((JSRuntime.isNullOrUndefined(leftNodeValue))) { return JSEqualNode.doLeftNullOrUndefined(leftNodeValue, rightNodeValue, bInterop_); } } } } if ((state_0 & 0x200000) != 0 /* is SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] */) { { InteropLibrary aInterop_ = this.aInterop; if (aInterop_ != null) { if ((JSRuntime.isNullOrUndefined(rightNodeValue))) { return JSEqualNode.doRightNullOrUndefined(leftNodeValue, rightNodeValue, aInterop_); } } } } if ((state_0 & 0x400000) != 0 /* is SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] */) { OverloadedData s22_ = this.overloaded_cache; if (s22_ != null) { if ((hasOverloadedOperators(leftNodeValue) || hasOverloadedOperators(rightNodeValue))) { Node node__ = (s22_); return JSEqualNode.doOverloaded(leftNodeValue, rightNodeValue, node__, s22_.overloadedOperatorNode_, INLINED_OVERLOADED_TO_BOOLEAN_NODE_); } } } } if ((state_0 & 0x800000) != 0 /* is SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] */ && leftNodeValue instanceof JSObject) { JSObject leftNodeValue_ = (JSObject) leftNodeValue; if (rightNodeValue instanceof JSDynamicObject) { JSDynamicObject rightNodeValue_ = (JSDynamicObject) rightNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_))) && (!(hasOverloadedOperators(rightNodeValue_)))) { return JSEqualNode.doJSObject(leftNodeValue_, rightNodeValue_); } } } if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] */ && leftNodeValue instanceof JSDynamicObject) { JSDynamicObject leftNodeValue_ = (JSDynamicObject) leftNodeValue; if (rightNodeValue instanceof JSObject) { JSObject rightNodeValue_ = (JSObject) rightNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_))) && (!(hasOverloadedOperators(rightNodeValue_)))) { return JSEqualNode.doJSObject(leftNodeValue_, rightNodeValue_); } } } if ((state_0 & 0x2000000) != 0 /* is SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] */ && leftNodeValue instanceof JSObject) { JSObject leftNodeValue_ = (JSObject) leftNodeValue; { InteropLibrary bInterop_1 = this.bInterop; if (bInterop_1 != null) { JSToPrimitiveNode toPrimitiveNode_ = this.toPrimitiveNode; if (toPrimitiveNode_ != null) { IsPrimitiveNode isPrimitiveNode_ = this.isPrimitiveNode; if (isPrimitiveNode_ != null) { JSEqualNode nestedEqualNode_ = this.nestedEqualNode; if (nestedEqualNode_ != null) { if ((!(hasOverloadedOperators(leftNodeValue_))) && (isPrimitiveNode_.executeBoolean(rightNodeValue))) { return JSEqualNode.doJSObjectVsPrimitive(leftNodeValue_, rightNodeValue, bInterop_1, toPrimitiveNode_, isPrimitiveNode_, nestedEqualNode_); } } } } } } } if ((state_0 & 0x8000000) != 0 /* is SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] */ && rightNodeValue instanceof JSObject) { JSObject rightNodeValue_ = (JSObject) rightNodeValue; { InteropLibrary aInterop_1 = this.aInterop; if (aInterop_1 != null) { JSToPrimitiveNode toPrimitiveNode_1 = this.toPrimitiveNode; if (toPrimitiveNode_1 != null) { IsPrimitiveNode isPrimitiveNode_1 = this.isPrimitiveNode; if (isPrimitiveNode_1 != null) { JSEqualNode nestedEqualNode_1 = this.nestedEqualNode; if (nestedEqualNode_1 != null) { if ((!(hasOverloadedOperators(rightNodeValue_))) && (isPrimitiveNode_1.executeBoolean(leftNodeValue))) { return JSEqualNode.doJSObjectVsPrimitive(leftNodeValue, rightNodeValue_, aInterop_1, toPrimitiveNode_1, isPrimitiveNode_1, nestedEqualNode_1); } } } } } } } if ((state_0 & 0x60000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] || SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */ && leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if ((state_0 & 0x20000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] */ && rightNodeValue instanceof Integer) { int rightNodeValue_ = (int) rightNodeValue; return JSEqualNode.doBigIntAndInt(leftNodeValue_, rightNodeValue_); } if ((state_0 & 0x40000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue)) { double rightNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue); return JSEqualNode.doBigIntAndNumber(leftNodeValue_, rightNodeValue_); } } if (((state_0 & 0x80000000) != 0 /* is SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */) && rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; if ((state_0 & 0x80000000) != 0 /* is SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ && leftNodeValue instanceof Integer) { int leftNodeValue_ = (int) leftNodeValue; return JSEqualNode.doIntAndBigInt(leftNodeValue_, rightNodeValue_); } if ((state_1 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue)) { double leftNodeValue_ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue); return JSEqualNode.doNumberAndBigInt(leftNodeValue_, rightNodeValue_); } } if ((state_1 & 0b110) != 0 /* is SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] || SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] */ && leftNodeValue instanceof Symbol) { Symbol leftNodeValue_ = (Symbol) leftNodeValue; if ((state_1 & 0b10) != 0 /* is SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] */ && rightNodeValue instanceof Symbol) { Symbol rightNodeValue_ = (Symbol) rightNodeValue; return JSEqualNode.doSymbol(leftNodeValue_, rightNodeValue_); } if ((state_1 & 0b100) != 0 /* is SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] */) { { IsObjectNode isObjectNode_ = this.isObjectNode; if (isObjectNode_ != null) { if ((!(JSGuards.isSymbol(rightNodeValue))) && (!(isObjectNode_.executeBoolean(rightNodeValue)))) { return JSEqualNode.doSymbolNotSymbol(leftNodeValue_, rightNodeValue, isObjectNode_); } } } } } if ((state_1 & 0b11010000) != 0 /* is SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] || SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] || SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) { if ((state_1 & 0b10000) != 0 /* is SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] */ && rightNodeValue instanceof Symbol) { Symbol rightNodeValue_ = (Symbol) rightNodeValue; { IsObjectNode isObjectNode_1 = this.isObjectNode; if (isObjectNode_1 != null) { if ((!(JSGuards.isSymbol(leftNodeValue))) && (!(isObjectNode_1.executeBoolean(leftNodeValue)))) { return JSEqualNode.doSymbolNotSymbol(leftNodeValue, rightNodeValue_, isObjectNode_1); } } } } if ((state_1 & 0b11000000) != 0 /* is SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] || SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) { if ((state_1 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] */) { { InteropLibrary aInterop_2 = this.aInterop; if (aInterop_2 != null) { InteropLibrary bInterop_2 = this.bInterop; if (bInterop_2 != null) { JSToPrimitiveNode toPrimitiveNode_2 = this.toPrimitiveNode; if (toPrimitiveNode_2 != null) { IsPrimitiveNode isPrimitiveNode_2 = this.isPrimitiveNode; if (isPrimitiveNode_2 != null) { JSEqualNode nestedEqualNode_2 = this.nestedEqualNode; if (nestedEqualNode_2 != null) { boolean isAForeign__ = (JSGuards.isForeignObjectOrNumber(leftNodeValue)); boolean isBForeign__ = (JSGuards.isForeignObjectOrNumber(rightNodeValue)); if ((isAForeign__ || isBForeign__)) { return doForeign(leftNodeValue, rightNodeValue, isAForeign__, isBForeign__, aInterop_2, bInterop_2, toPrimitiveNode_2, isPrimitiveNode_2, nestedEqualNode_2, INLINED_FOREIGN_LONG_TO_BIG_INT_A_, INLINED_FOREIGN_LONG_TO_BIG_INT_B_); } } } } } } } } if ((state_1 & 0b10000000) != 0 /* is SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) { if (fallbackGuard_(state_0, state_1, leftNodeValue, rightNodeValue)) { return JSEqualNode.doFallback(leftNodeValue, rightNodeValue); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue, rightNodeValue); } @Override public boolean executeBoolean(VirtualFrame frameValue) { int state_0 = this.state_0_; int state_1 = this.state_1_; if ((state_0 & 0xebfffffe) == 0 /* only-active SpecializationActive[JSEqualNode.doInt(int, int)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_int_int0(state_0, state_1, frameValue); } else if ((state_0 & 0xebfffffd) == 0 /* only-active SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_int_boolean1(state_0, state_1, frameValue); } else if ((state_0 & 0xebfffff7) == 0 /* only-active SpecializationActive[JSEqualNode.doDouble(double, double)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_double_double2(state_0, state_1, frameValue); } else if ((state_0 & 0xebffffbf) == 0 /* only-active SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_double_boolean3(state_0, state_1, frameValue); } else if ((state_0 & 0xebffff7f) == 0 /* only-active SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_boolean_boolean4(state_0, state_1, frameValue); } else if ((state_0 & 0xebfffeff) == 0 /* only-active SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_boolean_int5(state_0, state_1, frameValue); } else if ((state_0 & 0xebfffdff) == 0 /* only-active SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_boolean_double6(state_0, state_1, frameValue); } else if ((state_0 & 0xebffff9f) == 0 /* only-active SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && (state_1 & 0b11010110) == 0 /* only-active SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_double7(state_0, state_1, frameValue); } else if ((state_0 & 0xebfdfbff) == 0 /* only-active SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_boolean8(state_0, state_1, frameValue); } else if ((state_0 & 0xabffdfff) == 0 /* only-active SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_double9(state_0, state_1, frameValue); } else if ((state_0 & 0xebfbbfff) == 0 /* only-active SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_boolean10(state_0, state_1, frameValue); } else if ((state_0 & 0xcbffffff) == 0 /* only-active SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_int11(state_0, state_1, frameValue); } else if ((state_0 & 0x6bffffff) == 0 /* only-active SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ && (state_1 & 0b11010111) == 0 /* only-active */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { return executeBoolean_int12(state_0, state_1, frameValue); } else { return executeBoolean_generic13(state_0, state_1, frameValue); } } private boolean executeBoolean_int_int0(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; int leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } int rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } assert (state_0 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] */; return JSEqualNode.doInt(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_int_boolean1(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; int leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } boolean rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } assert (state_0 & 0b10) != 0 /* is SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */; return JSEqualNode.doIntBoolean(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_double_double2(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; int leftNodeValue_int = 0; double leftNodeValue_; try { if ((state_1 & 0b11000000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { leftNodeValue_ = super.leftNode.executeDouble(frameValue); } else if ((state_1 & 0b10100000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { leftNodeValue_int = super.leftNode.executeInt(frameValue); leftNodeValue_ = JSTypes.intToDouble(leftNodeValue_int); } else { Object leftNodeValue__ = super.leftNode.execute(frameValue); leftNodeValue_ = JSTypesGen.expectImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } int rightNodeValue_int = 0; double rightNodeValue_; try { if ((state_1 & 0b11000000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { rightNodeValue_ = super.rightNode.executeDouble(frameValue); } else if ((state_1 & 0b10100000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { rightNodeValue_int = super.rightNode.executeInt(frameValue); rightNodeValue_ = JSTypes.intToDouble(rightNodeValue_int); } else { Object rightNodeValue__ = super.rightNode.execute(frameValue); rightNodeValue_ = JSTypesGen.expectImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(((state_1 & 0b10100000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) ? (Object) leftNodeValue_int : (Object) leftNodeValue_), ex.getResult()); } assert (state_0 & 0b1000) != 0 /* is SpecializationActive[JSEqualNode.doDouble(double, double)] */; return JSEqualNode.doDouble(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_double_boolean3(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; int leftNodeValue_int = 0; double leftNodeValue_; try { if ((state_1 & 0b11000000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { leftNodeValue_ = super.leftNode.executeDouble(frameValue); } else if ((state_1 & 0b10100000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { leftNodeValue_int = super.leftNode.executeInt(frameValue); leftNodeValue_ = JSTypes.intToDouble(leftNodeValue_int); } else { Object leftNodeValue__ = super.leftNode.execute(frameValue); leftNodeValue_ = JSTypesGen.expectImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } boolean rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(((state_1 & 0b10100000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) ? (Object) leftNodeValue_int : (Object) leftNodeValue_), ex.getResult()); } assert (state_0 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */; return JSEqualNode.doDoubleBoolean(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_boolean_boolean4(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; boolean leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } boolean rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } assert (state_0 & 0b10000000) != 0 /* is SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] */; return JSEqualNode.doBoolean(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_boolean_int5(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; boolean leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } int rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } assert (state_0 & 0b100000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] */; return JSEqualNode.doBooleanInt(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_boolean_double6(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; boolean leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } int rightNodeValue_int = 0; double rightNodeValue_; try { if ((state_1 & 0b11000000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { rightNodeValue_ = super.rightNode.executeDouble(frameValue); } else if ((state_1 & 0b10100000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { rightNodeValue_int = super.rightNode.executeInt(frameValue); rightNodeValue_ = JSTypes.intToDouble(rightNodeValue_int); } else { Object rightNodeValue__ = super.rightNode.execute(frameValue); rightNodeValue_ = JSTypesGen.expectImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } assert (state_0 & 0b1000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] */; return JSEqualNode.doBooleanDouble(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_double7(int state_0__, int state_1__, VirtualFrame frameValue) { int state_0 = state_0__; int state_1 = state_1__; int leftNodeValue_int = 0; double leftNodeValue_; try { if ((state_1 & 0b11000000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { leftNodeValue_ = super.leftNode.executeDouble(frameValue); } else if ((state_1 & 0b10100000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { leftNodeValue_int = super.leftNode.executeInt(frameValue); leftNodeValue_ = JSTypes.intToDouble(leftNodeValue_int); } else { Object leftNodeValue__ = super.leftNode.execute(frameValue); leftNodeValue_ = JSTypesGen.expectImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } Object rightNodeValue_ = super.rightNode.execute(frameValue); if (((state_0 & 0b1100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ || (state_1 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */)) { if ((state_0 & 0b100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] */ && rightNodeValue_ instanceof TruffleString) { TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_; { JSStringToNumberNode stringToDouble_ = this.stringToDouble; if (stringToDouble_ != null) { return JSEqualNode.doDoubleString(leftNodeValue_, rightNodeValue__, stringToDouble_); } } } if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && rightNodeValue_ instanceof Boolean) { boolean rightNodeValue__ = (boolean) rightNodeValue_; return JSEqualNode.doDoubleBoolean(leftNodeValue_, rightNodeValue__); } if ((state_1 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */ && rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; return JSEqualNode.doNumberAndBigInt(leftNodeValue_, rightNodeValue__); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(((state_1 & 0b10100000000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) ? (Object) leftNodeValue_int : (Object) leftNodeValue_), rightNodeValue_); } private boolean executeBoolean_boolean8(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; boolean leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } Object rightNodeValue_ = super.rightNode.execute(frameValue); if ((state_0 & 0x20400) != 0 /* is SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */) { if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */ && rightNodeValue_ instanceof TruffleString) { TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_; { JSStringToNumberNode stringToDouble_1 = this.stringToDouble; if (stringToDouble_1 != null) { return JSEqualNode.doBooleanString(leftNodeValue_, rightNodeValue__, stringToDouble_1); } } } if ((state_0 & 0x20000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */ && rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; return JSEqualNode.doBooleanBigInt(leftNodeValue_, rightNodeValue__); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_double9(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; Object leftNodeValue_ = super.leftNode.execute(frameValue); int rightNodeValue_int = 0; double rightNodeValue_; try { if ((state_1 & 0b11000000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { rightNodeValue_ = super.rightNode.executeDouble(frameValue); } else if ((state_1 & 0b10100000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { rightNodeValue_int = super.rightNode.executeInt(frameValue); rightNodeValue_ = JSTypes.intToDouble(rightNodeValue_int); } else { Object rightNodeValue__ = super.rightNode.execute(frameValue); rightNodeValue_ = JSTypesGen.expectImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue__); } } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } if ((state_0 & 0x40002000) != 0 /* is SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */) { if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] */ && leftNodeValue_ instanceof TruffleString) { TruffleString leftNodeValue__ = (TruffleString) leftNodeValue_; { JSStringToNumberNode stringToDouble_2 = this.stringToDouble; if (stringToDouble_2 != null) { return JSEqualNode.doStringDouble(leftNodeValue__, rightNodeValue_, stringToDouble_2); } } } if ((state_0 & 0x40000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */ && leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; return JSEqualNode.doBigIntAndNumber(leftNodeValue__, rightNodeValue_); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ((state_1 & 0b10100000000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xebffffff) != 0 /* is-not SpecializationActive[JSEqualNode.doInt(int, int)] && SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] && SpecializationActive[JSEqualNode.doLong(long, long)] && SpecializationActive[JSEqualNode.doDouble(double, double)] && SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] && SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] && SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] && SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] && SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] && SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] && SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] && SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] && SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] && SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] && SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] && SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] && SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] && SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] && SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] && SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] && SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] && SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] && SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is-not SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] && SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] && SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] && SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] && SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) ? (Object) rightNodeValue_int : (Object) rightNodeValue_)); } private boolean executeBoolean_boolean10(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; Object leftNodeValue_ = super.leftNode.execute(frameValue); boolean rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeBoolean(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } if ((state_0 & 0x44000) != 0 /* is SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */) { if ((state_0 & 0b100000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] */ && leftNodeValue_ instanceof TruffleString) { TruffleString leftNodeValue__ = (TruffleString) leftNodeValue_; { JSStringToNumberNode stringToDouble_3 = this.stringToDouble; if (stringToDouble_3 != null) { return JSEqualNode.doStringBoolean(leftNodeValue__, rightNodeValue_, stringToDouble_3); } } } if ((state_0 & 0x40000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */ && leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; return JSEqualNode.doBigIntBoolean(leftNodeValue__, rightNodeValue_); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_int11(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; Object leftNodeValue_ = super.leftNode.execute(frameValue); int rightNodeValue_; try { rightNodeValue_ = super.rightNode.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, ex.getResult()); } assert (state_0 & 0x20000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] */; if (leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; return JSEqualNode.doBigIntAndInt(leftNodeValue__, rightNodeValue_); } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_int12(int state_0__, int state_1, VirtualFrame frameValue) { int state_0 = state_0__; int leftNodeValue_; try { leftNodeValue_ = super.leftNode.executeInt(frameValue); } catch (UnexpectedResultException ex) { CompilerDirectives.transferToInterpreterAndInvalidate(); Object rightNodeValue = super.rightNode.execute(frameValue); return executeAndSpecialize(ex.getResult(), rightNodeValue); } Object rightNodeValue_ = super.rightNode.execute(frameValue); assert (state_0 & 0x80000000) != 0 /* is SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */; if (rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; return JSEqualNode.doIntAndBigInt(leftNodeValue_, rightNodeValue__); } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, rightNodeValue_); } private boolean executeBoolean_generic13(int state_0__, int state_1__, VirtualFrame frameValue) { int state_0 = state_0__; int state_1 = state_1__; Object leftNodeValue_ = super.leftNode.execute(frameValue); Object rightNodeValue_ = super.rightNode.execute(frameValue); if (((state_0 & 0xebffffff) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] || SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] || SpecializationActive[JSEqualNode.doLong(long, long)] || SpecializationActive[JSEqualNode.doDouble(double, double)] || SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] || SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] || SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] || SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] || SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] || SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] || SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] || SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] || SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] || SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] || SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] || SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] || SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] || SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] || SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] || SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] || SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] || SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] || SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] || SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b11010111) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] || SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] || SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] || SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] || SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] || SpecializationActive[JSEqualNode.doFallback(Object, Object)] */)) { if ((state_0 & 0b11) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] || SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */ && leftNodeValue_ instanceof Integer) { int leftNodeValue__ = (int) leftNodeValue_; if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doInt(int, int)] */ && rightNodeValue_ instanceof Integer) { int rightNodeValue__ = (int) rightNodeValue_; return JSEqualNode.doInt(leftNodeValue__, rightNodeValue__); } if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */ && rightNodeValue_ instanceof Boolean) { boolean rightNodeValue__ = (boolean) rightNodeValue_; return JSEqualNode.doIntBoolean(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[JSEqualNode.doLong(long, long)] */ && leftNodeValue_ instanceof Long) { long leftNodeValue__ = (long) leftNodeValue_; if (rightNodeValue_ instanceof Long) { long rightNodeValue__ = (long) rightNodeValue_; return JSEqualNode.doLong(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSEqualNode.doDouble(double, double)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_)) { double leftNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_); if (JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_)) { double rightNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_); return JSEqualNode.doDouble(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] */ && leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; if (rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; return JSEqualNode.doBigInt(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0b1100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_)) { double leftNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_); if ((state_0 & 0b100000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] */ && rightNodeValue_ instanceof TruffleString) { TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_; { JSStringToNumberNode stringToDouble_ = this.stringToDouble; if (stringToDouble_ != null) { return JSEqualNode.doDoubleString(leftNodeValue__, rightNodeValue__, stringToDouble_); } } } if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */ && rightNodeValue_ instanceof Boolean) { boolean rightNodeValue__ = (boolean) rightNodeValue_; return JSEqualNode.doDoubleBoolean(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0b11110000000) != 0 /* is SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] || SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] || SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] || SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */ && leftNodeValue_ instanceof Boolean) { boolean leftNodeValue__ = (boolean) leftNodeValue_; if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] */ && rightNodeValue_ instanceof Boolean) { boolean rightNodeValue__ = (boolean) rightNodeValue_; return JSEqualNode.doBoolean(leftNodeValue__, rightNodeValue__); } if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] */ && rightNodeValue_ instanceof Integer) { int rightNodeValue__ = (int) rightNodeValue_; return JSEqualNode.doBooleanInt(leftNodeValue__, rightNodeValue__); } if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_)) { double rightNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_); return JSEqualNode.doBooleanDouble(leftNodeValue__, rightNodeValue__); } if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */ && rightNodeValue_ instanceof TruffleString) { TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_; { JSStringToNumberNode stringToDouble_1 = this.stringToDouble; if (stringToDouble_1 != null) { return JSEqualNode.doBooleanString(leftNodeValue__, rightNodeValue__, stringToDouble_1); } } } } if ((state_0 & 0b1111100000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] || SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] || SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] || SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] */ && leftNodeValue_ instanceof TruffleString) { TruffleString leftNodeValue__ = (TruffleString) leftNodeValue_; if ((state_0 & 0b1100000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] || SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */ && rightNodeValue_ instanceof TruffleString) { TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_; if ((state_0 & 0b100000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] */) { if ((JSGuards.isReferenceEquals(leftNodeValue__, rightNodeValue__))) { return JSEqualNode.doStringIdentity(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */) { { EqualNode equalsNode__ = this.string_equalsNode_; if (equalsNode__ != null) { return JSEqualNode.doString(leftNodeValue__, rightNodeValue__, equalsNode__); } } } } if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_)) { double rightNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_); { JSStringToNumberNode stringToDouble_2 = this.stringToDouble; if (stringToDouble_2 != null) { return JSEqualNode.doStringDouble(leftNodeValue__, rightNodeValue__, stringToDouble_2); } } } if ((state_0 & 0b100000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] */ && rightNodeValue_ instanceof Boolean) { boolean rightNodeValue__ = (boolean) rightNodeValue_; { JSStringToNumberNode stringToDouble_3 = this.stringToDouble; if (stringToDouble_3 != null) { return JSEqualNode.doStringBoolean(leftNodeValue__, rightNodeValue__, stringToDouble_3); } } } if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] */ && rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; return JSEqualNode.doStringBigInt(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0x10000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] */ && leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; if (rightNodeValue_ instanceof TruffleString) { TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_; return JSEqualNode.doBigIntString(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0x20000) != 0 /* is SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */ && leftNodeValue_ instanceof Boolean) { boolean leftNodeValue__ = (boolean) leftNodeValue_; if (rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; return JSEqualNode.doBooleanBigInt(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0x40000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */ && leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; if (rightNodeValue_ instanceof Boolean) { boolean rightNodeValue__ = (boolean) rightNodeValue_; return JSEqualNode.doBigIntBoolean(leftNodeValue__, rightNodeValue__); } } if ((state_0 & 0x780000) != 0 /* is SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] || SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] || SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] */) { if ((state_0 & 0x80000) != 0 /* is SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] */) { if ((JSRuntime.isNullOrUndefined(leftNodeValue_)) && (JSRuntime.isNullOrUndefined(rightNodeValue_))) { return JSEqualNode.doBothNullOrUndefined(leftNodeValue_, rightNodeValue_); } } if ((state_0 & 0x100000) != 0 /* is SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] */) { { InteropLibrary bInterop_ = this.bInterop; if (bInterop_ != null) { if ((JSRuntime.isNullOrUndefined(leftNodeValue_))) { return JSEqualNode.doLeftNullOrUndefined(leftNodeValue_, rightNodeValue_, bInterop_); } } } } if ((state_0 & 0x200000) != 0 /* is SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] */) { { InteropLibrary aInterop_ = this.aInterop; if (aInterop_ != null) { if ((JSRuntime.isNullOrUndefined(rightNodeValue_))) { return JSEqualNode.doRightNullOrUndefined(leftNodeValue_, rightNodeValue_, aInterop_); } } } } if ((state_0 & 0x400000) != 0 /* is SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] */) { OverloadedData s22_ = this.overloaded_cache; if (s22_ != null) { if ((hasOverloadedOperators(leftNodeValue_) || hasOverloadedOperators(rightNodeValue_))) { Node node__ = (s22_); return JSEqualNode.doOverloaded(leftNodeValue_, rightNodeValue_, node__, s22_.overloadedOperatorNode_, INLINED_OVERLOADED_TO_BOOLEAN_NODE_); } } } } if ((state_0 & 0x800000) != 0 /* is SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] */ && leftNodeValue_ instanceof JSObject) { JSObject leftNodeValue__ = (JSObject) leftNodeValue_; if (rightNodeValue_ instanceof JSDynamicObject) { JSDynamicObject rightNodeValue__ = (JSDynamicObject) rightNodeValue_; if ((!(hasOverloadedOperators(leftNodeValue__))) && (!(hasOverloadedOperators(rightNodeValue__)))) { return JSEqualNode.doJSObject(leftNodeValue__, rightNodeValue__); } } } if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] */ && leftNodeValue_ instanceof JSDynamicObject) { JSDynamicObject leftNodeValue__ = (JSDynamicObject) leftNodeValue_; if (rightNodeValue_ instanceof JSObject) { JSObject rightNodeValue__ = (JSObject) rightNodeValue_; if ((!(hasOverloadedOperators(leftNodeValue__))) && (!(hasOverloadedOperators(rightNodeValue__)))) { return JSEqualNode.doJSObject(leftNodeValue__, rightNodeValue__); } } } if ((state_0 & 0x2000000) != 0 /* is SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] */ && leftNodeValue_ instanceof JSObject) { JSObject leftNodeValue__ = (JSObject) leftNodeValue_; { InteropLibrary bInterop_1 = this.bInterop; if (bInterop_1 != null) { JSToPrimitiveNode toPrimitiveNode_ = this.toPrimitiveNode; if (toPrimitiveNode_ != null) { IsPrimitiveNode isPrimitiveNode_ = this.isPrimitiveNode; if (isPrimitiveNode_ != null) { JSEqualNode nestedEqualNode_ = this.nestedEqualNode; if (nestedEqualNode_ != null) { if ((!(hasOverloadedOperators(leftNodeValue__))) && (isPrimitiveNode_.executeBoolean(rightNodeValue_))) { return JSEqualNode.doJSObjectVsPrimitive(leftNodeValue__, rightNodeValue_, bInterop_1, toPrimitiveNode_, isPrimitiveNode_, nestedEqualNode_); } } } } } } } if ((state_0 & 0x8000000) != 0 /* is SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] */ && rightNodeValue_ instanceof JSObject) { JSObject rightNodeValue__ = (JSObject) rightNodeValue_; { InteropLibrary aInterop_1 = this.aInterop; if (aInterop_1 != null) { JSToPrimitiveNode toPrimitiveNode_1 = this.toPrimitiveNode; if (toPrimitiveNode_1 != null) { IsPrimitiveNode isPrimitiveNode_1 = this.isPrimitiveNode; if (isPrimitiveNode_1 != null) { JSEqualNode nestedEqualNode_1 = this.nestedEqualNode; if (nestedEqualNode_1 != null) { if ((!(hasOverloadedOperators(rightNodeValue__))) && (isPrimitiveNode_1.executeBoolean(leftNodeValue_))) { return JSEqualNode.doJSObjectVsPrimitive(leftNodeValue_, rightNodeValue__, aInterop_1, toPrimitiveNode_1, isPrimitiveNode_1, nestedEqualNode_1); } } } } } } } if ((state_0 & 0x60000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] || SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */ && leftNodeValue_ instanceof BigInt) { BigInt leftNodeValue__ = (BigInt) leftNodeValue_; if ((state_0 & 0x20000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] */ && rightNodeValue_ instanceof Integer) { int rightNodeValue__ = (int) rightNodeValue_; return JSEqualNode.doBigIntAndInt(leftNodeValue__, rightNodeValue__); } if ((state_0 & 0x40000000) != 0 /* is SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_)) { double rightNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000000) >>> 11 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_); return JSEqualNode.doBigIntAndNumber(leftNodeValue__, rightNodeValue__); } } if (((state_0 & 0x80000000) != 0 /* is SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ || (state_1 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */) && rightNodeValue_ instanceof BigInt) { BigInt rightNodeValue__ = (BigInt) rightNodeValue_; if ((state_0 & 0x80000000) != 0 /* is SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */ && leftNodeValue_ instanceof Integer) { int leftNodeValue__ = (int) leftNodeValue_; return JSEqualNode.doIntAndBigInt(leftNodeValue__, rightNodeValue__); } if ((state_1 & 0b1) != 0 /* is SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */ && JSTypesGen.isImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_)) { double leftNodeValue__ = JSTypesGen.asImplicitDouble((state_1 & 0b11100000000) >>> 8 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_); return JSEqualNode.doNumberAndBigInt(leftNodeValue__, rightNodeValue__); } } if ((state_1 & 0b110) != 0 /* is SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] || SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] */ && leftNodeValue_ instanceof Symbol) { Symbol leftNodeValue__ = (Symbol) leftNodeValue_; if ((state_1 & 0b10) != 0 /* is SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] */ && rightNodeValue_ instanceof Symbol) { Symbol rightNodeValue__ = (Symbol) rightNodeValue_; return JSEqualNode.doSymbol(leftNodeValue__, rightNodeValue__); } if ((state_1 & 0b100) != 0 /* is SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] */) { { IsObjectNode isObjectNode_ = this.isObjectNode; if (isObjectNode_ != null) { if ((!(JSGuards.isSymbol(rightNodeValue_))) && (!(isObjectNode_.executeBoolean(rightNodeValue_)))) { return JSEqualNode.doSymbolNotSymbol(leftNodeValue__, rightNodeValue_, isObjectNode_); } } } } } if ((state_1 & 0b11010000) != 0 /* is SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] || SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] || SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) { if ((state_1 & 0b10000) != 0 /* is SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] */ && rightNodeValue_ instanceof Symbol) { Symbol rightNodeValue__ = (Symbol) rightNodeValue_; { IsObjectNode isObjectNode_1 = this.isObjectNode; if (isObjectNode_1 != null) { if ((!(JSGuards.isSymbol(leftNodeValue_))) && (!(isObjectNode_1.executeBoolean(leftNodeValue_)))) { return JSEqualNode.doSymbolNotSymbol(leftNodeValue_, rightNodeValue__, isObjectNode_1); } } } } if ((state_1 & 0b11000000) != 0 /* is SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] || SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) { if ((state_1 & 0b1000000) != 0 /* is SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] */) { { InteropLibrary aInterop_2 = this.aInterop; if (aInterop_2 != null) { InteropLibrary bInterop_2 = this.bInterop; if (bInterop_2 != null) { JSToPrimitiveNode toPrimitiveNode_2 = this.toPrimitiveNode; if (toPrimitiveNode_2 != null) { IsPrimitiveNode isPrimitiveNode_2 = this.isPrimitiveNode; if (isPrimitiveNode_2 != null) { JSEqualNode nestedEqualNode_2 = this.nestedEqualNode; if (nestedEqualNode_2 != null) { boolean isAForeign__ = (JSGuards.isForeignObjectOrNumber(leftNodeValue_)); boolean isBForeign__ = (JSGuards.isForeignObjectOrNumber(rightNodeValue_)); if ((isAForeign__ || isBForeign__)) { return doForeign(leftNodeValue_, rightNodeValue_, isAForeign__, isBForeign__, aInterop_2, bInterop_2, toPrimitiveNode_2, isPrimitiveNode_2, nestedEqualNode_2, INLINED_FOREIGN_LONG_TO_BIG_INT_A_, INLINED_FOREIGN_LONG_TO_BIG_INT_B_); } } } } } } } } if ((state_1 & 0b10000000) != 0 /* is SpecializationActive[JSEqualNode.doFallback(Object, Object)] */) { if (fallbackGuard_(state_0, state_1, leftNodeValue_, rightNodeValue_)) { return JSEqualNode.doFallback(leftNodeValue_, rightNodeValue_); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(leftNodeValue_, rightNodeValue_); } @Override public void executeVoid(VirtualFrame frameValue) { executeBoolean(frameValue); return; } private boolean executeAndSpecialize(Object leftNodeValue, Object rightNodeValue) { int state_0 = this.state_0_; int state_1 = this.state_1_; if (leftNodeValue instanceof Integer) { int leftNodeValue_ = (int) leftNodeValue; if (rightNodeValue instanceof Integer) { int rightNodeValue_ = (int) rightNodeValue; state_0 = state_0 | 0b1 /* add SpecializationActive[JSEqualNode.doInt(int, int)] */; this.state_0_ = state_0; return JSEqualNode.doInt(leftNodeValue_, rightNodeValue_); } if (rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; state_0 = state_0 | 0b10 /* add SpecializationActive[JSEqualNode.doIntBoolean(int, boolean)] */; this.state_0_ = state_0; return JSEqualNode.doIntBoolean(leftNodeValue_, rightNodeValue_); } } if (leftNodeValue instanceof Long) { long leftNodeValue_ = (long) leftNodeValue; if (rightNodeValue instanceof Long) { long rightNodeValue_ = (long) rightNodeValue; state_0 = state_0 | 0b100 /* add SpecializationActive[JSEqualNode.doLong(long, long)] */; this.state_0_ = state_0; return JSEqualNode.doLong(leftNodeValue_, rightNodeValue_); } } { int doubleCast0; if ((doubleCast0 = JSTypesGen.specializeImplicitDouble(leftNodeValue)) != 0) { double leftNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast0, leftNodeValue); int doubleCast1; if ((doubleCast1 = JSTypesGen.specializeImplicitDouble(rightNodeValue)) != 0) { double rightNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast1, rightNodeValue); state_1 = (state_1 | (doubleCast0 << 8) /* set-int ImplicitCast[type=double, index=0] */); state_1 = (state_1 | (doubleCast1 << 11) /* set-int ImplicitCast[type=double, index=1] */); state_0 = state_0 | 0b1000 /* add SpecializationActive[JSEqualNode.doDouble(double, double)] */; this.state_1_ = state_1; this.state_0_ = state_0; return JSEqualNode.doDouble(leftNodeValue_, rightNodeValue_); } } } if (leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; state_0 = state_0 | 0b10000 /* add SpecializationActive[JSEqualNode.doBigInt(BigInt, BigInt)] */; this.state_0_ = state_0; return JSEqualNode.doBigInt(leftNodeValue_, rightNodeValue_); } } { int doubleCast0; if ((doubleCast0 = JSTypesGen.specializeImplicitDouble(leftNodeValue)) != 0) { double leftNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast0, leftNodeValue); if (rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; JSStringToNumberNode stringToDouble_; JSStringToNumberNode stringToDouble__shared = this.stringToDouble; if (stringToDouble__shared != null) { stringToDouble_ = stringToDouble__shared; } else { stringToDouble_ = this.insert((JSStringToNumberNode.create())); if (stringToDouble_ == 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.stringToDouble == null) { VarHandle.storeStoreFence(); this.stringToDouble = stringToDouble_; } state_1 = (state_1 | (doubleCast0 << 8) /* set-int ImplicitCast[type=double, index=0] */); state_0 = state_0 | 0b100000 /* add SpecializationActive[JSEqualNode.doDoubleString(double, TruffleString, JSStringToNumberNode)] */; this.state_1_ = state_1; this.state_0_ = state_0; return JSEqualNode.doDoubleString(leftNodeValue_, rightNodeValue_, stringToDouble_); } if (rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; state_1 = (state_1 | (doubleCast0 << 8) /* set-int ImplicitCast[type=double, index=0] */); state_0 = state_0 | 0b1000000 /* add SpecializationActive[JSEqualNode.doDoubleBoolean(double, boolean)] */; this.state_1_ = state_1; this.state_0_ = state_0; return JSEqualNode.doDoubleBoolean(leftNodeValue_, rightNodeValue_); } } } if (leftNodeValue instanceof Boolean) { boolean leftNodeValue_ = (boolean) leftNodeValue; if (rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; state_0 = state_0 | 0b10000000 /* add SpecializationActive[JSEqualNode.doBoolean(boolean, boolean)] */; this.state_0_ = state_0; return JSEqualNode.doBoolean(leftNodeValue_, rightNodeValue_); } if (rightNodeValue instanceof Integer) { int rightNodeValue_ = (int) rightNodeValue; state_0 = state_0 | 0b100000000 /* add SpecializationActive[JSEqualNode.doBooleanInt(boolean, int)] */; this.state_0_ = state_0; return JSEqualNode.doBooleanInt(leftNodeValue_, rightNodeValue_); } { int doubleCast1; if ((doubleCast1 = JSTypesGen.specializeImplicitDouble(rightNodeValue)) != 0) { double rightNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast1, rightNodeValue); state_1 = (state_1 | (doubleCast1 << 11) /* set-int ImplicitCast[type=double, index=1] */); state_0 = state_0 | 0b1000000000 /* add SpecializationActive[JSEqualNode.doBooleanDouble(boolean, double)] */; this.state_1_ = state_1; this.state_0_ = state_0; return JSEqualNode.doBooleanDouble(leftNodeValue_, rightNodeValue_); } } if (rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; JSStringToNumberNode stringToDouble_1; JSStringToNumberNode stringToDouble_1_shared = this.stringToDouble; if (stringToDouble_1_shared != null) { stringToDouble_1 = stringToDouble_1_shared; } else { stringToDouble_1 = this.insert((JSStringToNumberNode.create())); if (stringToDouble_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.stringToDouble == null) { VarHandle.storeStoreFence(); this.stringToDouble = stringToDouble_1; } state_0 = state_0 | 0b10000000000 /* add SpecializationActive[JSEqualNode.doBooleanString(boolean, TruffleString, JSStringToNumberNode)] */; this.state_0_ = state_0; return JSEqualNode.doBooleanString(leftNodeValue_, rightNodeValue_, stringToDouble_1); } } if (leftNodeValue instanceof TruffleString) { TruffleString leftNodeValue_ = (TruffleString) leftNodeValue; if (rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */) { if ((JSGuards.isReferenceEquals(leftNodeValue_, rightNodeValue_))) { state_0 = state_0 | 0b100000000000 /* add SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] */; this.state_0_ = state_0; return JSEqualNode.doStringIdentity(leftNodeValue_, rightNodeValue_); } } EqualNode equalsNode__ = this.insert((EqualNode.create())); Objects.requireNonNull(equalsNode__, "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.string_equalsNode_ = equalsNode__; state_0 = state_0 & 0xfffff7ff /* remove SpecializationActive[JSEqualNode.doStringIdentity(TruffleString, TruffleString)] */; state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[JSEqualNode.doString(TruffleString, TruffleString, EqualNode)] */; this.state_0_ = state_0; return JSEqualNode.doString(leftNodeValue_, rightNodeValue_, equalsNode__); } { int doubleCast1; if ((doubleCast1 = JSTypesGen.specializeImplicitDouble(rightNodeValue)) != 0) { double rightNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast1, rightNodeValue); JSStringToNumberNode stringToDouble_2; JSStringToNumberNode stringToDouble_2_shared = this.stringToDouble; if (stringToDouble_2_shared != null) { stringToDouble_2 = stringToDouble_2_shared; } else { stringToDouble_2 = this.insert((JSStringToNumberNode.create())); if (stringToDouble_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.stringToDouble == null) { VarHandle.storeStoreFence(); this.stringToDouble = stringToDouble_2; } state_1 = (state_1 | (doubleCast1 << 11) /* set-int ImplicitCast[type=double, index=1] */); state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[JSEqualNode.doStringDouble(TruffleString, double, JSStringToNumberNode)] */; this.state_1_ = state_1; this.state_0_ = state_0; return JSEqualNode.doStringDouble(leftNodeValue_, rightNodeValue_, stringToDouble_2); } } if (rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; JSStringToNumberNode stringToDouble_3; JSStringToNumberNode stringToDouble_3_shared = this.stringToDouble; if (stringToDouble_3_shared != null) { stringToDouble_3 = stringToDouble_3_shared; } else { stringToDouble_3 = this.insert((JSStringToNumberNode.create())); if (stringToDouble_3 == 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.stringToDouble == null) { VarHandle.storeStoreFence(); this.stringToDouble = stringToDouble_3; } state_0 = state_0 | 0b100000000000000 /* add SpecializationActive[JSEqualNode.doStringBoolean(TruffleString, boolean, JSStringToNumberNode)] */; this.state_0_ = state_0; return JSEqualNode.doStringBoolean(leftNodeValue_, rightNodeValue_, stringToDouble_3); } if (rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[JSEqualNode.doStringBigInt(TruffleString, BigInt)] */; this.state_0_ = state_0; return JSEqualNode.doStringBigInt(leftNodeValue_, rightNodeValue_); } } if (leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof TruffleString) { TruffleString rightNodeValue_ = (TruffleString) rightNodeValue; state_0 = state_0 | 0x10000 /* add SpecializationActive[JSEqualNode.doBigIntString(BigInt, TruffleString)] */; this.state_0_ = state_0; return JSEqualNode.doBigIntString(leftNodeValue_, rightNodeValue_); } } if (leftNodeValue instanceof Boolean) { boolean leftNodeValue_ = (boolean) leftNodeValue; if (rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; state_0 = state_0 | 0x20000 /* add SpecializationActive[JSEqualNode.doBooleanBigInt(boolean, BigInt)] */; this.state_0_ = state_0; return JSEqualNode.doBooleanBigInt(leftNodeValue_, rightNodeValue_); } } if (leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof Boolean) { boolean rightNodeValue_ = (boolean) rightNodeValue; state_0 = state_0 | 0x40000 /* add SpecializationActive[JSEqualNode.doBigIntBoolean(BigInt, boolean)] */; this.state_0_ = state_0; return JSEqualNode.doBigIntBoolean(leftNodeValue_, rightNodeValue_); } } if ((JSRuntime.isNullOrUndefined(leftNodeValue)) && (JSRuntime.isNullOrUndefined(rightNodeValue))) { state_0 = state_0 | 0x80000 /* add SpecializationActive[JSEqualNode.doBothNullOrUndefined(Object, Object)] */; this.state_0_ = state_0; return JSEqualNode.doBothNullOrUndefined(leftNodeValue, rightNodeValue); } if ((JSRuntime.isNullOrUndefined(leftNodeValue))) { InteropLibrary bInterop_; InteropLibrary bInterop__shared = this.bInterop; if (bInterop__shared != null) { bInterop_ = bInterop__shared; } else { bInterop_ = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); if (bInterop_ == 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.bInterop == null) { VarHandle.storeStoreFence(); this.bInterop = bInterop_; } state_0 = state_0 | 0x100000 /* add SpecializationActive[JSEqualNode.doLeftNullOrUndefined(Object, Object, InteropLibrary)] */; this.state_0_ = state_0; return JSEqualNode.doLeftNullOrUndefined(leftNodeValue, rightNodeValue, bInterop_); } if ((JSRuntime.isNullOrUndefined(rightNodeValue))) { InteropLibrary aInterop_; InteropLibrary aInterop__shared = this.aInterop; if (aInterop__shared != null) { aInterop_ = aInterop__shared; } else { aInterop_ = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); if (aInterop_ == 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.aInterop == null) { VarHandle.storeStoreFence(); this.aInterop = aInterop_; } state_0 = state_0 | 0x200000 /* add SpecializationActive[JSEqualNode.doRightNullOrUndefined(Object, Object, InteropLibrary)] */; this.state_0_ = state_0; return JSEqualNode.doRightNullOrUndefined(leftNodeValue, rightNodeValue, aInterop_); } { Node node__ = null; if ((hasOverloadedOperators(leftNodeValue) || hasOverloadedOperators(rightNodeValue))) { OverloadedData s22_ = this.insert(new OverloadedData()); node__ = (s22_); JSOverloadedBinaryNode overloadedOperatorNode__ = s22_.insert((JSOverloadedBinaryNode.createHintDefault(JSEqualNode.getOverloadedOperatorName()))); Objects.requireNonNull(overloadedOperatorNode__, "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."); s22_.overloadedOperatorNode_ = overloadedOperatorNode__; VarHandle.storeStoreFence(); this.overloaded_cache = s22_; state_0 = state_0 | 0x400000 /* add SpecializationActive[JSEqualNode.doOverloaded(Object, Object, Node, JSOverloadedBinaryNode, JSToBooleanNode)] */; this.state_0_ = state_0; return JSEqualNode.doOverloaded(leftNodeValue, rightNodeValue, node__, overloadedOperatorNode__, INLINED_OVERLOADED_TO_BOOLEAN_NODE_); } } if (leftNodeValue instanceof JSObject) { JSObject leftNodeValue_ = (JSObject) leftNodeValue; if (rightNodeValue instanceof JSDynamicObject) { JSDynamicObject rightNodeValue_ = (JSDynamicObject) rightNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_))) && (!(hasOverloadedOperators(rightNodeValue_)))) { state_0 = state_0 | 0x800000 /* add SpecializationActive[JSEqualNode.doJSObject(JSObject, JSDynamicObject)] */; this.state_0_ = state_0; return JSEqualNode.doJSObject(leftNodeValue_, rightNodeValue_); } } } if (leftNodeValue instanceof JSDynamicObject) { JSDynamicObject leftNodeValue_ = (JSDynamicObject) leftNodeValue; if (rightNodeValue instanceof JSObject) { JSObject rightNodeValue_ = (JSObject) rightNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_))) && (!(hasOverloadedOperators(rightNodeValue_)))) { state_0 = state_0 | 0x1000000 /* add SpecializationActive[JSEqualNode.doJSObject(JSDynamicObject, JSObject)] */; this.state_0_ = state_0; return JSEqualNode.doJSObject(leftNodeValue_, rightNodeValue_); } } } if (leftNodeValue instanceof JSObject) { JSObject leftNodeValue_ = (JSObject) leftNodeValue; if ((!(hasOverloadedOperators(leftNodeValue_)))) { IsPrimitiveNode isPrimitiveNode_; IsPrimitiveNode isPrimitiveNode__shared = this.isPrimitiveNode; if (isPrimitiveNode__shared != null) { isPrimitiveNode_ = isPrimitiveNode__shared; } else { isPrimitiveNode_ = this.insert((IsPrimitiveNode.create())); if (isPrimitiveNode_ == 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 (((state_0 & 0x4000000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode), guardIndex=1] */) { if (this.isPrimitiveNode == null) { VarHandle.storeStoreFence(); this.isPrimitiveNode = isPrimitiveNode_; } state_0 = state_0 | 0x4000000 /* add GuardActive[specialization=JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode), guardIndex=1] */; } if ((isPrimitiveNode_.executeBoolean(rightNodeValue))) { InteropLibrary bInterop_1; InteropLibrary bInterop_1_shared = this.bInterop; if (bInterop_1_shared != null) { bInterop_1 = bInterop_1_shared; } else { bInterop_1 = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); if (bInterop_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.bInterop == null) { VarHandle.storeStoreFence(); this.bInterop = bInterop_1; } JSToPrimitiveNode toPrimitiveNode_; JSToPrimitiveNode toPrimitiveNode__shared = this.toPrimitiveNode; if (toPrimitiveNode__shared != null) { toPrimitiveNode_ = toPrimitiveNode__shared; } else { toPrimitiveNode_ = this.insert((JSToPrimitiveNode.createHintDefault())); if (toPrimitiveNode_ == 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.toPrimitiveNode == null) { VarHandle.storeStoreFence(); this.toPrimitiveNode = toPrimitiveNode_; } if (this.isPrimitiveNode == null) { VarHandle.storeStoreFence(); this.isPrimitiveNode = isPrimitiveNode_; } JSEqualNode nestedEqualNode_; JSEqualNode nestedEqualNode__shared = this.nestedEqualNode; if (nestedEqualNode__shared != null) { nestedEqualNode_ = nestedEqualNode__shared; } else { nestedEqualNode_ = this.insert((JSEqualNode.create())); if (nestedEqualNode_ == 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.nestedEqualNode == null) { VarHandle.storeStoreFence(); this.nestedEqualNode = nestedEqualNode_; } state_0 = state_0 | 0x2000000 /* add SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(JSObject, Object, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] */; this.state_0_ = state_0; return JSEqualNode.doJSObjectVsPrimitive(leftNodeValue_, rightNodeValue, bInterop_1, toPrimitiveNode_, isPrimitiveNode_, nestedEqualNode_); } } } if (rightNodeValue instanceof JSObject) { JSObject rightNodeValue_ = (JSObject) rightNodeValue; if ((!(hasOverloadedOperators(rightNodeValue_)))) { IsPrimitiveNode isPrimitiveNode_1; IsPrimitiveNode isPrimitiveNode_1_shared = this.isPrimitiveNode; if (isPrimitiveNode_1_shared != null) { isPrimitiveNode_1 = isPrimitiveNode_1_shared; } else { isPrimitiveNode_1 = this.insert((IsPrimitiveNode.create())); if (isPrimitiveNode_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 (((state_0 & 0x10000000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode), guardIndex=1] */) { if (this.isPrimitiveNode == null) { VarHandle.storeStoreFence(); this.isPrimitiveNode = isPrimitiveNode_1; } state_0 = state_0 | 0x10000000 /* add GuardActive[specialization=JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode), guardIndex=1] */; } if ((isPrimitiveNode_1.executeBoolean(leftNodeValue))) { InteropLibrary aInterop_1; InteropLibrary aInterop_1_shared = this.aInterop; if (aInterop_1_shared != null) { aInterop_1 = aInterop_1_shared; } else { aInterop_1 = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); if (aInterop_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.aInterop == null) { VarHandle.storeStoreFence(); this.aInterop = aInterop_1; } JSToPrimitiveNode toPrimitiveNode_1; JSToPrimitiveNode toPrimitiveNode_1_shared = this.toPrimitiveNode; if (toPrimitiveNode_1_shared != null) { toPrimitiveNode_1 = toPrimitiveNode_1_shared; } else { toPrimitiveNode_1 = this.insert((JSToPrimitiveNode.createHintDefault())); if (toPrimitiveNode_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.toPrimitiveNode == null) { VarHandle.storeStoreFence(); this.toPrimitiveNode = toPrimitiveNode_1; } if (this.isPrimitiveNode == null) { VarHandle.storeStoreFence(); this.isPrimitiveNode = isPrimitiveNode_1; } JSEqualNode nestedEqualNode_1; JSEqualNode nestedEqualNode_1_shared = this.nestedEqualNode; if (nestedEqualNode_1_shared != null) { nestedEqualNode_1 = nestedEqualNode_1_shared; } else { nestedEqualNode_1 = this.insert((JSEqualNode.create())); if (nestedEqualNode_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.nestedEqualNode == null) { VarHandle.storeStoreFence(); this.nestedEqualNode = nestedEqualNode_1; } state_0 = state_0 | 0x8000000 /* add SpecializationActive[JSEqualNode.doJSObjectVsPrimitive(Object, JSObject, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode)] */; this.state_0_ = state_0; return JSEqualNode.doJSObjectVsPrimitive(leftNodeValue, rightNodeValue_, aInterop_1, toPrimitiveNode_1, isPrimitiveNode_1, nestedEqualNode_1); } } } if (leftNodeValue instanceof BigInt) { BigInt leftNodeValue_ = (BigInt) leftNodeValue; if (rightNodeValue instanceof Integer) { int rightNodeValue_ = (int) rightNodeValue; state_0 = state_0 | 0x20000000 /* add SpecializationActive[JSEqualNode.doBigIntAndInt(BigInt, int)] */; this.state_0_ = state_0; return JSEqualNode.doBigIntAndInt(leftNodeValue_, rightNodeValue_); } { int doubleCast1; if ((doubleCast1 = JSTypesGen.specializeImplicitDouble(rightNodeValue)) != 0) { double rightNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast1, rightNodeValue); state_1 = (state_1 | (doubleCast1 << 11) /* set-int ImplicitCast[type=double, index=1] */); state_0 = state_0 | 0x40000000 /* add SpecializationActive[JSEqualNode.doBigIntAndNumber(BigInt, double)] */; this.state_1_ = state_1; this.state_0_ = state_0; return JSEqualNode.doBigIntAndNumber(leftNodeValue_, rightNodeValue_); } } } if (rightNodeValue instanceof BigInt) { BigInt rightNodeValue_ = (BigInt) rightNodeValue; if (leftNodeValue instanceof Integer) { int leftNodeValue_ = (int) leftNodeValue; state_0 = state_0 | 0x80000000 /* add SpecializationActive[JSEqualNode.doIntAndBigInt(int, BigInt)] */; this.state_0_ = state_0; return JSEqualNode.doIntAndBigInt(leftNodeValue_, rightNodeValue_); } { int doubleCast0; if ((doubleCast0 = JSTypesGen.specializeImplicitDouble(leftNodeValue)) != 0) { double leftNodeValue_ = JSTypesGen.asImplicitDouble(doubleCast0, leftNodeValue); state_1 = (state_1 | (doubleCast0 << 8) /* set-int ImplicitCast[type=double, index=0] */); state_1 = state_1 | 0b1 /* add SpecializationActive[JSEqualNode.doNumberAndBigInt(double, BigInt)] */; this.state_1_ = state_1; return JSEqualNode.doNumberAndBigInt(leftNodeValue_, rightNodeValue_); } } } if (leftNodeValue instanceof Symbol) { Symbol leftNodeValue_ = (Symbol) leftNodeValue; if (rightNodeValue instanceof Symbol) { Symbol rightNodeValue_ = (Symbol) rightNodeValue; state_1 = state_1 | 0b10 /* add SpecializationActive[JSEqualNode.doSymbol(Symbol, Symbol)] */; this.state_1_ = state_1; return JSEqualNode.doSymbol(leftNodeValue_, rightNodeValue_); } if ((!(JSGuards.isSymbol(rightNodeValue)))) { IsObjectNode isObjectNode_; IsObjectNode isObjectNode__shared = this.isObjectNode; if (isObjectNode__shared != null) { isObjectNode_ = isObjectNode__shared; } else { isObjectNode_ = this.insert((IsObjectNode.create())); if (isObjectNode_ == 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 (((state_1 & 0b1000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode), guardIndex=1] */) { if (this.isObjectNode == null) { VarHandle.storeStoreFence(); this.isObjectNode = isObjectNode_; } state_1 = state_1 | 0b1000 /* add GuardActive[specialization=JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode), guardIndex=1] */; } if ((!(isObjectNode_.executeBoolean(rightNodeValue)))) { if (this.isObjectNode == null) { VarHandle.storeStoreFence(); this.isObjectNode = isObjectNode_; } state_1 = state_1 | 0b100 /* add SpecializationActive[JSEqualNode.doSymbolNotSymbol(Symbol, Object, IsObjectNode)] */; this.state_1_ = state_1; return JSEqualNode.doSymbolNotSymbol(leftNodeValue_, rightNodeValue, isObjectNode_); } } } if (rightNodeValue instanceof Symbol) { Symbol rightNodeValue_ = (Symbol) rightNodeValue; if ((!(JSGuards.isSymbol(leftNodeValue)))) { IsObjectNode isObjectNode_1; IsObjectNode isObjectNode_1_shared = this.isObjectNode; if (isObjectNode_1_shared != null) { isObjectNode_1 = isObjectNode_1_shared; } else { isObjectNode_1 = this.insert((IsObjectNode.create())); if (isObjectNode_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 (((state_1 & 0b100000)) == 0 /* is-not GuardActive[specialization=JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode), guardIndex=1] */) { if (this.isObjectNode == null) { VarHandle.storeStoreFence(); this.isObjectNode = isObjectNode_1; } state_1 = state_1 | 0b100000 /* add GuardActive[specialization=JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode), guardIndex=1] */; } if ((!(isObjectNode_1.executeBoolean(leftNodeValue)))) { if (this.isObjectNode == null) { VarHandle.storeStoreFence(); this.isObjectNode = isObjectNode_1; } state_1 = state_1 | 0b10000 /* add SpecializationActive[JSEqualNode.doSymbolNotSymbol(Object, Symbol, IsObjectNode)] */; this.state_1_ = state_1; return JSEqualNode.doSymbolNotSymbol(leftNodeValue, rightNodeValue_, isObjectNode_1); } } } { boolean isBForeign__ = false; boolean isAForeign__ = false; { isAForeign__ = (JSGuards.isForeignObjectOrNumber(leftNodeValue)); isBForeign__ = (JSGuards.isForeignObjectOrNumber(rightNodeValue)); if ((isAForeign__ || isBForeign__)) { InteropLibrary aInterop_2; InteropLibrary aInterop_2_shared = this.aInterop; if (aInterop_2_shared != null) { aInterop_2 = aInterop_2_shared; } else { aInterop_2 = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); if (aInterop_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.aInterop == null) { VarHandle.storeStoreFence(); this.aInterop = aInterop_2; } InteropLibrary bInterop_2; InteropLibrary bInterop_2_shared = this.bInterop; if (bInterop_2_shared != null) { bInterop_2 = bInterop_2_shared; } else { bInterop_2 = this.insert((INTEROP_LIBRARY_.createDispatched(JSConfig.InteropLibraryLimit))); if (bInterop_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.bInterop == null) { VarHandle.storeStoreFence(); this.bInterop = bInterop_2; } JSToPrimitiveNode toPrimitiveNode_2; JSToPrimitiveNode toPrimitiveNode_2_shared = this.toPrimitiveNode; if (toPrimitiveNode_2_shared != null) { toPrimitiveNode_2 = toPrimitiveNode_2_shared; } else { toPrimitiveNode_2 = this.insert((JSToPrimitiveNode.createHintDefault())); if (toPrimitiveNode_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.toPrimitiveNode == null) { VarHandle.storeStoreFence(); this.toPrimitiveNode = toPrimitiveNode_2; } IsPrimitiveNode isPrimitiveNode_2; IsPrimitiveNode isPrimitiveNode_2_shared = this.isPrimitiveNode; if (isPrimitiveNode_2_shared != null) { isPrimitiveNode_2 = isPrimitiveNode_2_shared; } else { isPrimitiveNode_2 = this.insert((IsPrimitiveNode.create())); if (isPrimitiveNode_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.isPrimitiveNode == null) { VarHandle.storeStoreFence(); this.isPrimitiveNode = isPrimitiveNode_2; } JSEqualNode nestedEqualNode_2; JSEqualNode nestedEqualNode_2_shared = this.nestedEqualNode; if (nestedEqualNode_2_shared != null) { nestedEqualNode_2 = nestedEqualNode_2_shared; } else { nestedEqualNode_2 = this.insert((JSEqualNode.create())); if (nestedEqualNode_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.nestedEqualNode == null) { VarHandle.storeStoreFence(); this.nestedEqualNode = nestedEqualNode_2; } state_1 = state_1 | 0b1000000 /* add SpecializationActive[JSEqualNode.doForeign(Object, Object, boolean, boolean, InteropLibrary, InteropLibrary, JSToPrimitiveNode, IsPrimitiveNode, JSEqualNode, LongToBigIntNode, LongToBigIntNode)] */; this.state_1_ = state_1; return doForeign(leftNodeValue, rightNodeValue, isAForeign__, isBForeign__, aInterop_2, bInterop_2, toPrimitiveNode_2, isPrimitiveNode_2, nestedEqualNode_2, INLINED_FOREIGN_LONG_TO_BIG_INT_A_, INLINED_FOREIGN_LONG_TO_BIG_INT_B_); } } } state_1 = state_1 | 0b10000000 /* add SpecializationActive[JSEqualNode.doFallback(Object, Object)] */; this.state_1_ = state_1; return JSEqualNode.doFallback(leftNodeValue, rightNodeValue); } @NeverDefault public static JSEqualNode create(JavaScriptNode left, JavaScriptNode right) { return new JSEqualNodeGen(left, right); } @GeneratedBy(JSEqualNode.class) @DenyReplace private static final class OverloadedData extends Node implements SpecializationDataNode { /** * State Info:
         *   0-14: InlinedCache
         *        Specialization: {@link JSEqualNode#doOverloaded}
         *        Parameter: {@link JSToBooleanNode} toBooleanNode
         *        Inline method: {@link JSToBooleanNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int overloaded_state_0_; /** * Source Info:
         *   Specialization: {@link JSEqualNode#doOverloaded}
         *   Parameter: {@link JSOverloadedBinaryNode} overloadedOperatorNode
*/ @Child JSOverloadedBinaryNode overloadedOperatorNode_; /** * Source Info:
         *   Specialization: {@link JSEqualNode#doOverloaded}
         *   Parameter: {@link JSToBooleanNode} toBooleanNode
         *   Inline method: {@link JSToBooleanNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node overloaded_toBooleanNode__field1_; OverloadedData() { } private static Lookup lookup_() { return MethodHandles.lookup(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy