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