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

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

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