
com.oracle.truffle.js.nodes.binary.JSAddNodeGen Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of js-language Show documentation
Show all versions of js-language Show documentation
Graal JavaScript implementation
The newest version!
// 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.DSLSupport;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.UnsupportedSpecializationException;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.frame.VirtualFrame;
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.profiles.InlinedBranchProfile;
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleString.FromLongNode;
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.cast.JSDoubleToStringNode;
import com.oracle.truffle.js.nodes.cast.JSDoubleToStringNodeGen;
import com.oracle.truffle.js.nodes.cast.JSToNumericNode;
import com.oracle.truffle.js.nodes.cast.JSToPrimitiveNode;
import com.oracle.truffle.js.nodes.cast.JSToStringNode;
import com.oracle.truffle.js.runtime.BigInt;
import com.oracle.truffle.js.runtime.SafeInteger;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;
/**
* Debug Info:
* Specialization {@link JSAddNode#doIntTruncate}
* Activation probability: 0.11917
* With/without class size: 5/0 bytes
* Specialization {@link JSAddNode#doInt}
* Activation probability: 0.11167
* With/without class size: 5/0 bytes
* Specialization {@link JSAddNode#doIntOverflow}
* Activation probability: 0.10417
* With/without class size: 5/0 bytes
* Specialization {@link JSAddNode#doIntSafeInteger}
* Activation probability: 0.09667
* With/without class size: 5/0 bytes
* Specialization {@link JSAddNode#doSafeIntegerInt}
* Activation probability: 0.08917
* With/without class size: 5/0 bytes
* Specialization {@link JSAddNode#doSafeInteger}
* Activation probability: 0.08167
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doDouble}
* Activation probability: 0.07417
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doBigInt}
* Activation probability: 0.06667
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doString}
* Activation probability: 0.05917
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doStringInt}
* Activation probability: 0.05167
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doIntString}
* Activation probability: 0.04417
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doStringNumber}
* Activation probability: 0.03667
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doNumberString}
* Activation probability: 0.02917
* With/without class size: 4/0 bytes
* Specialization {@link JSAddNode#doOverloaded}
* Activation probability: 0.02167
* With/without class size: 4/4 bytes
* Specialization {@link JSAddNode#doPrimitiveConversion}
* Activation probability: 0.01417
* With/without class size: 4/29 bytes
*
*/
@GeneratedBy(JSAddNode.class)
@SuppressWarnings("javadoc")
public final class JSAddNodeGen extends JSAddNode {
private static final StateField PRIMITIVE_CONVERSION__J_S_ADD_NODE_PRIMITIVE_CONVERSION_STATE_0_UPDATER = StateField.create(PrimitiveConversionData.lookup_(), "primitiveConversion_state_0_");
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link InlinedConditionProfile} profileA
* Inline method: {@link InlinedConditionProfile#inline}
*/
private static final InlinedConditionProfile INLINED_PRIMITIVE_CONVERSION_PROFILE_A_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, PRIMITIVE_CONVERSION__J_S_ADD_NODE_PRIMITIVE_CONVERSION_STATE_0_UPDATER.subUpdater(0, 2)));
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link InlinedConditionProfile} profileB
* Inline method: {@link InlinedConditionProfile#inline}
*/
private static final InlinedConditionProfile INLINED_PRIMITIVE_CONVERSION_PROFILE_B_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, PRIMITIVE_CONVERSION__J_S_ADD_NODE_PRIMITIVE_CONVERSION_STATE_0_UPDATER.subUpdater(2, 2)));
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link InlinedBranchProfile} mixedNumericTypes
* Inline method: {@link InlinedBranchProfile#inline}
*/
private static final InlinedBranchProfile INLINED_PRIMITIVE_CONVERSION_MIXED_NUMERIC_TYPES_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, PRIMITIVE_CONVERSION__J_S_ADD_NODE_PRIMITIVE_CONVERSION_STATE_0_UPDATER.subUpdater(4, 1)));
/**
* State Info:
* 0: SpecializationActive {@link JSAddNode#doIntTruncate}
* 1: SpecializationActive {@link JSAddNode#doInt}
* 2: SpecializationExcluded {@link JSAddNode#doInt}
* 3: SpecializationActive {@link JSAddNode#doPrimitiveConversion}
* 4: SpecializationActive {@link JSAddNode#doIntOverflow}
* 5: SpecializationExcluded {@link JSAddNode#doIntOverflow}
* 6: SpecializationActive {@link JSAddNode#doIntSafeInteger}
* 7: SpecializationExcluded {@link JSAddNode#doIntSafeInteger}
* 8: SpecializationActive {@link JSAddNode#doSafeIntegerInt}
* 9: SpecializationExcluded {@link JSAddNode#doSafeIntegerInt}
* 10: SpecializationActive {@link JSAddNode#doSafeInteger}
* 11: SpecializationExcluded {@link JSAddNode#doSafeInteger}
* 12: SpecializationActive {@link JSAddNode#doDouble}
* 13: SpecializationActive {@link JSAddNode#doBigInt}
* 14: SpecializationActive {@link JSAddNode#doString}
* 15: SpecializationActive {@link JSAddNode#doStringInt}
* 16: SpecializationActive {@link JSAddNode#doIntString}
* 17: SpecializationActive {@link JSAddNode#doStringNumber}
* 18: SpecializationActive {@link JSAddNode#doNumberString}
* 19: SpecializationActive {@link JSAddNode#doOverloaded}
* 20-22: ImplicitCast[type=double, index=0]
* 23-25: ImplicitCast[type=double, index=1]
*
*/
@CompilationFinal private int state_0_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doString}
* Parameter: {@link JSConcatStringsNode} concatStringsNode
*/
@Child private JSConcatStringsNode concatStringsNode;
/**
* Source Info:
* Specialization: {@link JSAddNode#doStringInt}
* Parameter: {@link FromLongNode} stringFromLongNode
*/
@Child private FromLongNode stringFromLongNode;
/**
* Source Info:
* Specialization: {@link JSAddNode#doStringNumber}
* Parameter: {@link JSDoubleToStringNode} doubleToStringNode
*/
@Child private JSDoubleToStringNode doubleToStringNode;
/**
* Source Info:
* Specialization: {@link JSAddNode#doOverloaded}
* Parameter: {@link JSOverloadedBinaryNode} overloadedOperatorNode
*/
@Child private JSOverloadedBinaryNode overloaded_overloadedOperatorNode_;
@Child private PrimitiveConversionData primitiveConversion_cache;
private JSAddNodeGen(boolean truncate, JavaScriptNode left, JavaScriptNode right) {
super(truncate, left, right);
}
@Override
public Object execute(Object leftNodeValue, Object rightNodeValue) {
int state_0 = this.state_0_;
if ((state_0 & 0xff55b) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] || SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] || SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] || SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] || SpecializationActive[JSAddNode.doDouble(double, double)] || SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] || SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] || SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] || SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] || SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((state_0 & 0b1010011) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] || SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */ && leftNodeValue instanceof Integer) {
int leftNodeValue_ = (int) leftNodeValue;
if ((state_0 & 0b10011) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] */ && rightNodeValue instanceof Integer) {
int rightNodeValue_ = (int) rightNodeValue;
if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] */) {
assert DSLSupport.assertIdempotence((truncate));
return JSAddNode.doIntTruncate(leftNodeValue_, rightNodeValue_);
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSAddNode.doInt(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doInt(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[JSAddNode.doInt(int, int)] */;
state_0 = state_0 | 0b100 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSAddNode.doIntOverflow(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doIntOverflow(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[JSAddNode.doIntOverflow(int, int)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */ && rightNodeValue instanceof SafeInteger) {
SafeInteger rightNodeValue_ = (SafeInteger) rightNodeValue;
try {
return JSAddNode.doIntSafeInteger(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffbf /* remove SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */;
state_0 = state_0 | 0b10000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
if ((state_0 & 0b10100000000) != 0 /* is SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] || SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */ && leftNodeValue instanceof SafeInteger) {
SafeInteger leftNodeValue_ = (SafeInteger) leftNodeValue;
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */ && rightNodeValue instanceof Integer) {
int rightNodeValue_ = (int) rightNodeValue;
try {
return JSAddNode.doSafeIntegerInt(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffeff /* remove SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */;
state_0 = state_0 | 0b1000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */ && rightNodeValue instanceof SafeInteger) {
SafeInteger rightNodeValue_ = (SafeInteger) rightNodeValue;
try {
return JSAddNode.doSafeInteger(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSAddNode.doDouble(double, double)] */ && JSTypesGen.isImplicitDouble((state_0 & 0x700000) >>> 20 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue)) {
double leftNodeValue_ = JSTypesGen.asImplicitDouble((state_0 & 0x700000) >>> 20 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue);
if (JSTypesGen.isImplicitDouble((state_0 & 0x3800000) >>> 23 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue)) {
double rightNodeValue_ = JSTypesGen.asImplicitDouble((state_0 & 0x3800000) >>> 23 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue);
return JSAddNode.doDouble(leftNodeValue_, rightNodeValue_);
}
}
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] */ && leftNodeValue instanceof BigInt) {
BigInt leftNodeValue_ = (BigInt) leftNodeValue;
if (rightNodeValue instanceof BigInt) {
BigInt rightNodeValue_ = (BigInt) rightNodeValue;
return doBigInt(leftNodeValue_, rightNodeValue_);
}
}
if ((state_0 & 0b1100000000000000) != 0 /* is SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] || SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */ && leftNodeValue instanceof TruffleString) {
TruffleString leftNodeValue_ = (TruffleString) leftNodeValue;
if ((state_0 & 0b100000000000000) != 0 /* is SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] */ && rightNodeValue instanceof TruffleString) {
TruffleString rightNodeValue_ = (TruffleString) rightNodeValue;
{
JSConcatStringsNode concatStringsNode_ = this.concatStringsNode;
if (concatStringsNode_ != null) {
return doString(leftNodeValue_, rightNodeValue_, concatStringsNode_);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */ && rightNodeValue instanceof Integer) {
int rightNodeValue_ = (int) rightNodeValue;
{
JSConcatStringsNode concatStringsNode_1 = this.concatStringsNode;
if (concatStringsNode_1 != null) {
FromLongNode stringFromLongNode_ = this.stringFromLongNode;
if (stringFromLongNode_ != null) {
return doStringInt(leftNodeValue_, rightNodeValue_, concatStringsNode_1, stringFromLongNode_);
}
}
}
}
}
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] */ && leftNodeValue instanceof Integer) {
int leftNodeValue_ = (int) leftNodeValue;
if (rightNodeValue instanceof TruffleString) {
TruffleString rightNodeValue_ = (TruffleString) rightNodeValue;
{
JSConcatStringsNode concatStringsNode_2 = this.concatStringsNode;
if (concatStringsNode_2 != null) {
FromLongNode stringFromLongNode_1 = this.stringFromLongNode;
if (stringFromLongNode_1 != null) {
return doIntString(leftNodeValue_, rightNodeValue_, concatStringsNode_2, stringFromLongNode_1);
}
}
}
}
}
if ((state_0 & 0x20000) != 0 /* is SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] */ && leftNodeValue instanceof TruffleString) {
TruffleString leftNodeValue_ = (TruffleString) leftNodeValue;
{
JSConcatStringsNode concatStringsNode_3 = this.concatStringsNode;
if (concatStringsNode_3 != null) {
JSDoubleToStringNode doubleToStringNode_ = this.doubleToStringNode;
if (doubleToStringNode_ != null) {
if ((JSGuards.isNumber(rightNodeValue))) {
return doStringNumber(leftNodeValue_, rightNodeValue, concatStringsNode_3, doubleToStringNode_);
}
}
}
}
}
if ((state_0 & 0xc0008) != 0 /* is SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] */ && rightNodeValue instanceof TruffleString) {
TruffleString rightNodeValue_ = (TruffleString) rightNodeValue;
{
JSConcatStringsNode concatStringsNode_4 = this.concatStringsNode;
if (concatStringsNode_4 != null) {
JSDoubleToStringNode doubleToStringNode_1 = this.doubleToStringNode;
if (doubleToStringNode_1 != null) {
if ((JSGuards.isNumber(leftNodeValue))) {
return doNumberString(leftNodeValue, rightNodeValue_, concatStringsNode_4, doubleToStringNode_1);
}
}
}
}
}
if ((state_0 & 0x80008) != 0 /* is SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] */) {
{
JSOverloadedBinaryNode overloadedOperatorNode__ = this.overloaded_overloadedOperatorNode_;
if (overloadedOperatorNode__ != null) {
if ((hasOverloadedOperators(leftNodeValue) || hasOverloadedOperators(rightNodeValue))) {
return doOverloaded(leftNodeValue, rightNodeValue, overloadedOperatorNode__);
}
}
}
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
PrimitiveConversionData s14_ = this.primitiveConversion_cache;
if (s14_ != null) {
if ((!(hasOverloadedOperators(leftNodeValue))) && (!(hasOverloadedOperators(rightNodeValue)))) {
Node node__ = (s14_);
return JSAddNode.doPrimitiveConversion(leftNodeValue, rightNodeValue, node__, s14_.toPrimitiveA_, s14_.toPrimitiveB_, s14_.toNumericA_, s14_.toNumericB_, s14_.toStringA_, s14_.toStringB_, INLINED_PRIMITIVE_CONVERSION_PROFILE_A_, INLINED_PRIMITIVE_CONVERSION_PROFILE_B_, s14_.add_, INLINED_PRIMITIVE_CONVERSION_MIXED_NUMERIC_TYPES_);
}
}
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(leftNodeValue, rightNodeValue);
}
@Override
public Object execute(VirtualFrame frameValue) {
int state_0 = this.state_0_;
if ((state_0 & 0xff548) == 0 /* only-active SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
return execute_int_int0(state_0, frameValue);
} else if ((state_0 & 0xfe55b) == 0 /* only-active SpecializationActive[JSAddNode.doDouble(double, double)] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
return execute_double_double1(state_0, frameValue);
} else if ((state_0 & 0xef51b) == 0 /* only-active SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
return execute_int2(state_0, frameValue);
} else if ((state_0 & 0xf745b) == 0 /* only-active SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
return execute_int3(state_0, frameValue);
} else {
return execute_generic4(state_0, frameValue);
}
}
private Object execute_int_int0(int state_0__, 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());
}
if ((state_0 & 0b10011) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] */) {
assert DSLSupport.assertIdempotence((truncate));
return JSAddNode.doIntTruncate(leftNodeValue_, rightNodeValue_);
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSAddNode.doInt(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doInt(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[JSAddNode.doInt(int, int)] */;
state_0 = state_0 | 0b100 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSAddNode.doIntOverflow(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doIntOverflow(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[JSAddNode.doIntOverflow(int, int)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
private Object execute_double_double1(int state_0__, VirtualFrame frameValue) {
int state_0 = state_0__;
int leftNodeValue_int = 0;
double leftNodeValue_;
try {
if ((state_0 & 0x600000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
leftNodeValue_ = super.leftNode.executeDouble(frameValue);
} else if ((state_0 & 0x500000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
leftNodeValue_int = super.leftNode.executeInt(frameValue);
leftNodeValue_ = JSTypes.intToDouble(leftNodeValue_int);
} else {
Object leftNodeValue__ = super.leftNode.execute(frameValue);
leftNodeValue_ = JSTypesGen.expectImplicitDouble((state_0 & 0x700000) >>> 20 /* 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_0 & 0x3000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
rightNodeValue_ = super.rightNode.executeDouble(frameValue);
} else if ((state_0 & 0x2800000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
rightNodeValue_int = super.rightNode.executeInt(frameValue);
rightNodeValue_ = JSTypes.intToDouble(rightNodeValue_int);
} else {
Object rightNodeValue__ = super.rightNode.execute(frameValue);
rightNodeValue_ = JSTypesGen.expectImplicitDouble((state_0 & 0x3800000) >>> 23 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue__);
}
} catch (UnexpectedResultException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(((state_0 & 0x500000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) ? (Object) leftNodeValue_int : (Object) leftNodeValue_), ex.getResult());
}
assert (state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSAddNode.doDouble(double, double)] */;
return JSAddNode.doDouble(leftNodeValue_, rightNodeValue_);
}
private Object execute_int2(int state_0__, 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);
if ((state_0 & 0x10040) != 0 /* is SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] || SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] */) {
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */ && rightNodeValue_ instanceof SafeInteger) {
SafeInteger rightNodeValue__ = (SafeInteger) rightNodeValue_;
try {
return JSAddNode.doIntSafeInteger(leftNodeValue_, rightNodeValue__);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffbf /* remove SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */;
state_0 = state_0 | 0b10000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue__);
}
}
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] */ && rightNodeValue_ instanceof TruffleString) {
TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_;
{
JSConcatStringsNode concatStringsNode_2 = this.concatStringsNode;
if (concatStringsNode_2 != null) {
FromLongNode stringFromLongNode_1 = this.stringFromLongNode;
if (stringFromLongNode_1 != null) {
return doIntString(leftNodeValue_, rightNodeValue__, concatStringsNode_2, stringFromLongNode_1);
}
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
private Object execute_int3(int state_0__, 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());
}
if ((state_0 & 0b1000000100000000) != 0 /* is SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] || SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */) {
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */ && leftNodeValue_ instanceof SafeInteger) {
SafeInteger leftNodeValue__ = (SafeInteger) leftNodeValue_;
try {
return JSAddNode.doSafeIntegerInt(leftNodeValue__, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffeff /* remove SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */;
state_0 = state_0 | 0b1000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue__, rightNodeValue_);
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */ && leftNodeValue_ instanceof TruffleString) {
TruffleString leftNodeValue__ = (TruffleString) leftNodeValue_;
{
JSConcatStringsNode concatStringsNode_1 = this.concatStringsNode;
if (concatStringsNode_1 != null) {
FromLongNode stringFromLongNode_ = this.stringFromLongNode;
if (stringFromLongNode_ != null) {
return doStringInt(leftNodeValue__, rightNodeValue_, concatStringsNode_1, stringFromLongNode_);
}
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
private Object execute_generic4(int state_0__, VirtualFrame frameValue) {
int state_0 = state_0__;
Object leftNodeValue_ = super.leftNode.execute(frameValue);
Object rightNodeValue_ = super.rightNode.execute(frameValue);
if ((state_0 & 0xff55b) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] || SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] || SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] || SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] || SpecializationActive[JSAddNode.doDouble(double, double)] || SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] || SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] || SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] || SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] || SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((state_0 & 0b1010011) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] || SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */ && leftNodeValue_ instanceof Integer) {
int leftNodeValue__ = (int) leftNodeValue_;
if ((state_0 & 0b10011) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] || SpecializationActive[JSAddNode.doIntOverflow(int, int)] */ && rightNodeValue_ instanceof Integer) {
int rightNodeValue__ = (int) rightNodeValue_;
if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] */) {
assert DSLSupport.assertIdempotence((truncate));
return JSAddNode.doIntTruncate(leftNodeValue__, rightNodeValue__);
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSAddNode.doInt(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doInt(leftNodeValue__, rightNodeValue__);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[JSAddNode.doInt(int, int)] */;
state_0 = state_0 | 0b100 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue__, rightNodeValue__);
}
}
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSAddNode.doIntOverflow(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doIntOverflow(leftNodeValue__, rightNodeValue__);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[JSAddNode.doIntOverflow(int, int)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue__, rightNodeValue__);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */ && rightNodeValue_ instanceof SafeInteger) {
SafeInteger rightNodeValue__ = (SafeInteger) rightNodeValue_;
try {
return JSAddNode.doIntSafeInteger(leftNodeValue__, rightNodeValue__);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffbf /* remove SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */;
state_0 = state_0 | 0b10000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue__, rightNodeValue__);
}
}
}
if ((state_0 & 0b10100000000) != 0 /* is SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] || SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */ && leftNodeValue_ instanceof SafeInteger) {
SafeInteger leftNodeValue__ = (SafeInteger) leftNodeValue_;
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */ && rightNodeValue_ instanceof Integer) {
int rightNodeValue__ = (int) rightNodeValue_;
try {
return JSAddNode.doSafeIntegerInt(leftNodeValue__, rightNodeValue__);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffeff /* remove SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */;
state_0 = state_0 | 0b1000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue__, rightNodeValue__);
}
}
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */ && rightNodeValue_ instanceof SafeInteger) {
SafeInteger rightNodeValue__ = (SafeInteger) rightNodeValue_;
try {
return JSAddNode.doSafeInteger(leftNodeValue__, rightNodeValue__);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue__, rightNodeValue__);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSAddNode.doDouble(double, double)] */ && JSTypesGen.isImplicitDouble((state_0 & 0x700000) >>> 20 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_)) {
double leftNodeValue__ = JSTypesGen.asImplicitDouble((state_0 & 0x700000) >>> 20 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue_);
if (JSTypesGen.isImplicitDouble((state_0 & 0x3800000) >>> 23 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_)) {
double rightNodeValue__ = JSTypesGen.asImplicitDouble((state_0 & 0x3800000) >>> 23 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue_);
return JSAddNode.doDouble(leftNodeValue__, rightNodeValue__);
}
}
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] */ && leftNodeValue_ instanceof BigInt) {
BigInt leftNodeValue__ = (BigInt) leftNodeValue_;
if (rightNodeValue_ instanceof BigInt) {
BigInt rightNodeValue__ = (BigInt) rightNodeValue_;
return doBigInt(leftNodeValue__, rightNodeValue__);
}
}
if ((state_0 & 0b1100000000000000) != 0 /* is SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] || SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */ && leftNodeValue_ instanceof TruffleString) {
TruffleString leftNodeValue__ = (TruffleString) leftNodeValue_;
if ((state_0 & 0b100000000000000) != 0 /* is SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] */ && rightNodeValue_ instanceof TruffleString) {
TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_;
{
JSConcatStringsNode concatStringsNode_ = this.concatStringsNode;
if (concatStringsNode_ != null) {
return doString(leftNodeValue__, rightNodeValue__, concatStringsNode_);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */ && rightNodeValue_ instanceof Integer) {
int rightNodeValue__ = (int) rightNodeValue_;
{
JSConcatStringsNode concatStringsNode_1 = this.concatStringsNode;
if (concatStringsNode_1 != null) {
FromLongNode stringFromLongNode_ = this.stringFromLongNode;
if (stringFromLongNode_ != null) {
return doStringInt(leftNodeValue__, rightNodeValue__, concatStringsNode_1, stringFromLongNode_);
}
}
}
}
}
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] */ && leftNodeValue_ instanceof Integer) {
int leftNodeValue__ = (int) leftNodeValue_;
if (rightNodeValue_ instanceof TruffleString) {
TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_;
{
JSConcatStringsNode concatStringsNode_2 = this.concatStringsNode;
if (concatStringsNode_2 != null) {
FromLongNode stringFromLongNode_1 = this.stringFromLongNode;
if (stringFromLongNode_1 != null) {
return doIntString(leftNodeValue__, rightNodeValue__, concatStringsNode_2, stringFromLongNode_1);
}
}
}
}
}
if ((state_0 & 0x20000) != 0 /* is SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] */ && leftNodeValue_ instanceof TruffleString) {
TruffleString leftNodeValue__ = (TruffleString) leftNodeValue_;
{
JSConcatStringsNode concatStringsNode_3 = this.concatStringsNode;
if (concatStringsNode_3 != null) {
JSDoubleToStringNode doubleToStringNode_ = this.doubleToStringNode;
if (doubleToStringNode_ != null) {
if ((JSGuards.isNumber(rightNodeValue_))) {
return doStringNumber(leftNodeValue__, rightNodeValue_, concatStringsNode_3, doubleToStringNode_);
}
}
}
}
}
if ((state_0 & 0xc0008) != 0 /* is SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] */ && rightNodeValue_ instanceof TruffleString) {
TruffleString rightNodeValue__ = (TruffleString) rightNodeValue_;
{
JSConcatStringsNode concatStringsNode_4 = this.concatStringsNode;
if (concatStringsNode_4 != null) {
JSDoubleToStringNode doubleToStringNode_1 = this.doubleToStringNode;
if (doubleToStringNode_1 != null) {
if ((JSGuards.isNumber(leftNodeValue_))) {
return doNumberString(leftNodeValue_, rightNodeValue__, concatStringsNode_4, doubleToStringNode_1);
}
}
}
}
}
if ((state_0 & 0x80008) != 0 /* is SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] */) {
{
JSOverloadedBinaryNode overloadedOperatorNode__ = this.overloaded_overloadedOperatorNode_;
if (overloadedOperatorNode__ != null) {
if ((hasOverloadedOperators(leftNodeValue_) || hasOverloadedOperators(rightNodeValue_))) {
return doOverloaded(leftNodeValue_, rightNodeValue_, overloadedOperatorNode__);
}
}
}
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
PrimitiveConversionData s14_ = this.primitiveConversion_cache;
if (s14_ != null) {
if ((!(hasOverloadedOperators(leftNodeValue_))) && (!(hasOverloadedOperators(rightNodeValue_)))) {
Node node__ = (s14_);
return JSAddNode.doPrimitiveConversion(leftNodeValue_, rightNodeValue_, node__, s14_.toPrimitiveA_, s14_.toPrimitiveB_, s14_.toNumericA_, s14_.toNumericB_, s14_.toStringA_, s14_.toStringB_, INLINED_PRIMITIVE_CONVERSION_PROFILE_A_, INLINED_PRIMITIVE_CONVERSION_PROFILE_B_, s14_.add_, INLINED_PRIMITIVE_CONVERSION_MIXED_NUMERIC_TYPES_);
}
}
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
@Override
public double executeDouble(VirtualFrame frameValue) throws UnexpectedResultException {
int state_0 = this.state_0_;
if ((state_0 & 0xe0018) != 0 /* is SpecializationActive[JSAddNode.doIntOverflow(int, int)] || SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
return JSTypesGen.expectDouble(execute(frameValue));
}
int leftNodeValue_int = 0;
double leftNodeValue_;
try {
if ((state_0 & 0x600000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
leftNodeValue_ = super.leftNode.executeDouble(frameValue);
} else if ((state_0 & 0x500000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
leftNodeValue_int = super.leftNode.executeInt(frameValue);
leftNodeValue_ = JSTypes.intToDouble(leftNodeValue_int);
} else {
Object leftNodeValue__ = super.leftNode.execute(frameValue);
leftNodeValue_ = JSTypesGen.expectImplicitDouble((state_0 & 0x700000) >>> 20 /* get-int ImplicitCast[type=double, index=0] */, leftNodeValue__);
}
} catch (UnexpectedResultException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
Object rightNodeValue = super.rightNode.execute(frameValue);
return JSTypesGen.expectDouble(executeAndSpecialize(ex.getResult(), rightNodeValue));
}
int rightNodeValue_int = 0;
double rightNodeValue_;
try {
if ((state_0 & 0x3000000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
rightNodeValue_ = super.rightNode.executeDouble(frameValue);
} else if ((state_0 & 0x2800000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
rightNodeValue_int = super.rightNode.executeInt(frameValue);
rightNodeValue_ = JSTypes.intToDouble(rightNodeValue_int);
} else {
Object rightNodeValue__ = super.rightNode.execute(frameValue);
rightNodeValue_ = JSTypesGen.expectImplicitDouble((state_0 & 0x3800000) >>> 23 /* get-int ImplicitCast[type=double, index=1] */, rightNodeValue__);
}
} catch (UnexpectedResultException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
return JSTypesGen.expectDouble(executeAndSpecialize(((state_0 & 0x500000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) ? (Object) leftNodeValue_int : (Object) leftNodeValue_), ex.getResult()));
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[JSAddNode.doDouble(double, double)] */) {
return JSAddNode.doDouble(leftNodeValue_, rightNodeValue_);
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return JSTypesGen.expectDouble(executeAndSpecialize(((state_0 & 0x500000) == 0 /* only-active ImplicitCast[type=double, index=0] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) ? (Object) leftNodeValue_int : (Object) leftNodeValue_), ((state_0 & 0x2800000) == 0 /* only-active ImplicitCast[type=double, index=1] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) ? (Object) rightNodeValue_int : (Object) rightNodeValue_)));
}
@Override
public int executeInt(VirtualFrame frameValue) throws UnexpectedResultException {
int state_0 = this.state_0_;
if ((state_0 & 0xe0018) != 0 /* is SpecializationActive[JSAddNode.doIntOverflow(int, int)] || SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] || SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] || SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
return JSTypesGen.expectInteger(execute(frameValue));
}
int leftNodeValue_;
try {
leftNodeValue_ = super.leftNode.executeInt(frameValue);
} catch (UnexpectedResultException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
Object rightNodeValue = super.rightNode.execute(frameValue);
return JSTypesGen.expectInteger(executeAndSpecialize(ex.getResult(), rightNodeValue));
}
int rightNodeValue_;
try {
rightNodeValue_ = super.rightNode.executeInt(frameValue);
} catch (UnexpectedResultException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
return JSTypesGen.expectInteger(executeAndSpecialize(leftNodeValue_, ex.getResult()));
}
if ((state_0 & 0b11) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] || SpecializationActive[JSAddNode.doInt(int, int)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSAddNode.doIntTruncate(int, int)] */) {
assert DSLSupport.assertIdempotence((truncate));
return JSAddNode.doIntTruncate(leftNodeValue_, rightNodeValue_);
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSAddNode.doInt(int, int)] */) {
assert DSLSupport.assertIdempotence((!(truncate)));
try {
return JSAddNode.doInt(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[JSAddNode.doInt(int, int)] */;
state_0 = state_0 | 0b100 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return JSTypesGen.expectInteger(executeAndSpecialize(leftNodeValue_, rightNodeValue_));
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return JSTypesGen.expectInteger(executeAndSpecialize(leftNodeValue_, rightNodeValue_));
}
@Override
public void executeVoid(VirtualFrame frameValue) {
int state_0 = this.state_0_;
try {
if ((state_0 & 0xff558) == 0 /* only-active SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
executeInt(frameValue);
return;
} else if ((state_0 & 0xfe55b) == 0 /* only-active SpecializationActive[JSAddNode.doDouble(double, double)] */ && ((state_0 & 0xff55b) != 0 /* is-not SpecializationActive[JSAddNode.doIntTruncate(int, int)] && SpecializationActive[JSAddNode.doInt(int, int)] && SpecializationActive[JSAddNode.doIntOverflow(int, int)] && SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] && SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] && SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] && SpecializationActive[JSAddNode.doDouble(double, double)] && SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] && SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] && SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] && SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] && SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] && SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */)) {
executeDouble(frameValue);
return;
}
execute(frameValue);
return;
} catch (UnexpectedResultException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
return;
}
}
private Object executeAndSpecialize(Object leftNodeValue, Object rightNodeValue) {
int state_0 = this.state_0_;
if (leftNodeValue instanceof Integer) {
int leftNodeValue_ = (int) leftNodeValue;
if (rightNodeValue instanceof Integer) {
int rightNodeValue_ = (int) rightNodeValue;
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
if ((truncate)) {
state_0 = state_0 | 0b1 /* add SpecializationActive[JSAddNode.doIntTruncate(int, int)] */;
this.state_0_ = state_0;
return JSAddNode.doIntTruncate(leftNodeValue_, rightNodeValue_);
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && ((state_0 & 0b100)) == 0 /* is-not SpecializationExcluded */) {
if ((!(truncate))) {
state_0 = state_0 | 0b10 /* add SpecializationActive[JSAddNode.doInt(int, int)] */;
this.state_0_ = state_0;
try {
return JSAddNode.doInt(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffffd /* remove SpecializationActive[JSAddNode.doInt(int, int)] */;
state_0 = state_0 | 0b100 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((!(truncate))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[JSAddNode.doIntOverflow(int, int)] */;
this.state_0_ = state_0;
try {
return JSAddNode.doIntOverflow(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[JSAddNode.doIntOverflow(int, int)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && ((state_0 & 0b10000000)) == 0 /* is-not SpecializationExcluded */ && rightNodeValue instanceof SafeInteger) {
SafeInteger rightNodeValue_ = (SafeInteger) rightNodeValue;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */;
this.state_0_ = state_0;
try {
return JSAddNode.doIntSafeInteger(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffbf /* remove SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)] */;
state_0 = state_0 | 0b10000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
if (leftNodeValue instanceof SafeInteger) {
SafeInteger leftNodeValue_ = (SafeInteger) leftNodeValue;
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && ((state_0 & 0b1000000000)) == 0 /* is-not SpecializationExcluded */ && rightNodeValue instanceof Integer) {
int rightNodeValue_ = (int) rightNodeValue;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */;
this.state_0_ = state_0;
try {
return JSAddNode.doSafeIntegerInt(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffeff /* remove SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)] */;
state_0 = state_0 | 0b1000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */ && rightNodeValue instanceof SafeInteger) {
SafeInteger rightNodeValue_ = (SafeInteger) rightNodeValue;
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */;
this.state_0_ = state_0;
try {
return JSAddNode.doSafeInteger(leftNodeValue_, rightNodeValue_);
} catch (ArithmeticException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(leftNodeValue_, rightNodeValue_);
}
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */) {
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_0 = (state_0 | (doubleCast0 << 20) /* set-int ImplicitCast[type=double, index=0] */);
state_0 = (state_0 | (doubleCast1 << 23) /* set-int ImplicitCast[type=double, index=1] */);
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[JSAddNode.doDouble(double, double)] */;
this.state_0_ = state_0;
return JSAddNode.doDouble(leftNodeValue_, rightNodeValue_);
}
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && leftNodeValue instanceof BigInt) {
BigInt leftNodeValue_ = (BigInt) leftNodeValue;
if (rightNodeValue instanceof BigInt) {
BigInt rightNodeValue_ = (BigInt) rightNodeValue;
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)] */;
this.state_0_ = state_0;
return doBigInt(leftNodeValue_, rightNodeValue_);
}
}
if (leftNodeValue instanceof TruffleString) {
TruffleString leftNodeValue_ = (TruffleString) leftNodeValue;
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && rightNodeValue instanceof TruffleString) {
TruffleString rightNodeValue_ = (TruffleString) rightNodeValue;
JSConcatStringsNode concatStringsNode_;
JSConcatStringsNode concatStringsNode__shared = this.concatStringsNode;
if (concatStringsNode__shared != null) {
concatStringsNode_ = concatStringsNode__shared;
} else {
concatStringsNode_ = this.insert((JSConcatStringsNode.create()));
if (concatStringsNode_ == 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.concatStringsNode == null) {
VarHandle.storeStoreFence();
this.concatStringsNode = concatStringsNode_;
}
state_0 = state_0 | 0b100000000000000 /* add SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)] */;
this.state_0_ = state_0;
return doString(leftNodeValue_, rightNodeValue_, concatStringsNode_);
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && rightNodeValue instanceof Integer) {
int rightNodeValue_ = (int) rightNodeValue;
JSConcatStringsNode concatStringsNode_1;
JSConcatStringsNode concatStringsNode_1_shared = this.concatStringsNode;
if (concatStringsNode_1_shared != null) {
concatStringsNode_1 = concatStringsNode_1_shared;
} else {
concatStringsNode_1 = this.insert((JSConcatStringsNode.create()));
if (concatStringsNode_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.concatStringsNode == null) {
VarHandle.storeStoreFence();
this.concatStringsNode = concatStringsNode_1;
}
FromLongNode stringFromLongNode_;
FromLongNode stringFromLongNode__shared = this.stringFromLongNode;
if (stringFromLongNode__shared != null) {
stringFromLongNode_ = stringFromLongNode__shared;
} else {
stringFromLongNode_ = this.insert((FromLongNode.create()));
if (stringFromLongNode_ == 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.stringFromLongNode == null) {
VarHandle.storeStoreFence();
this.stringFromLongNode = stringFromLongNode_;
}
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)] */;
this.state_0_ = state_0;
return doStringInt(leftNodeValue_, rightNodeValue_, concatStringsNode_1, stringFromLongNode_);
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && leftNodeValue instanceof Integer) {
int leftNodeValue_ = (int) leftNodeValue;
if (rightNodeValue instanceof TruffleString) {
TruffleString rightNodeValue_ = (TruffleString) rightNodeValue;
JSConcatStringsNode concatStringsNode_2;
JSConcatStringsNode concatStringsNode_2_shared = this.concatStringsNode;
if (concatStringsNode_2_shared != null) {
concatStringsNode_2 = concatStringsNode_2_shared;
} else {
concatStringsNode_2 = this.insert((JSConcatStringsNode.create()));
if (concatStringsNode_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.concatStringsNode == null) {
VarHandle.storeStoreFence();
this.concatStringsNode = concatStringsNode_2;
}
FromLongNode stringFromLongNode_1;
FromLongNode stringFromLongNode_1_shared = this.stringFromLongNode;
if (stringFromLongNode_1_shared != null) {
stringFromLongNode_1 = stringFromLongNode_1_shared;
} else {
stringFromLongNode_1 = this.insert((FromLongNode.create()));
if (stringFromLongNode_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.stringFromLongNode == null) {
VarHandle.storeStoreFence();
this.stringFromLongNode = stringFromLongNode_1;
}
state_0 = state_0 | 0x10000 /* add SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)] */;
this.state_0_ = state_0;
return doIntString(leftNodeValue_, rightNodeValue_, concatStringsNode_2, stringFromLongNode_1);
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && leftNodeValue instanceof TruffleString) {
TruffleString leftNodeValue_ = (TruffleString) leftNodeValue;
if ((JSGuards.isNumber(rightNodeValue))) {
JSConcatStringsNode concatStringsNode_3;
JSConcatStringsNode concatStringsNode_3_shared = this.concatStringsNode;
if (concatStringsNode_3_shared != null) {
concatStringsNode_3 = concatStringsNode_3_shared;
} else {
concatStringsNode_3 = this.insert((JSConcatStringsNode.create()));
if (concatStringsNode_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.concatStringsNode == null) {
VarHandle.storeStoreFence();
this.concatStringsNode = concatStringsNode_3;
}
JSDoubleToStringNode doubleToStringNode_;
JSDoubleToStringNode doubleToStringNode__shared = this.doubleToStringNode;
if (doubleToStringNode__shared != null) {
doubleToStringNode_ = doubleToStringNode__shared;
} else {
doubleToStringNode_ = this.insert((JSDoubleToStringNodeGen.create()));
if (doubleToStringNode_ == 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.doubleToStringNode == null) {
VarHandle.storeStoreFence();
this.doubleToStringNode = doubleToStringNode_;
}
state_0 = state_0 | 0x20000 /* add SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)] */;
this.state_0_ = state_0;
return doStringNumber(leftNodeValue_, rightNodeValue, concatStringsNode_3, doubleToStringNode_);
}
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */ && rightNodeValue instanceof TruffleString) {
TruffleString rightNodeValue_ = (TruffleString) rightNodeValue;
if ((JSGuards.isNumber(leftNodeValue))) {
JSConcatStringsNode concatStringsNode_4;
JSConcatStringsNode concatStringsNode_4_shared = this.concatStringsNode;
if (concatStringsNode_4_shared != null) {
concatStringsNode_4 = concatStringsNode_4_shared;
} else {
concatStringsNode_4 = this.insert((JSConcatStringsNode.create()));
if (concatStringsNode_4 == 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.concatStringsNode == null) {
VarHandle.storeStoreFence();
this.concatStringsNode = concatStringsNode_4;
}
JSDoubleToStringNode doubleToStringNode_1;
JSDoubleToStringNode doubleToStringNode_1_shared = this.doubleToStringNode;
if (doubleToStringNode_1_shared != null) {
doubleToStringNode_1 = doubleToStringNode_1_shared;
} else {
doubleToStringNode_1 = this.insert((JSDoubleToStringNodeGen.create()));
if (doubleToStringNode_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.doubleToStringNode == null) {
VarHandle.storeStoreFence();
this.doubleToStringNode = doubleToStringNode_1;
}
state_0 = state_0 | 0x40000 /* add SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] */;
this.state_0_ = state_0;
return doNumberString(leftNodeValue, rightNodeValue_, concatStringsNode_4, doubleToStringNode_1);
}
}
if ((hasOverloadedOperators(leftNodeValue) || hasOverloadedOperators(rightNodeValue))) {
JSOverloadedBinaryNode overloadedOperatorNode__ = this.insert((JSOverloadedBinaryNode.createHintDefault(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.");
VarHandle.storeStoreFence();
this.overloaded_overloadedOperatorNode_ = overloadedOperatorNode__;
state_0 = state_0 | 0x80000 /* add SpecializationActive[JSAddNode.doOverloaded(Object, Object, JSOverloadedBinaryNode)] */;
this.state_0_ = state_0;
return doOverloaded(leftNodeValue, rightNodeValue, overloadedOperatorNode__);
}
{
Node node__ = null;
if ((!(hasOverloadedOperators(leftNodeValue))) && (!(hasOverloadedOperators(rightNodeValue)))) {
PrimitiveConversionData s14_ = this.insert(new PrimitiveConversionData());
node__ = (s14_);
JSToPrimitiveNode toPrimitiveA__ = s14_.insert((JSToPrimitiveNode.createHintDefault()));
Objects.requireNonNull(toPrimitiveA__, "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.");
s14_.toPrimitiveA_ = toPrimitiveA__;
JSToPrimitiveNode toPrimitiveB__ = s14_.insert((JSToPrimitiveNode.createHintDefault()));
Objects.requireNonNull(toPrimitiveB__, "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.");
s14_.toPrimitiveB_ = toPrimitiveB__;
JSToNumericNode toNumericA__ = s14_.insert((JSToNumericNode.create()));
Objects.requireNonNull(toNumericA__, "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.");
s14_.toNumericA_ = toNumericA__;
JSToNumericNode toNumericB__ = s14_.insert((JSToNumericNode.create()));
Objects.requireNonNull(toNumericB__, "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.");
s14_.toNumericB_ = toNumericB__;
JSToStringNode toStringA__ = s14_.insert((JSToStringNode.create()));
Objects.requireNonNull(toStringA__, "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.");
s14_.toStringA_ = toStringA__;
JSToStringNode toStringB__ = s14_.insert((JSToStringNode.create()));
Objects.requireNonNull(toStringB__, "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.");
s14_.toStringB_ = toStringB__;
s14_.add_ = s14_.insert((copyRecursive()));
VarHandle.storeStoreFence();
this.primitiveConversion_cache = s14_;
this.concatStringsNode = null;
this.stringFromLongNode = null;
this.doubleToStringNode = null;
state_0 = state_0 & 0xfff80aac /* remove SpecializationActive[JSAddNode.doIntTruncate(int, int)], SpecializationActive[JSAddNode.doInt(int, int)], SpecializationActive[JSAddNode.doIntOverflow(int, int)], SpecializationActive[JSAddNode.doIntSafeInteger(int, SafeInteger)], SpecializationActive[JSAddNode.doSafeIntegerInt(SafeInteger, int)], SpecializationActive[JSAddNode.doSafeInteger(SafeInteger, SafeInteger)], SpecializationActive[JSAddNode.doDouble(double, double)], SpecializationActive[JSAddNode.doBigInt(BigInt, BigInt)], SpecializationActive[JSAddNode.doString(TruffleString, TruffleString, JSConcatStringsNode)], SpecializationActive[JSAddNode.doStringInt(TruffleString, int, JSConcatStringsNode, FromLongNode)], SpecializationActive[JSAddNode.doIntString(int, TruffleString, JSConcatStringsNode, FromLongNode)], SpecializationActive[JSAddNode.doStringNumber(TruffleString, Object, JSConcatStringsNode, JSDoubleToStringNode)], SpecializationActive[JSAddNode.doNumberString(Object, TruffleString, JSConcatStringsNode, JSDoubleToStringNode)] */;
state_0 = state_0 | 0b1000 /* add SpecializationActive[JSAddNode.doPrimitiveConversion(Object, Object, Node, JSToPrimitiveNode, JSToPrimitiveNode, JSToNumericNode, JSToNumericNode, JSToStringNode, JSToStringNode, InlinedConditionProfile, InlinedConditionProfile, JSAddNode, InlinedBranchProfile)] */;
this.state_0_ = state_0;
return JSAddNode.doPrimitiveConversion(leftNodeValue, rightNodeValue, node__, toPrimitiveA__, toPrimitiveB__, toNumericA__, toNumericB__, toStringA__, toStringB__, INLINED_PRIMITIVE_CONVERSION_PROFILE_A_, INLINED_PRIMITIVE_CONVERSION_PROFILE_B_, s14_.add_, INLINED_PRIMITIVE_CONVERSION_MIXED_NUMERIC_TYPES_);
}
}
throw new UnsupportedSpecializationException(this, new Node[] {super.leftNode, super.rightNode}, leftNodeValue, rightNodeValue);
}
@NeverDefault
public static JSAddNode create(boolean truncate, JavaScriptNode left, JavaScriptNode right) {
return new JSAddNodeGen(truncate, left, right);
}
@GeneratedBy(JSAddNode.class)
@DenyReplace
private static final class PrimitiveConversionData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-1: InlinedCache
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link InlinedConditionProfile} profileA
* Inline method: {@link InlinedConditionProfile#inline}
* 2-3: InlinedCache
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link InlinedConditionProfile} profileB
* Inline method: {@link InlinedConditionProfile#inline}
* 4: InlinedCache
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link InlinedBranchProfile} mixedNumericTypes
* Inline method: {@link InlinedBranchProfile#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int primitiveConversion_state_0_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSToPrimitiveNode} toPrimitiveA
*/
@Child JSToPrimitiveNode toPrimitiveA_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSToPrimitiveNode} toPrimitiveB
*/
@Child JSToPrimitiveNode toPrimitiveB_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSToNumericNode} toNumericA
*/
@Child JSToNumericNode toNumericA_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSToNumericNode} toNumericB
*/
@Child JSToNumericNode toNumericB_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSToStringNode} toStringA
*/
@Child JSToStringNode toStringA_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSToStringNode} toStringB
*/
@Child JSToStringNode toStringB_;
/**
* Source Info:
* Specialization: {@link JSAddNode#doPrimitiveConversion}
* Parameter: {@link JSAddNode} add
*/
@Child JSAddNode add_;
PrimitiveConversionData() {
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy