com.oracle.graal.python.lib.PyNumberFloatNodeGen Maven / Gradle / Ivy
// CheckStyle: start generated
package com.oracle.graal.python.lib;
import com.oracle.graal.python.builtins.modules.WarningsModuleBuiltins.WarnNode;
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
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.CallUnaryMethodNode;
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.BuiltinClassProfiles.InlineIsBuiltinClassProfile;
import com.oracle.graal.python.nodes.object.BuiltinClassProfilesFactory.InlineIsBuiltinClassProfileNodeGen;
import com.oracle.graal.python.nodes.util.CastToJavaDoubleNode;
import com.oracle.graal.python.nodes.util.CastToJavaDoubleNodeGen;
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.UnsupportedSpecializationException;
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 java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;
/**
* Debug Info:
* Specialization {@link PyNumberFloatNode#doDouble}
* Activation probability: 0.32000
* With/without class size: 7/0 bytes
* Specialization {@link PyNumberFloatNode#doInt}
* Activation probability: 0.26000
* With/without class size: 7/0 bytes
* Specialization {@link PyNumberFloatNode#doLong}
* Activation probability: 0.20000
* With/without class size: 6/0 bytes
* Specialization {@link PyNumberFloatNode#doBoolean}
* Activation probability: 0.14000
* With/without class size: 5/0 bytes
* Specialization {@link PyNumberFloatNode#doObject}
* Activation probability: 0.08000
* With/without class size: 15/125 bytes
*
*/
@GeneratedBy(PyNumberFloatNode.class)
@SuppressWarnings("javadoc")
public final class PyNumberFloatNodeGen {
private static final StateField OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_0_UPDATER = StateField.create(ObjectData.lookup_(), "object_state_0_");
private static final StateField OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_1_UPDATER = StateField.create(ObjectData.lookup_(), "object_state_1_");
private static final StateField OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_2_UPDATER = StateField.create(ObjectData.lookup_(), "object_state_2_");
private static final StateField OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_3_UPDATER = StateField.create(ObjectData.lookup_(), "object_state_3_");
private static final Uncached UNCACHED = new Uncached();
@NeverDefault
public static PyNumberFloatNode getUncached() {
return PyNumberFloatNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#object_cache}
*
*/
@NeverDefault
public static PyNumberFloatNode inline(@RequiredField(bits = 5, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new PyNumberFloatNodeGen.Inlined(target);
}
@GeneratedBy(PyNumberFloatNode.class)
@DenyReplace
private static final class Inlined extends PyNumberFloatNode {
/**
* State Info:
* 0: SpecializationActive {@link PyNumberFloatNode#doDouble}
* 1: SpecializationActive {@link PyNumberFloatNode#doInt}
* 2: SpecializationActive {@link PyNumberFloatNode#doLong}
* 3: SpecializationActive {@link PyNumberFloatNode#doBoolean}
* 4: SpecializationActive {@link PyNumberFloatNode#doObject}
*
*/
private final StateField state_0_;
private final ReferenceField object_cache;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link GetClassNode} getClassNode
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode object_getClassNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link GetClassNode} resultClassNode
* Inline method: {@link GetClassNodeGen#inline}
*/
private final GetClassNode object_resultClassNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link InlineIsBuiltinClassProfile} resultProfile
* Inline method: {@link InlineIsBuiltinClassProfileNodeGen#inline}
*/
private final InlineIsBuiltinClassProfile object_resultProfile_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyIndexCheckNode} indexCheckNode
* Inline method: {@link PyIndexCheckNodeGen#inline}
*/
private final PyIndexCheckNode object_indexCheckNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
*/
private final PyNumberIndexNode object_indexNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link CastToJavaDoubleNode} cast
* Inline method: {@link CastToJavaDoubleNodeGen#inline}
*/
private final CastToJavaDoubleNode object_cast_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
*/
private final Lazy object_raiseNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
*/
private final PyFloatFromString object_fromString_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(PyNumberFloatNode.class);
this.state_0_ = target.getState(0, 5);
this.object_cache = target.getReference(1, ObjectData.class);
this.object_getClassNode_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(ObjectData.lookup_(), "object_getClassNode__field1_", Node.class)));
this.object_resultClassNode_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(ObjectData.lookup_(), "object_resultClassNode__field1_", Node.class)));
this.object_resultProfile_ = InlineIsBuiltinClassProfileNodeGen.inline(InlineTarget.create(InlineIsBuiltinClassProfile.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_0_UPDATER.subUpdater(23, 3)));
this.object_indexCheckNode_ = PyIndexCheckNodeGen.inline(InlineTarget.create(PyIndexCheckNode.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_1_UPDATER.subUpdater(17, 7), ReferenceField.create(ObjectData.lookup_(), "object_indexCheckNode__field1_", Node.class)));
this.object_indexNode_ = PyNumberIndexNodeGen.inline(InlineTarget.create(PyNumberIndexNode.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_0_UPDATER.subUpdater(17, 6), ReferenceField.create(ObjectData.lookup_(), "object_indexNode__field1_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_indexNode__field2_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_indexNode__field3_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_indexNode__field4_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_indexNode__field5_", Node.class)));
this.object_cast_ = CastToJavaDoubleNodeGen.inline(InlineTarget.create(CastToJavaDoubleNode.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_2_UPDATER.subUpdater(0, 17), ReferenceField.create(ObjectData.lookup_(), "object_cast__field1_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_cast__field2_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_cast__field3_", Node.class)));
this.object_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_0_UPDATER.subUpdater(26, 1), ReferenceField.create(ObjectData.lookup_(), "object_raiseNode__field1_", Node.class)));
this.object_fromString_ = PyFloatFromStringNodeGen.inline(InlineTarget.create(PyFloatFromString.class, OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_0_UPDATER.subUpdater(27, 3), OBJECT__PY_NUMBER_FLOAT_NODE_OBJECT_STATE_3_UPDATER.subUpdater(0, 31), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field2_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field3_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field4_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field5_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field6_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field7_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field8_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field9_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field10_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field11_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field12_", Node.class), ReferenceField.create(ObjectData.lookup_(), "object_fromString__field13_", Node.class)));
}
@Override
public double execute(Frame frameValue, Node arg0Value, Object arg1Value) {
int state_0 = this.state_0_.get(arg0Value);
if (state_0 != 0 /* is SpecializationActive[PyNumberFloatNode.doDouble(double)] || SpecializationActive[PyNumberFloatNode.doInt(int)] || SpecializationActive[PyNumberFloatNode.doLong(long)] || SpecializationActive[PyNumberFloatNode.doBoolean(boolean)] || SpecializationActive[PyNumberFloatNode.doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyNumberFloatNode.doDouble(double)] */ && arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
return PyNumberFloatNode.doDouble(arg1Value_);
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyNumberFloatNode.doInt(int)] */ && arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
return PyNumberFloatNode.doInt(arg1Value_);
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyNumberFloatNode.doLong(long)] */ && arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
return PyNumberFloatNode.doLong(arg1Value_);
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyNumberFloatNode.doBoolean(boolean)] */ && arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
return PyNumberFloatNode.doBoolean(arg1Value_);
}
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyNumberFloatNode.doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)] */) {
ObjectData s4_ = this.object_cache.get(arg0Value);
if (s4_ != null) {
if ((!(PGuards.isDouble(arg1Value))) && (!(PGuards.isInteger(arg1Value))) && (!(PGuards.isBoolean(arg1Value)))) {
return PyNumberFloatNode.doObject((VirtualFrame) frameValue, s4_, arg1Value, this.object_getClassNode_, s4_.lookup_, s4_.call_, this.object_resultClassNode_, this.object_resultProfile_, s4_.resultSubtypeNode_, this.object_indexCheckNode_, this.object_indexNode_, this.object_cast_, s4_.warnNode_, this.object_raiseNode_, this.object_fromString_);
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value);
}
private double executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value) {
int state_0 = this.state_0_.get(arg0Value);
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
state_0 = state_0 | 0b1 /* add SpecializationActive[PyNumberFloatNode.doDouble(double)] */;
this.state_0_.set(arg0Value, state_0);
return PyNumberFloatNode.doDouble(arg1Value_);
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[PyNumberFloatNode.doInt(int)] */;
this.state_0_.set(arg0Value, state_0);
return PyNumberFloatNode.doInt(arg1Value_);
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
state_0 = state_0 | 0b100 /* add SpecializationActive[PyNumberFloatNode.doLong(long)] */;
this.state_0_.set(arg0Value, state_0);
return PyNumberFloatNode.doLong(arg1Value_);
}
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
state_0 = state_0 | 0b1000 /* add SpecializationActive[PyNumberFloatNode.doBoolean(boolean)] */;
this.state_0_.set(arg0Value, state_0);
return PyNumberFloatNode.doBoolean(arg1Value_);
}
if ((!(PGuards.isDouble(arg1Value))) && (!(PGuards.isInteger(arg1Value))) && (!(PGuards.isBoolean(arg1Value)))) {
ObjectData s4_ = arg0Value.insert(new ObjectData());
LookupSpecialMethodSlotNode lookup__ = s4_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Float)));
Objects.requireNonNull(lookup__, "Specialization 'doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)' cache 'lookup' 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'.");
s4_.lookup_ = lookup__;
CallUnaryMethodNode call__ = s4_.insert((CallUnaryMethodNode.create()));
Objects.requireNonNull(call__, "Specialization 'doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)' cache 'call' 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'.");
s4_.call_ = call__;
IsSubtypeNode resultSubtypeNode__ = s4_.insert((IsSubtypeNode.create()));
Objects.requireNonNull(resultSubtypeNode__, "Specialization 'doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)' cache 'resultSubtypeNode' 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'.");
s4_.resultSubtypeNode_ = resultSubtypeNode__;
WarnNode warnNode__ = s4_.insert((WarnNode.create()));
Objects.requireNonNull(warnNode__, "Specialization 'doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)' cache 'warnNode' 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'.");
s4_.warnNode_ = warnNode__;
VarHandle.storeStoreFence();
this.object_cache.set(arg0Value, s4_);
state_0 = state_0 | 0b10000 /* add SpecializationActive[PyNumberFloatNode.doObject(VirtualFrame, Node, Object, GetClassNode, LookupSpecialMethodSlotNode, CallUnaryMethodNode, GetClassNode, InlineIsBuiltinClassProfile, IsSubtypeNode, PyIndexCheckNode, PyNumberIndexNode, CastToJavaDoubleNode, WarnNode, Lazy, PyFloatFromString)] */;
this.state_0_.set(arg0Value, state_0);
return PyNumberFloatNode.doObject((VirtualFrame) frameValue, s4_, arg1Value, this.object_getClassNode_, lookup__, call__, this.object_resultClassNode_, this.object_resultProfile_, resultSubtypeNode__, this.object_indexCheckNode_, this.object_indexNode_, this.object_cast_, warnNode__, this.object_raiseNode_, this.object_fromString_);
}
throw new UnsupportedSpecializationException(this, new Node[] {null, null}, arg0Value, arg1Value);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(PyNumberFloatNode.class)
@DenyReplace
private static final class ObjectData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link GetClassNode} getClassNode
* Inline method: {@link GetClassNodeGen#inline}
* 17-22: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
* 23-25: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link InlineIsBuiltinClassProfile} resultProfile
* Inline method: {@link InlineIsBuiltinClassProfileNodeGen#inline}
* 26: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* 27-29: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int object_state_0_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link GetClassNode} resultClassNode
* Inline method: {@link GetClassNodeGen#inline}
* 17-23: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyIndexCheckNode} indexCheckNode
* Inline method: {@link PyIndexCheckNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int object_state_1_;
/**
* State Info:
* 0-16: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link CastToJavaDoubleNode} cast
* Inline method: {@link CastToJavaDoubleNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int object_state_2_;
/**
* State Info:
* 0-30: InlinedCache
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int object_state_3_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link GetClassNode} getClassNode
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_getClassNode__field1_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link LookupSpecialMethodSlotNode} lookup
*/
@Child LookupSpecialMethodSlotNode lookup_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link CallUnaryMethodNode} call
*/
@Child CallUnaryMethodNode call_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link GetClassNode} resultClassNode
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_resultClassNode__field1_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link IsSubtypeNode} resultSubtypeNode
*/
@Child IsSubtypeNode resultSubtypeNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyIndexCheckNode} indexCheckNode
* Inline method: {@link PyIndexCheckNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_indexCheckNode__field1_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_indexNode__field1_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
* Inline field: {@link Node} field2
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_indexNode__field2_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_indexNode__field3_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_indexNode__field4_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyNumberIndexNode} indexNode
* Inline method: {@link PyNumberIndexNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_indexNode__field5_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link CastToJavaDoubleNode} cast
* Inline method: {@link CastToJavaDoubleNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_cast__field1_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link CastToJavaDoubleNode} cast
* Inline method: {@link CastToJavaDoubleNodeGen#inline}
* Inline field: {@link Node} field2
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_cast__field2_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link CastToJavaDoubleNode} cast
* Inline method: {@link CastToJavaDoubleNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_cast__field3_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link WarnNode} warnNode
*/
@Child WarnNode warnNode_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link Lazy} raiseNode
* Inline method: {@link LazyNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_raiseNode__field1_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field2
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field2_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field3
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field3_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field4
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field4_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field5
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field5_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field6
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field6_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field7
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field7_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field8
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field8_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field9
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field9_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field10
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field10_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field11
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field11_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field12
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field12_;
/**
* Source Info:
* Specialization: {@link PyNumberFloatNode#doObject}
* Parameter: {@link PyFloatFromString} fromString
* Inline method: {@link PyFloatFromStringNodeGen#inline}
* Inline field: {@link Node} field13
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node object_fromString__field13_;
ObjectData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(PyNumberFloatNode.class)
@DenyReplace
private static final class Uncached extends PyNumberFloatNode {
@Override
public double execute(Frame frameValue, Node arg0Value, Object arg1Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg1Value instanceof Double) {
double arg1Value_ = (double) arg1Value;
return PyNumberFloatNode.doDouble(arg1Value_);
}
if (arg1Value instanceof Integer) {
int arg1Value_ = (int) arg1Value;
return PyNumberFloatNode.doInt(arg1Value_);
}
if (arg1Value instanceof Long) {
long arg1Value_ = (long) arg1Value;
return PyNumberFloatNode.doLong(arg1Value_);
}
if (arg1Value instanceof Boolean) {
boolean arg1Value_ = (boolean) arg1Value;
return PyNumberFloatNode.doBoolean(arg1Value_);
}
if ((!(PGuards.isDouble(arg1Value))) && (!(PGuards.isInteger(arg1Value))) && (!(PGuards.isBoolean(arg1Value)))) {
return PyNumberFloatNode.doObject((VirtualFrame) frameValue, arg0Value, arg1Value, (GetClassNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.Float)), (CallUnaryMethodNode.getUncached()), (GetClassNode.getUncached()), (InlineIsBuiltinClassProfile.getUncached()), (IsSubtypeNode.getUncached()), (PyIndexCheckNodeGen.getUncached()), (PyNumberIndexNodeGen.getUncached()), (CastToJavaDoubleNodeGen.getUncached()), (WarnNode.getUncached()), (Lazy.getUncached()), (PyFloatFromStringNodeGen.getUncached()));
}
throw new UnsupportedSpecializationException(this, new Node[] {null, null}, arg0Value, arg1Value);
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy