com.oracle.graal.python.lib.PyObjectRichCompareBoolFactory Maven / Gradle / Ivy
// CheckStyle: start generated
package com.oracle.graal.python.lib;
import com.oracle.graal.python.builtins.objects.ints.PInt;
import com.oracle.graal.python.builtins.objects.type.TypeNodes.IsSameTypeNode;
import com.oracle.graal.python.builtins.objects.type.TypeNodesFactory.IsSameTypeNodeGen;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.Comparison;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.ComparisonBaseNode;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.EqNode;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.GeNode;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.GtNode;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.LeNode;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.LtNode;
import com.oracle.graal.python.lib.PyObjectRichCompareBool.NeNode;
import com.oracle.graal.python.nodes.PGuards;
import com.oracle.graal.python.nodes.PRaiseNode.Lazy;
import com.oracle.graal.python.nodes.PRaiseNodeGen.LazyNodeGen;
import com.oracle.graal.python.nodes.call.special.CallBinaryMethodNode;
import com.oracle.graal.python.nodes.call.special.LookupSpecialMethodSlotNode;
import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
import com.oracle.graal.python.nodes.object.GetClassNode;
import com.oracle.graal.python.nodes.object.GetClassNodeGen;
import com.oracle.graal.python.nodes.object.IsNode;
import com.oracle.graal.python.util.OverflowException;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.RequiredField;
import com.oracle.truffle.api.dsl.InlineSupport.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.frame.Frame;
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.NodeCost;
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleString.CompareIntsUTF32Node;
import com.oracle.truffle.api.strings.TruffleString.EqualNode;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;
@GeneratedBy(PyObjectRichCompareBool.class)
@SuppressWarnings("javadoc")
public final class PyObjectRichCompareBoolFactory {
/**
* Debug Info:
* Specialization {@link ComparisonBaseNode#doBB}
* Activation probability: 0.08658
* With/without class size: 5/0 bytes
* Specialization {@link ComparisonBaseNode#doII}
* Activation probability: 0.08268
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIL}
* Activation probability: 0.07879
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doID}
* Activation probability: 0.07489
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIPNoOVerflow}
* Activation probability: 0.07100
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIP}
* Activation probability: 0.06710
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLL}
* Activation probability: 0.06320
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLI}
* Activation probability: 0.05931
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLD}
* Activation probability: 0.05541
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLPNoOVerflow}
* Activation probability: 0.05152
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLP}
* Activation probability: 0.04762
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPINoOverflow}
* Activation probability: 0.04372
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPI}
* Activation probability: 0.03983
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPLNoOverflow}
* Activation probability: 0.03593
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPL}
* Activation probability: 0.03203
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPP}
* Activation probability: 0.02814
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDD}
* Activation probability: 0.02424
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDI}
* Activation probability: 0.02035
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDL}
* Activation probability: 0.01645
* With/without class size: 4/0 bytes
* Specialization {@link EqNode#doSS}
* Activation probability: 0.01255
* With/without class size: 4/4 bytes
* Specialization {@link ComparisonBaseNode#doGeneric}
* Activation probability: 0.00866
* With/without class size: 4/69 bytes
*
*/
@GeneratedBy(EqNode.class)
@SuppressWarnings("javadoc")
public static final class EqNodeGen extends EqNode {
private static final StateField GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_0_");
private static final StateField GENERIC__EQ_NODE_GENERIC_STATE_1_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_1_");
private static final StateField GENERIC__EQ_NODE_GENERIC_STATE_2_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_2_");
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private static final GetClassNode INLINED_GENERIC_GET_CLASS_A_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private static final GetClassNode INLINED_GENERIC_GET_CLASS_B_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__EQ_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private static final InlinedConditionProfile INLINED_GENERIC_REVERSED_FIRST_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private static final IsSameTypeNode INLINED_GENERIC_IS_SAME_TYPE_NODE_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private static final PyObjectIsTrueNode INLINED_GENERIC_IS_TRUE_NODE_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__EQ_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private static final Lazy INLINED_GENERIC_RAISE_NODE_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
private static final Uncached UNCACHED = new Uncached();
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link EqNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
@CompilationFinal private int state_0_;
/**
* Source Info:
* Specialization: {@link EqNode#doSS}
* Parameter: {@link EqualNode} equalNode
*/
@Child private EqualNode sS_equalNode_;
@Child private GenericData generic_cache;
private EqNodeGen() {
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_;
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.EqNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.EqNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
EqualNode equalNode__ = this.sS_equalNode_;
if (equalNode__ != null) {
return EqNode.doSS(arg1Value_, arg2Value_, arg3Value, equalNode__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache;
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, INLINED_GENERIC_GET_CLASS_A_, INLINED_GENERIC_GET_CLASS_B_, INLINED_GENERIC_REVERSED_FIRST_, INLINED_GENERIC_IS_SAME_TYPE_NODE_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, INLINED_GENERIC_IS_TRUE_NODE_, INLINED_GENERIC_RAISE_NODE_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_;
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
EqualNode equalNode__ = this.insert((EqualNode.create()));
Objects.requireNonNull(equalNode__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, EqualNode)' cache 'equalNode' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_equalNode_ = equalNode__;
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.EqNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] */;
this.state_0_ = state_0;
return EqNode.doSS(arg1Value_, arg2Value_, arg3Value, equalNode__);
}
}
GenericData s20_ = this.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache = s20_;
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, INLINED_GENERIC_GET_CLASS_A_, INLINED_GENERIC_GET_CLASS_B_, INLINED_GENERIC_REVERSED_FIRST_, INLINED_GENERIC_IS_SAME_TYPE_NODE_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, INLINED_GENERIC_IS_TRUE_NODE_, INLINED_GENERIC_RAISE_NODE_);
}
@Override
public NodeCost getCost() {
int state_0 = this.state_0_;
if ((state_0 & 0x1fdb7df) == 0) {
return NodeCost.UNINITIALIZED;
} else {
if (((state_0 & 0x1fdb7df) & ((state_0 & 0x1fdb7df) - 1)) == 0 /* is-single */) {
return NodeCost.MONOMORPHIC;
}
}
return NodeCost.POLYMORPHIC;
}
@NeverDefault
public static EqNode create() {
return new EqNodeGen();
}
@NeverDefault
public static EqNode getUncached() {
return EqNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#sS_equalNode_}
*
- {@link Inlined#generic_cache}
*
*/
@NeverDefault
public static EqNode inline(@RequiredField(bits = 25, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new EqNodeGen.Inlined(target);
}
@GeneratedBy(EqNode.class)
@DenyReplace
private static final class Inlined extends EqNode {
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link EqNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
private final StateField state_0_;
private final ReferenceField sS_equalNode_;
private final ReferenceField generic_cache;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassA_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassB_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private final InlinedConditionProfile generic_reversedFirst_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private final IsSameTypeNode generic_isSameTypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private final PyObjectIsTrueNode generic_isTrueNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy generic_raiseNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(EqNode.class);
this.state_0_ = target.getState(0, 25);
this.sS_equalNode_ = target.getReference(1, EqualNode.class);
this.generic_cache = target.getReference(2, GenericData.class);
this.generic_getClassA_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
this.generic_getClassB_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__EQ_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
this.generic_reversedFirst_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
this.generic_isSameTypeNode_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
this.generic_isTrueNode_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__EQ_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
this.generic_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__EQ_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.EqNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.EqNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
EqualNode equalNode__ = this.sS_equalNode_.get(arg0Value);
if (equalNode__ != null) {
return EqNode.doSS(arg1Value_, arg2Value_, arg3Value, equalNode__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache.get(arg0Value);
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, this.generic_isTrueNode_, this.generic_raiseNode_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
EqualNode equalNode__ = arg0Value.insert((EqualNode.create()));
Objects.requireNonNull(equalNode__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, EqualNode)' cache 'equalNode' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_equalNode_.set(arg0Value, equalNode__);
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.EqNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] */;
this.state_0_.set(arg0Value, state_0);
return EqNode.doSS(arg1Value_, arg2Value_, arg3Value, equalNode__);
}
}
GenericData s20_ = arg0Value.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache.set(arg0Value, s20_);
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, this.generic_isTrueNode_, this.generic_raiseNode_);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(EqNode.class)
@DenyReplace
private static final class GenericData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* 17-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
* 19-24: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* 25-28: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* 29: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_1_;
/**
* State Info:
* 0-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsNode} isNode
*/
@Child IsNode isNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassA__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassB__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isSameTypeNode__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSubtypeNode} isSubtypeNode
*/
@Child IsSubtypeNode isSubtypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupMethod
*/
@Child LookupSpecialMethodSlotNode lookupMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupReverseMethod
*/
@Child LookupSpecialMethodSlotNode lookupReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callMethod
*/
@Child CallBinaryMethodNode callMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callReverseMethod
*/
@Child CallBinaryMethodNode callReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Object} field2
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object generic_isTrueNode__field2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field3_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field4_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field5_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field6_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_raiseNode__field1_;
GenericData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(EqNode.class)
@DenyReplace
private static final class Uncached extends EqNode {
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
return EqNode.doSS(arg1Value_, arg2Value_, arg3Value, (EqualNode.getUncached()));
}
}
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, arg3Value, (IsNode.getUncached()), (GetClassNode.getUncached()), (GetClassNode.getUncached()), (InlinedConditionProfile.getUncached()), (IsSameTypeNodeGen.getUncached()), (IsSubtypeNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getSlot())), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getReverseSlot())), (CallBinaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached()), (PyObjectIsTrueNode.getUncached()), (Lazy.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
/**
* Debug Info:
* Specialization {@link ComparisonBaseNode#doBB}
* Activation probability: 0.08658
* With/without class size: 5/0 bytes
* Specialization {@link ComparisonBaseNode#doII}
* Activation probability: 0.08268
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIL}
* Activation probability: 0.07879
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doID}
* Activation probability: 0.07489
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIPNoOVerflow}
* Activation probability: 0.07100
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIP}
* Activation probability: 0.06710
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLL}
* Activation probability: 0.06320
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLI}
* Activation probability: 0.05931
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLD}
* Activation probability: 0.05541
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLPNoOVerflow}
* Activation probability: 0.05152
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLP}
* Activation probability: 0.04762
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPINoOverflow}
* Activation probability: 0.04372
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPI}
* Activation probability: 0.03983
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPLNoOverflow}
* Activation probability: 0.03593
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPL}
* Activation probability: 0.03203
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPP}
* Activation probability: 0.02814
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDD}
* Activation probability: 0.02424
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDI}
* Activation probability: 0.02035
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDL}
* Activation probability: 0.01645
* With/without class size: 4/0 bytes
* Specialization {@link NeNode#doSS}
* Activation probability: 0.01255
* With/without class size: 4/4 bytes
* Specialization {@link ComparisonBaseNode#doGeneric}
* Activation probability: 0.00866
* With/without class size: 4/69 bytes
*
*/
@GeneratedBy(NeNode.class)
@SuppressWarnings("javadoc")
public static final class NeNodeGen {
private static final StateField GENERIC__NE_NODE_GENERIC_STATE_0_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_0_");
private static final StateField GENERIC__NE_NODE_GENERIC_STATE_1_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_1_");
private static final StateField GENERIC__NE_NODE_GENERIC_STATE_2_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_2_");
private static final Uncached UNCACHED = new Uncached();
@NeverDefault
public static NeNode getUncached() {
return NeNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#sS_equalNode_}
*
- {@link Inlined#generic_cache}
*
*/
@NeverDefault
public static NeNode inline(@RequiredField(bits = 25, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new NeNodeGen.Inlined(target);
}
@GeneratedBy(NeNode.class)
@DenyReplace
private static final class Inlined extends NeNode {
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link NeNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
private final StateField state_0_;
private final ReferenceField sS_equalNode_;
private final ReferenceField generic_cache;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassA_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassB_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private final InlinedConditionProfile generic_reversedFirst_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private final IsSameTypeNode generic_isSameTypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private final PyObjectIsTrueNode generic_isTrueNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy generic_raiseNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(NeNode.class);
this.state_0_ = target.getState(0, 25);
this.sS_equalNode_ = target.getReference(1, EqualNode.class);
this.generic_cache = target.getReference(2, GenericData.class);
this.generic_getClassA_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__NE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
this.generic_getClassB_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__NE_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
this.generic_reversedFirst_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__NE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
this.generic_isSameTypeNode_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__NE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
this.generic_isTrueNode_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__NE_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__NE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
this.generic_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__NE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.NeNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.NeNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
EqualNode equalNode__ = this.sS_equalNode_.get(arg0Value);
if (equalNode__ != null) {
return NeNode.doSS(arg1Value_, arg2Value_, arg3Value, equalNode__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache.get(arg0Value);
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, this.generic_isTrueNode_, this.generic_raiseNode_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
EqualNode equalNode__ = arg0Value.insert((EqualNode.create()));
Objects.requireNonNull(equalNode__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, EqualNode)' cache 'equalNode' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_equalNode_.set(arg0Value, equalNode__);
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.NeNode.doSS(TruffleString, TruffleString, Comparison, EqualNode)] */;
this.state_0_.set(arg0Value, state_0);
return NeNode.doSS(arg1Value_, arg2Value_, arg3Value, equalNode__);
}
}
GenericData s20_ = arg0Value.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache.set(arg0Value, s20_);
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, this.generic_isTrueNode_, this.generic_raiseNode_);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(NeNode.class)
@DenyReplace
private static final class GenericData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* 17-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
* 19-24: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* 25-28: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* 29: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_1_;
/**
* State Info:
* 0-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsNode} isNode
*/
@Child IsNode isNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassA__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassB__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isSameTypeNode__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSubtypeNode} isSubtypeNode
*/
@Child IsSubtypeNode isSubtypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupMethod
*/
@Child LookupSpecialMethodSlotNode lookupMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupReverseMethod
*/
@Child LookupSpecialMethodSlotNode lookupReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callMethod
*/
@Child CallBinaryMethodNode callMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callReverseMethod
*/
@Child CallBinaryMethodNode callReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Object} field2
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object generic_isTrueNode__field2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field3_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field4_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field5_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field6_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_raiseNode__field1_;
GenericData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(NeNode.class)
@DenyReplace
private static final class Uncached extends NeNode {
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
return NeNode.doSS(arg1Value_, arg2Value_, arg3Value, (EqualNode.getUncached()));
}
}
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, arg3Value, (IsNode.getUncached()), (GetClassNode.getUncached()), (GetClassNode.getUncached()), (InlinedConditionProfile.getUncached()), (IsSameTypeNodeGen.getUncached()), (IsSubtypeNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getSlot())), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getReverseSlot())), (CallBinaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached()), (PyObjectIsTrueNode.getUncached()), (Lazy.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
/**
* Debug Info:
* Specialization {@link ComparisonBaseNode#doBB}
* Activation probability: 0.08658
* With/without class size: 5/0 bytes
* Specialization {@link ComparisonBaseNode#doII}
* Activation probability: 0.08268
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIL}
* Activation probability: 0.07879
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doID}
* Activation probability: 0.07489
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIPNoOVerflow}
* Activation probability: 0.07100
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIP}
* Activation probability: 0.06710
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLL}
* Activation probability: 0.06320
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLI}
* Activation probability: 0.05931
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLD}
* Activation probability: 0.05541
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLPNoOVerflow}
* Activation probability: 0.05152
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLP}
* Activation probability: 0.04762
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPINoOverflow}
* Activation probability: 0.04372
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPI}
* Activation probability: 0.03983
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPLNoOverflow}
* Activation probability: 0.03593
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPL}
* Activation probability: 0.03203
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPP}
* Activation probability: 0.02814
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDD}
* Activation probability: 0.02424
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDI}
* Activation probability: 0.02035
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDL}
* Activation probability: 0.01645
* With/without class size: 4/0 bytes
* Specialization {@link LtNode#doSS}
* Activation probability: 0.01255
* With/without class size: 4/4 bytes
* Specialization {@link ComparisonBaseNode#doGeneric}
* Activation probability: 0.00866
* With/without class size: 4/69 bytes
*
*/
@GeneratedBy(LtNode.class)
@SuppressWarnings("javadoc")
public static final class LtNodeGen {
private static final StateField GENERIC__LT_NODE_GENERIC_STATE_0_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_0_");
private static final StateField GENERIC__LT_NODE_GENERIC_STATE_1_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_1_");
private static final StateField GENERIC__LT_NODE_GENERIC_STATE_2_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_2_");
private static final Uncached UNCACHED = new Uncached();
@NeverDefault
public static LtNode getUncached() {
return LtNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#sS_compareIntsUTF32Node_}
*
- {@link Inlined#generic_cache}
*
*/
@NeverDefault
public static LtNode inline(@RequiredField(bits = 25, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new LtNodeGen.Inlined(target);
}
@GeneratedBy(LtNode.class)
@DenyReplace
private static final class Inlined extends LtNode {
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link LtNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
private final StateField state_0_;
private final ReferenceField sS_compareIntsUTF32Node_;
private final ReferenceField generic_cache;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassA_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassB_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private final InlinedConditionProfile generic_reversedFirst_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private final IsSameTypeNode generic_isSameTypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private final PyObjectIsTrueNode generic_isTrueNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy generic_raiseNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(LtNode.class);
this.state_0_ = target.getState(0, 25);
this.sS_compareIntsUTF32Node_ = target.getReference(1, CompareIntsUTF32Node.class);
this.generic_cache = target.getReference(2, GenericData.class);
this.generic_getClassA_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__LT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
this.generic_getClassB_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__LT_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
this.generic_reversedFirst_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__LT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
this.generic_isSameTypeNode_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__LT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
this.generic_isTrueNode_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__LT_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__LT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
this.generic_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__LT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.LtNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.LtNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
CompareIntsUTF32Node compareIntsUTF32Node__ = this.sS_compareIntsUTF32Node_.get(arg0Value);
if (compareIntsUTF32Node__ != null) {
return LtNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache.get(arg0Value);
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, this.generic_isTrueNode_, this.generic_raiseNode_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
CompareIntsUTF32Node compareIntsUTF32Node__ = arg0Value.insert((CompareIntsUTF32Node.create()));
Objects.requireNonNull(compareIntsUTF32Node__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)' cache 'compareIntsUTF32Node' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_compareIntsUTF32Node_.set(arg0Value, compareIntsUTF32Node__);
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.LtNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */;
this.state_0_.set(arg0Value, state_0);
return LtNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
GenericData s20_ = arg0Value.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache.set(arg0Value, s20_);
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, this.generic_isTrueNode_, this.generic_raiseNode_);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(LtNode.class)
@DenyReplace
private static final class GenericData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* 17-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
* 19-24: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* 25-28: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* 29: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_1_;
/**
* State Info:
* 0-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsNode} isNode
*/
@Child IsNode isNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassA__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassB__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isSameTypeNode__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSubtypeNode} isSubtypeNode
*/
@Child IsSubtypeNode isSubtypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupMethod
*/
@Child LookupSpecialMethodSlotNode lookupMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupReverseMethod
*/
@Child LookupSpecialMethodSlotNode lookupReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callMethod
*/
@Child CallBinaryMethodNode callMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callReverseMethod
*/
@Child CallBinaryMethodNode callReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Object} field2
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object generic_isTrueNode__field2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field3_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field4_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field5_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field6_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_raiseNode__field1_;
GenericData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(LtNode.class)
@DenyReplace
private static final class Uncached extends LtNode {
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
return LtNode.doSS(arg1Value_, arg2Value_, arg3Value, (CompareIntsUTF32Node.getUncached()));
}
}
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, arg3Value, (IsNode.getUncached()), (GetClassNode.getUncached()), (GetClassNode.getUncached()), (InlinedConditionProfile.getUncached()), (IsSameTypeNodeGen.getUncached()), (IsSubtypeNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getSlot())), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getReverseSlot())), (CallBinaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached()), (PyObjectIsTrueNode.getUncached()), (Lazy.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
/**
* Debug Info:
* Specialization {@link ComparisonBaseNode#doBB}
* Activation probability: 0.08658
* With/without class size: 5/0 bytes
* Specialization {@link ComparisonBaseNode#doII}
* Activation probability: 0.08268
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIL}
* Activation probability: 0.07879
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doID}
* Activation probability: 0.07489
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIPNoOVerflow}
* Activation probability: 0.07100
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIP}
* Activation probability: 0.06710
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLL}
* Activation probability: 0.06320
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLI}
* Activation probability: 0.05931
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLD}
* Activation probability: 0.05541
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLPNoOVerflow}
* Activation probability: 0.05152
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLP}
* Activation probability: 0.04762
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPINoOverflow}
* Activation probability: 0.04372
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPI}
* Activation probability: 0.03983
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPLNoOverflow}
* Activation probability: 0.03593
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPL}
* Activation probability: 0.03203
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPP}
* Activation probability: 0.02814
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDD}
* Activation probability: 0.02424
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDI}
* Activation probability: 0.02035
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDL}
* Activation probability: 0.01645
* With/without class size: 4/0 bytes
* Specialization {@link LeNode#doSS}
* Activation probability: 0.01255
* With/without class size: 4/4 bytes
* Specialization {@link ComparisonBaseNode#doGeneric}
* Activation probability: 0.00866
* With/without class size: 4/69 bytes
*
*/
@GeneratedBy(LeNode.class)
@SuppressWarnings("javadoc")
public static final class LeNodeGen extends LeNode {
private static final StateField GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_0_");
private static final StateField GENERIC__LE_NODE_GENERIC_STATE_1_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_1_");
private static final StateField GENERIC__LE_NODE_GENERIC_STATE_2_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_2_");
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private static final GetClassNode INLINED_GENERIC_GET_CLASS_A_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private static final GetClassNode INLINED_GENERIC_GET_CLASS_B_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__LE_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private static final InlinedConditionProfile INLINED_GENERIC_REVERSED_FIRST_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private static final IsSameTypeNode INLINED_GENERIC_IS_SAME_TYPE_NODE_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private static final PyObjectIsTrueNode INLINED_GENERIC_IS_TRUE_NODE_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__LE_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private static final Lazy INLINED_GENERIC_RAISE_NODE_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
private static final Uncached UNCACHED = new Uncached();
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link LeNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
@CompilationFinal private int state_0_;
/**
* Source Info:
* Specialization: {@link LeNode#doSS}
* Parameter: {@link CompareIntsUTF32Node} compareIntsUTF32Node
*/
@Child private CompareIntsUTF32Node sS_compareIntsUTF32Node_;
@Child private GenericData generic_cache;
private LeNodeGen() {
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_;
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.LeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.LeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
CompareIntsUTF32Node compareIntsUTF32Node__ = this.sS_compareIntsUTF32Node_;
if (compareIntsUTF32Node__ != null) {
return LeNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache;
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, INLINED_GENERIC_GET_CLASS_A_, INLINED_GENERIC_GET_CLASS_B_, INLINED_GENERIC_REVERSED_FIRST_, INLINED_GENERIC_IS_SAME_TYPE_NODE_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, INLINED_GENERIC_IS_TRUE_NODE_, INLINED_GENERIC_RAISE_NODE_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_;
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_ = state_0;
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_;
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_ = state_0;
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
CompareIntsUTF32Node compareIntsUTF32Node__ = this.insert((CompareIntsUTF32Node.create()));
Objects.requireNonNull(compareIntsUTF32Node__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)' cache 'compareIntsUTF32Node' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_compareIntsUTF32Node_ = compareIntsUTF32Node__;
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.LeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */;
this.state_0_ = state_0;
return LeNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
GenericData s20_ = this.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache = s20_;
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_ = state_0;
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, INLINED_GENERIC_GET_CLASS_A_, INLINED_GENERIC_GET_CLASS_B_, INLINED_GENERIC_REVERSED_FIRST_, INLINED_GENERIC_IS_SAME_TYPE_NODE_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, INLINED_GENERIC_IS_TRUE_NODE_, INLINED_GENERIC_RAISE_NODE_);
}
@Override
public NodeCost getCost() {
int state_0 = this.state_0_;
if ((state_0 & 0x1fdb7df) == 0) {
return NodeCost.UNINITIALIZED;
} else {
if (((state_0 & 0x1fdb7df) & ((state_0 & 0x1fdb7df) - 1)) == 0 /* is-single */) {
return NodeCost.MONOMORPHIC;
}
}
return NodeCost.POLYMORPHIC;
}
@NeverDefault
public static LeNode create() {
return new LeNodeGen();
}
@NeverDefault
public static LeNode getUncached() {
return LeNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#sS_compareIntsUTF32Node_}
*
- {@link Inlined#generic_cache}
*
*/
@NeverDefault
public static LeNode inline(@RequiredField(bits = 25, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new LeNodeGen.Inlined(target);
}
@GeneratedBy(LeNode.class)
@DenyReplace
private static final class Inlined extends LeNode {
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link LeNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
private final StateField state_0_;
private final ReferenceField sS_compareIntsUTF32Node_;
private final ReferenceField generic_cache;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassA_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassB_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private final InlinedConditionProfile generic_reversedFirst_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private final IsSameTypeNode generic_isSameTypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private final PyObjectIsTrueNode generic_isTrueNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy generic_raiseNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(LeNode.class);
this.state_0_ = target.getState(0, 25);
this.sS_compareIntsUTF32Node_ = target.getReference(1, CompareIntsUTF32Node.class);
this.generic_cache = target.getReference(2, GenericData.class);
this.generic_getClassA_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
this.generic_getClassB_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__LE_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
this.generic_reversedFirst_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
this.generic_isSameTypeNode_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
this.generic_isTrueNode_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__LE_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
this.generic_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__LE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.LeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.LeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
CompareIntsUTF32Node compareIntsUTF32Node__ = this.sS_compareIntsUTF32Node_.get(arg0Value);
if (compareIntsUTF32Node__ != null) {
return LeNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache.get(arg0Value);
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, this.generic_isTrueNode_, this.generic_raiseNode_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
CompareIntsUTF32Node compareIntsUTF32Node__ = arg0Value.insert((CompareIntsUTF32Node.create()));
Objects.requireNonNull(compareIntsUTF32Node__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)' cache 'compareIntsUTF32Node' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_compareIntsUTF32Node_.set(arg0Value, compareIntsUTF32Node__);
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.LeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */;
this.state_0_.set(arg0Value, state_0);
return LeNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
GenericData s20_ = arg0Value.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache.set(arg0Value, s20_);
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, this.generic_isTrueNode_, this.generic_raiseNode_);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(LeNode.class)
@DenyReplace
private static final class GenericData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* 17-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
* 19-24: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* 25-28: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* 29: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_1_;
/**
* State Info:
* 0-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsNode} isNode
*/
@Child IsNode isNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassA__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassB__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isSameTypeNode__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSubtypeNode} isSubtypeNode
*/
@Child IsSubtypeNode isSubtypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupMethod
*/
@Child LookupSpecialMethodSlotNode lookupMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupReverseMethod
*/
@Child LookupSpecialMethodSlotNode lookupReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callMethod
*/
@Child CallBinaryMethodNode callMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callReverseMethod
*/
@Child CallBinaryMethodNode callReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Object} field2
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object generic_isTrueNode__field2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field3_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field4_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field5_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field6_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_raiseNode__field1_;
GenericData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(LeNode.class)
@DenyReplace
private static final class Uncached extends LeNode {
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
return LeNode.doSS(arg1Value_, arg2Value_, arg3Value, (CompareIntsUTF32Node.getUncached()));
}
}
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, arg3Value, (IsNode.getUncached()), (GetClassNode.getUncached()), (GetClassNode.getUncached()), (InlinedConditionProfile.getUncached()), (IsSameTypeNodeGen.getUncached()), (IsSubtypeNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getSlot())), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getReverseSlot())), (CallBinaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached()), (PyObjectIsTrueNode.getUncached()), (Lazy.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
/**
* Debug Info:
* Specialization {@link ComparisonBaseNode#doBB}
* Activation probability: 0.08658
* With/without class size: 5/0 bytes
* Specialization {@link ComparisonBaseNode#doII}
* Activation probability: 0.08268
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIL}
* Activation probability: 0.07879
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doID}
* Activation probability: 0.07489
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIPNoOVerflow}
* Activation probability: 0.07100
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIP}
* Activation probability: 0.06710
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLL}
* Activation probability: 0.06320
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLI}
* Activation probability: 0.05931
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLD}
* Activation probability: 0.05541
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLPNoOVerflow}
* Activation probability: 0.05152
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLP}
* Activation probability: 0.04762
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPINoOverflow}
* Activation probability: 0.04372
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPI}
* Activation probability: 0.03983
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPLNoOverflow}
* Activation probability: 0.03593
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPL}
* Activation probability: 0.03203
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPP}
* Activation probability: 0.02814
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDD}
* Activation probability: 0.02424
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDI}
* Activation probability: 0.02035
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDL}
* Activation probability: 0.01645
* With/without class size: 4/0 bytes
* Specialization {@link GtNode#doSS}
* Activation probability: 0.01255
* With/without class size: 4/4 bytes
* Specialization {@link ComparisonBaseNode#doGeneric}
* Activation probability: 0.00866
* With/without class size: 4/69 bytes
*
*/
@GeneratedBy(GtNode.class)
@SuppressWarnings("javadoc")
public static final class GtNodeGen {
private static final StateField GENERIC__GT_NODE_GENERIC_STATE_0_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_0_");
private static final StateField GENERIC__GT_NODE_GENERIC_STATE_1_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_1_");
private static final StateField GENERIC__GT_NODE_GENERIC_STATE_2_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_2_");
private static final Uncached UNCACHED = new Uncached();
@NeverDefault
public static GtNode getUncached() {
return GtNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#sS_compareIntsUTF32Node_}
*
- {@link Inlined#generic_cache}
*
*/
@NeverDefault
public static GtNode inline(@RequiredField(bits = 25, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new GtNodeGen.Inlined(target);
}
@GeneratedBy(GtNode.class)
@DenyReplace
private static final class Inlined extends GtNode {
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link GtNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
private final StateField state_0_;
private final ReferenceField sS_compareIntsUTF32Node_;
private final ReferenceField generic_cache;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassA_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassB_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private final InlinedConditionProfile generic_reversedFirst_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private final IsSameTypeNode generic_isSameTypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private final PyObjectIsTrueNode generic_isTrueNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy generic_raiseNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(GtNode.class);
this.state_0_ = target.getState(0, 25);
this.sS_compareIntsUTF32Node_ = target.getReference(1, CompareIntsUTF32Node.class);
this.generic_cache = target.getReference(2, GenericData.class);
this.generic_getClassA_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__GT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
this.generic_getClassB_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__GT_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
this.generic_reversedFirst_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__GT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
this.generic_isSameTypeNode_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__GT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
this.generic_isTrueNode_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__GT_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__GT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
this.generic_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__GT_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.GtNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.GtNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
CompareIntsUTF32Node compareIntsUTF32Node__ = this.sS_compareIntsUTF32Node_.get(arg0Value);
if (compareIntsUTF32Node__ != null) {
return GtNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache.get(arg0Value);
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, this.generic_isTrueNode_, this.generic_raiseNode_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
CompareIntsUTF32Node compareIntsUTF32Node__ = arg0Value.insert((CompareIntsUTF32Node.create()));
Objects.requireNonNull(compareIntsUTF32Node__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)' cache 'compareIntsUTF32Node' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_compareIntsUTF32Node_.set(arg0Value, compareIntsUTF32Node__);
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.GtNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */;
this.state_0_.set(arg0Value, state_0);
return GtNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
GenericData s20_ = arg0Value.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache.set(arg0Value, s20_);
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, this.generic_isTrueNode_, this.generic_raiseNode_);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(GtNode.class)
@DenyReplace
private static final class GenericData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* 17-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
* 19-24: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* 25-28: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* 29: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_1_;
/**
* State Info:
* 0-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsNode} isNode
*/
@Child IsNode isNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassA__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassB__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isSameTypeNode__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSubtypeNode} isSubtypeNode
*/
@Child IsSubtypeNode isSubtypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupMethod
*/
@Child LookupSpecialMethodSlotNode lookupMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupReverseMethod
*/
@Child LookupSpecialMethodSlotNode lookupReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callMethod
*/
@Child CallBinaryMethodNode callMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callReverseMethod
*/
@Child CallBinaryMethodNode callReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Object} field2
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object generic_isTrueNode__field2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field3_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field4_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field5_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field6_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_raiseNode__field1_;
GenericData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(GtNode.class)
@DenyReplace
private static final class Uncached extends GtNode {
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
return GtNode.doSS(arg1Value_, arg2Value_, arg3Value, (CompareIntsUTF32Node.getUncached()));
}
}
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, arg3Value, (IsNode.getUncached()), (GetClassNode.getUncached()), (GetClassNode.getUncached()), (InlinedConditionProfile.getUncached()), (IsSameTypeNodeGen.getUncached()), (IsSubtypeNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getSlot())), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getReverseSlot())), (CallBinaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached()), (PyObjectIsTrueNode.getUncached()), (Lazy.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
/**
* Debug Info:
* Specialization {@link ComparisonBaseNode#doBB}
* Activation probability: 0.08658
* With/without class size: 5/0 bytes
* Specialization {@link ComparisonBaseNode#doII}
* Activation probability: 0.08268
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIL}
* Activation probability: 0.07879
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doID}
* Activation probability: 0.07489
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIPNoOVerflow}
* Activation probability: 0.07100
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doIP}
* Activation probability: 0.06710
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLL}
* Activation probability: 0.06320
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLI}
* Activation probability: 0.05931
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLD}
* Activation probability: 0.05541
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLPNoOVerflow}
* Activation probability: 0.05152
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doLP}
* Activation probability: 0.04762
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPINoOverflow}
* Activation probability: 0.04372
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPI}
* Activation probability: 0.03983
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPLNoOverflow}
* Activation probability: 0.03593
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPL}
* Activation probability: 0.03203
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doPP}
* Activation probability: 0.02814
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDD}
* Activation probability: 0.02424
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDI}
* Activation probability: 0.02035
* With/without class size: 4/0 bytes
* Specialization {@link ComparisonBaseNode#doDL}
* Activation probability: 0.01645
* With/without class size: 4/0 bytes
* Specialization {@link GeNode#doSS}
* Activation probability: 0.01255
* With/without class size: 4/4 bytes
* Specialization {@link ComparisonBaseNode#doGeneric}
* Activation probability: 0.00866
* With/without class size: 4/69 bytes
*
*/
@GeneratedBy(GeNode.class)
@SuppressWarnings("javadoc")
public static final class GeNodeGen {
private static final StateField GENERIC__GE_NODE_GENERIC_STATE_0_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_0_");
private static final StateField GENERIC__GE_NODE_GENERIC_STATE_1_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_1_");
private static final StateField GENERIC__GE_NODE_GENERIC_STATE_2_UPDATER = StateField.create(GenericData.lookup_(), "generic_state_2_");
private static final Uncached UNCACHED = new Uncached();
@NeverDefault
public static GeNode getUncached() {
return GeNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#sS_compareIntsUTF32Node_}
*
- {@link Inlined#generic_cache}
*
*/
@NeverDefault
public static GeNode inline(@RequiredField(bits = 25, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new GeNodeGen.Inlined(target);
}
@GeneratedBy(GeNode.class)
@DenyReplace
private static final class Inlined extends GeNode {
/**
* State Info:
* 0: SpecializationActive {@link ComparisonBaseNode#doBB}
* 1: SpecializationActive {@link ComparisonBaseNode#doII}
* 2: SpecializationActive {@link ComparisonBaseNode#doIL}
* 3: SpecializationActive {@link ComparisonBaseNode#doID}
* 4: SpecializationActive {@link ComparisonBaseNode#doIPNoOVerflow}
* 5: SpecializationExcluded {@link ComparisonBaseNode#doIPNoOVerflow}
* 6: SpecializationActive {@link ComparisonBaseNode#doIP}
* 7: SpecializationActive {@link ComparisonBaseNode#doLL}
* 8: SpecializationActive {@link ComparisonBaseNode#doLI}
* 9: SpecializationActive {@link ComparisonBaseNode#doLD}
* 10: SpecializationActive {@link ComparisonBaseNode#doLPNoOVerflow}
* 11: SpecializationExcluded {@link ComparisonBaseNode#doLPNoOVerflow}
* 12: SpecializationActive {@link ComparisonBaseNode#doLP}
* 13: SpecializationActive {@link ComparisonBaseNode#doPINoOverflow}
* 14: SpecializationExcluded {@link ComparisonBaseNode#doPINoOverflow}
* 15: SpecializationActive {@link ComparisonBaseNode#doPI}
* 16: SpecializationActive {@link ComparisonBaseNode#doPLNoOverflow}
* 17: SpecializationExcluded {@link ComparisonBaseNode#doPLNoOverflow}
* 18: SpecializationActive {@link ComparisonBaseNode#doPL}
* 19: SpecializationActive {@link ComparisonBaseNode#doPP}
* 20: SpecializationActive {@link ComparisonBaseNode#doDD}
* 21: SpecializationActive {@link ComparisonBaseNode#doDI}
* 22: SpecializationActive {@link ComparisonBaseNode#doDL}
* 23: SpecializationActive {@link GeNode#doSS}
* 24: SpecializationActive {@link ComparisonBaseNode#doGeneric}
*
*/
private final StateField state_0_;
private final ReferenceField sS_compareIntsUTF32Node_;
private final ReferenceField generic_cache;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassA_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode generic_getClassB_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
*/
private final InlinedConditionProfile generic_reversedFirst_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
*/
private final IsSameTypeNode generic_isSameTypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*/
private final PyObjectIsTrueNode generic_isTrueNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy generic_raiseNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(GeNode.class);
this.state_0_ = target.getState(0, 25);
this.sS_compareIntsUTF32Node_ = target.getReference(1, CompareIntsUTF32Node.class);
this.generic_cache = target.getReference(2, GenericData.class);
this.generic_getClassA_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__GE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassA__field1_", Node.class)));
this.generic_getClassB_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GENERIC__GE_NODE_GENERIC_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GenericData.lookup_(), "generic_getClassB__field1_", Node.class)));
this.generic_reversedFirst_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, GENERIC__GE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(17, 2)));
this.generic_isSameTypeNode_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, GENERIC__GE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(19, 6), ReferenceField.create(GenericData.lookup_(), "generic_isSameTypeNode__field1_", Node.class)));
this.generic_isTrueNode_ = PyObjectIsTrueNodeGen.inline(InlineTarget.create(PyObjectIsTrueNode.class, GENERIC__GE_NODE_GENERIC_STATE_2_UPDATER.subUpdater(0, 19), GENERIC__GE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(25, 4), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field2_", Object.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field3_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field4_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field5_", Node.class), ReferenceField.create(GenericData.lookup_(), "generic_isTrueNode__field6_", Node.class)));
this.generic_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GENERIC__GE_NODE_GENERIC_STATE_0_UPDATER.subUpdater(29, 1), ReferenceField.create(GenericData.lookup_(), "generic_raiseNode__field1_", Node.class)));
}
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if ((state_0 & 0x1fdb7df) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.GeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0b1011110) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0b1011110000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0b1010000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
}
if ((state_0 & 0xda000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if ((state_0 & 0b1010000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0b1000000000000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x50000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((state_0 & 0x10000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x40000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x80000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */ && arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((state_0 & 0x700000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] || SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if ((state_0 & 0x100000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */ && arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x200000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */ && arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if ((state_0 & 0x400000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */ && arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if ((state_0 & 0x800000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.GeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */ && arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
{
CompareIntsUTF32Node compareIntsUTF32Node__ = this.sS_compareIntsUTF32Node_.get(arg0Value);
if (compareIntsUTF32Node__ != null) {
return GeNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
}
}
if ((state_0 & 0x1000000) != 0 /* is SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */) {
GenericData s20_ = this.generic_cache.get(arg0Value);
if (s20_ != null) {
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, s20_.isNode_, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, s20_.isSubtypeNode_, s20_.lookupMethod_, s20_.lookupReverseMethod_, s20_.callMethod_, s20_.callReverseMethod_, this.generic_isTrueNode_, this.generic_raiseNode_);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value);
}
private boolean executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doBB(boolean, boolean, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doII(int, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIL(int, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doID(int, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */ && ((state_0 & 0b100000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doIPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b100000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xffffffef /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIPNoOVerflow(int, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doIP(int, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0b10000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLL(long, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLI(long, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLD(long, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if (((state_0 & 0b1000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */ && ((state_0 & 0b100000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doLPNoOVerflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLPNoOVerflow(long, PInt, Comparison)] */;
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doLP(long, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if (((state_0 & 0b1000000000000000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */ && ((state_0 & 0b100000000000000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPINoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b100000000000000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xffffdfff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPINoOverflow(PInt, int, Comparison)] */;
state_0 = state_0 | 0b1000000000000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPI(PInt, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if (((state_0 & 0x40000)) == 0 /* is-not SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */ && ((state_0 & 0x20000)) == 0 /* is-not SpecializationExcluded */) {
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 | 0x10000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
try {
return ComparisonBaseNode.doPLNoOverflow(arg1Value_, arg2Value_, arg3Value);
} catch (OverflowException ex) {
CompilerDirectives.transferToInterpreterAndInvalidate();
state_0 = this.state_0_.get(arg0Value);
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x20000 /* add SpecializationExcluded */;
this.state_0_.set(arg0Value, state_0);
return executeAndSpecialize(frameValue, arg0Value, arg1Value_, arg2Value_, arg3Value);
}
}
}
if ((PGuards.isBuiltinPInt(arg1Value_))) {
state_0 = state_0 & 0xfffeffff /* remove SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPLNoOverflow(PInt, long, Comparison)] */;
state_0 = state_0 | 0x40000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPL(PInt, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
state_0 = state_0 | 0x80000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doPP(PInt, PInt, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
state_0 = state_0 | 0x100000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDD(double, double, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
state_0 = state_0 | 0x200000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDI(double, int, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
state_0 = state_0 | 0x400000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doDL(double, long, Comparison)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
CompareIntsUTF32Node compareIntsUTF32Node__ = arg0Value.insert((CompareIntsUTF32Node.create()));
Objects.requireNonNull(compareIntsUTF32Node__, "Specialization 'doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)' cache 'compareIntsUTF32Node' returned a 'null' 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 'null'.");
VarHandle.storeStoreFence();
this.sS_compareIntsUTF32Node_.set(arg0Value, compareIntsUTF32Node__);
state_0 = state_0 | 0x800000 /* add SpecializationActive[PyObjectRichCompareBool.GeNode.doSS(TruffleString, TruffleString, Comparison, CompareIntsUTF32Node)] */;
this.state_0_.set(arg0Value, state_0);
return GeNode.doSS(arg1Value_, arg2Value_, arg3Value, compareIntsUTF32Node__);
}
}
GenericData s20_ = arg0Value.insert(new GenericData());
IsNode isNode__ = s20_.insert((IsNode.create()));
Objects.requireNonNull(isNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isNode' returned a 'null' 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 'null'.");
s20_.isNode_ = isNode__;
IsSubtypeNode isSubtypeNode__ = s20_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(isSubtypeNode__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'isSubtypeNode' returned a 'null' 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 'null'.");
s20_.isSubtypeNode_ = isSubtypeNode__;
LookupSpecialMethodSlotNode lookupMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getSlot())));
Objects.requireNonNull(lookupMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupMethod' returned a 'null' 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 'null'.");
s20_.lookupMethod_ = lookupMethod__;
LookupSpecialMethodSlotNode lookupReverseMethod__ = s20_.insert((LookupSpecialMethodSlotNode.create(arg3Value.getReverseSlot())));
Objects.requireNonNull(lookupReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'lookupReverseMethod' returned a 'null' 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 'null'.");
s20_.lookupReverseMethod_ = lookupReverseMethod__;
CallBinaryMethodNode callMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callMethod' returned a 'null' 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 'null'.");
s20_.callMethod_ = callMethod__;
CallBinaryMethodNode callReverseMethod__ = s20_.insert((CallBinaryMethodNode.create()));
Objects.requireNonNull(callReverseMethod__, "Specialization 'doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)' cache 'callReverseMethod' returned a 'null' 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 'null'.");
s20_.callReverseMethod_ = callReverseMethod__;
VarHandle.storeStoreFence();
this.generic_cache.set(arg0Value, s20_);
state_0 = state_0 | 0x1000000 /* add SpecializationActive[PyObjectRichCompareBool.ComparisonBaseNode.doGeneric(VirtualFrame, Node, Object, Object, Comparison, IsNode, GetClassNode, GetClassNode, InlinedConditionProfile, IsSameTypeNode, IsSubtypeNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, CallBinaryMethodNode, CallBinaryMethodNode, PyObjectIsTrueNode, Lazy)] */;
this.state_0_.set(arg0Value, state_0);
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, s20_, arg1Value, arg2Value, arg3Value, isNode__, this.generic_getClassA_, this.generic_getClassB_, this.generic_reversedFirst_, this.generic_isSameTypeNode_, isSubtypeNode__, lookupMethod__, lookupReverseMethod__, callMethod__, callReverseMethod__, this.generic_isTrueNode_, this.generic_raiseNode_);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(GeNode.class)
@DenyReplace
private static final class GenericData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* 17-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link InlinedConditionProfile} reversedFirst
* Inline method: {@link InlinedConditionProfile#inline}
* 19-24: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* 25-28: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* 29: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_1_;
/**
* State Info:
* 0-18: InlinedCache
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int generic_state_2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsNode} isNode
*/
@Child IsNode isNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassA
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassA__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link GetClassNode} getClassB
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_getClassB__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSameTypeNode} isSameTypeNode
* Inline method: {@link IsSameTypeNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isSameTypeNode__field1_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link IsSubtypeNode} isSubtypeNode
*/
@Child IsSubtypeNode isSubtypeNode_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupMethod
*/
@Child LookupSpecialMethodSlotNode lookupMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupReverseMethod
*/
@Child LookupSpecialMethodSlotNode lookupReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callMethod
*/
@Child CallBinaryMethodNode callMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link CallBinaryMethodNode} callReverseMethod
*/
@Child CallBinaryMethodNode callReverseMethod_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Object} field2
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object generic_isTrueNode__field2_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field3_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field4_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field5_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link PyObjectIsTrueNode} isTrueNode
* Inline method: {@link PyObjectIsTrueNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_isTrueNode__field6_;
/**
* Source Info:
* Specialization: {@link ComparisonBaseNode#doGeneric}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node generic_raiseNode__field1_;
GenericData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(GeNode.class)
@DenyReplace
private static final class Uncached extends GeNode {
@Override
protected boolean execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Comparison arg3Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
if (arg2Value instanceof Boolean) {
boolean arg2Value_ = (boolean) arg2Value;
return ComparisonBaseNode.doBB(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doII(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doIL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doID(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doIP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doLL(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doLI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doLD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doLP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof PInt) {
PInt arg1Value_ = (PInt) arg1Value;
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPI(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_))) {
return ComparisonBaseNode.doPL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg2Value instanceof PInt) {
PInt arg2Value_ = (PInt) arg2Value;
if ((PGuards.isBuiltinPInt(arg1Value_)) && (PGuards.isBuiltinPInt(arg2Value_))) {
return ComparisonBaseNode.doPP(arg1Value_, arg2Value_, arg3Value);
}
}
}
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
if (arg2Value instanceof Double) {
double arg2Value_ = (double) arg2Value;
return ComparisonBaseNode.doDD(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Integer) {
int arg2Value_ = (int) arg2Value;
return ComparisonBaseNode.doDI(arg1Value_, arg2Value_, arg3Value);
}
if (arg2Value instanceof Long) {
long arg2Value_ = (long) arg2Value;
return ComparisonBaseNode.doDL(arg1Value_, arg2Value_, arg3Value);
}
}
if (arg1Value instanceof TruffleString) {
TruffleString arg1Value_ = (TruffleString) arg1Value;
if (arg2Value instanceof TruffleString) {
TruffleString arg2Value_ = (TruffleString) arg2Value;
return GeNode.doSS(arg1Value_, arg2Value_, arg3Value, (CompareIntsUTF32Node.getUncached()));
}
}
return ComparisonBaseNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, arg3Value, (IsNode.getUncached()), (GetClassNode.getUncached()), (GetClassNode.getUncached()), (InlinedConditionProfile.getUncached()), (IsSameTypeNodeGen.getUncached()), (IsSubtypeNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getSlot())), (LookupSpecialMethodSlotNode.getUncached(arg3Value.getReverseSlot())), (CallBinaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached()), (PyObjectIsTrueNode.getUncached()), (Lazy.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy