com.oracle.graal.python.nodes.call.CallNodeGen Maven / Gradle / Ivy
// CheckStyle: start generated
package com.oracle.graal.python.nodes.call;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
import com.oracle.graal.python.builtins.objects.function.PFunction;
import com.oracle.graal.python.builtins.objects.function.PKeyword;
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
import com.oracle.graal.python.builtins.objects.method.PMethod;
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
import com.oracle.graal.python.nodes.PGuards;
import com.oracle.graal.python.nodes.PRaiseNode;
import com.oracle.graal.python.nodes.argument.CreateArgumentsNode;
import com.oracle.graal.python.nodes.argument.CreateArgumentsNodeGen;
import com.oracle.graal.python.nodes.call.special.CallVarargsMethodNode;
import com.oracle.graal.python.nodes.call.special.LookupSpecialMethodSlotNode;
import com.oracle.graal.python.nodes.interop.PForeignToPTypeNode;
import com.oracle.graal.python.nodes.object.GetClassNode;
import com.oracle.graal.python.nodes.object.GetClassNodeGen;
import com.oracle.graal.python.runtime.GilNode;
import com.oracle.graal.python.runtime.PythonOptions;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.DSLSupport;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.UnsupportedSpecializationException;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.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.interop.InteropLibrary;
import com.oracle.truffle.api.library.LibraryFactory;
import com.oracle.truffle.api.nodes.DenyReplace;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
import com.oracle.truffle.api.utilities.TruffleWeakReference;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;
/**
* Debug Info:
* Specialization {@link CallNode#boundDescriptor}
* Activation probability: 0.12714
* With/without class size: 6/4 bytes
* Specialization {@link CallNode#functionCall}
* Activation probability: 0.11857
* With/without class size: 5/0 bytes
* Specialization {@link CallNode#builtinFunctionCall}
* Activation probability: 0.11000
* With/without class size: 5/0 bytes
* Specialization {@link CallNode#doType}
* Activation probability: 0.10143
* With/without class size: 5/0 bytes
* Specialization {@link CallNode#doPythonClass}
* Activation probability: 0.09286
* With/without class size: 5/0 bytes
* Specialization {@link CallNode#doObjectAndType}
* Activation probability: 0.08429
* With/without class size: 5/0 bytes
* Specialization {@link CallNode#doForeignMethod}
* Activation probability: 0.07571
* With/without class size: 6/13 bytes
* Specialization {@link CallNode#methodCallBuiltinDirect}
* Activation probability: 0.06714
* With/without class size: 4/0 bytes
* Specialization {@link CallNode#methodCallDirect}
* Activation probability: 0.05857
* With/without class size: 4/0 bytes
* Specialization {@link CallNode#builtinMethodCallBuiltinDirectCached}
* Activation probability: 0.05000
* With/without class size: 4/4 bytes
* Specialization {@link CallNode#builtinMethodCallBuiltinDirect}
* Activation probability: 0.04143
* With/without class size: 4/0 bytes
* Specialization {@link CallNode#methodCall}
* Activation probability: 0.03286
* With/without class size: 4/0 bytes
* Specialization {@link CallNode#builtinMethodCall}
* Activation probability: 0.02429
* With/without class size: 4/0 bytes
* Specialization {@link CallNode#doGeneric}
* Activation probability: 0.01571
* With/without class size: 4/0 bytes
*
*/
@GeneratedBy(CallNode.class)
@SuppressWarnings("javadoc")
public final class CallNodeGen extends CallNode {
private static final StateField STATE_0_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_");
private static final StateField FOREIGN_METHOD__CALL_NODE_FOREIGN_METHOD_STATE_0_UPDATER = StateField.create(ForeignMethodData.lookup_(), "foreignMethod_state_0_");
static final ReferenceField BUILTIN_METHOD_CALL_BUILTIN_DIRECT_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "builtinMethodCallBuiltinDirectCached_cache", BuiltinMethodCallBuiltinDirectCachedData.class);
/**
* Source Info:
* Specialization: {@link CallNode#doType}
* Parameter: {@link GetClassNode} getClassNode
* Inline method: {@link GetClassNodeGen#inline}
*/
private static final GetClassNode INLINED_GET_CLASS_NODE = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, STATE_0_UPDATER.subUpdater(14, 17), ReferenceField.create(MethodHandles.lookup(), "getClassNode_field1_", Node.class)));
/**
* Source Info:
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link InlinedBranchProfile} keywordsError
* Inline method: {@link InlinedBranchProfile#inline}
*/
private static final InlinedBranchProfile INLINED_FOREIGN_METHOD_KEYWORDS_ERROR_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, FOREIGN_METHOD__CALL_NODE_FOREIGN_METHOD_STATE_0_UPDATER.subUpdater(0, 1)));
/**
* Source Info:
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link InlinedBranchProfile} typeError
* Inline method: {@link InlinedBranchProfile#inline}
*/
private static final InlinedBranchProfile INLINED_FOREIGN_METHOD_TYPE_ERROR_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, FOREIGN_METHOD__CALL_NODE_FOREIGN_METHOD_STATE_0_UPDATER.subUpdater(1, 1)));
private static final Uncached UNCACHED = new Uncached();
private static final LibraryFactory INTEROP_LIBRARY_ = LibraryFactory.resolve(InteropLibrary.class);
/**
* State Info:
* 0: SpecializationActive {@link CallNode#boundDescriptor}
* 1: SpecializationActive {@link CallNode#functionCall}
* 2: SpecializationActive {@link CallNode#builtinFunctionCall}
* 3: SpecializationActive {@link CallNode#doType}
* 4: SpecializationActive {@link CallNode#doPythonClass}
* 5: SpecializationActive {@link CallNode#doObjectAndType}
* 6: SpecializationActive {@link CallNode#doForeignMethod}
* 7: SpecializationActive {@link CallNode#methodCallBuiltinDirect}
* 8: SpecializationActive {@link CallNode#methodCallDirect}
* 9: SpecializationActive {@link CallNode#doGeneric}
* 10: SpecializationActive {@link CallNode#builtinMethodCallBuiltinDirectCached}
* 11: SpecializationActive {@link CallNode#builtinMethodCallBuiltinDirect}
* 12: SpecializationActive {@link CallNode#methodCall}
* 13: SpecializationActive {@link CallNode#builtinMethodCall}
* 14-30: InlinedCache
* Specialization: {@link CallNode#doType}
* Parameter: {@link GetClassNode} getClassNode
* Inline method: {@link GetClassNodeGen#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int state_0_;
/**
* Source Info:
* Specialization: {@link CallNode#functionCall}
* Parameter: {@link CallDispatchNode} dispatch
*/
@Child private CallDispatchNode dispatchNode;
/**
* Source Info:
* Specialization: {@link CallNode#functionCall}
* Parameter: {@link CreateArgumentsNode} createArgs
*/
@Child private CreateArgumentsNode argsNode;
/**
* Source Info:
* Specialization: {@link CallNode#doType}
* Parameter: {@link PRaiseNode} raise
*/
@Child private PRaiseNode raise;
/**
* Source Info:
* Specialization: {@link CallNode#doType}
* Parameter: {@link GetClassNode} getClassNode
* Inline method: {@link GetClassNodeGen#inline}
* Inline field: {@link Node} field1
*/
@Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getClassNode_field1_;
/**
* Source Info:
* Specialization: {@link CallNode#doType}
* Parameter: {@link LookupSpecialMethodSlotNode} lookupCall
*/
@Child private LookupSpecialMethodSlotNode lookupCall;
/**
* Source Info:
* Specialization: {@link CallNode#doType}
* Parameter: {@link CallVarargsMethodNode} callCallNode
*/
@Child private CallVarargsMethodNode callCall;
/**
* Source Info:
* Specialization: {@link CallNode#builtinMethodCall}
* Parameter: {@link CallVarargsMethodNode} callCallNode
*/
@Child private CallVarargsMethodNode callVarargs;
/**
* Source Info:
* Specialization: {@link CallNode#boundDescriptor}
* Parameter: {@link CallNode} subNode
*/
@Child private CallNode boundDescriptor_subNode_;
@Child private ForeignMethodData foreignMethod_cache;
@UnsafeAccessedField @CompilationFinal private BuiltinMethodCallBuiltinDirectCachedData builtinMethodCallBuiltinDirectCached_cache;
private CallNodeGen() {
}
@Override
protected Object executeInternal(Frame frameValue, Object arg0Value, Object[] arg1Value, PKeyword[] arg2Value) {
int state_0 = this.state_0_;
if ((state_0 & 0b11111111111111) != 0 /* is SpecializationActive[CallNode.boundDescriptor(VirtualFrame, BoundDescriptor, Object[], PKeyword[], CallNode)] || SpecializationActive[CallNode.functionCall(VirtualFrame, PFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.builtinFunctionCall(VirtualFrame, PBuiltinFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] || SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] || SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] || SpecializationActive[CallNode.doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)] || SpecializationActive[CallNode.methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] || SpecializationActive[CallNode.builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] || SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[CallNode.boundDescriptor(VirtualFrame, BoundDescriptor, Object[], PKeyword[], CallNode)] */ && arg0Value instanceof BoundDescriptor) {
BoundDescriptor arg0Value_ = (BoundDescriptor) arg0Value;
{
CallNode subNode__ = this.boundDescriptor_subNode_;
if (subNode__ != null) {
return CallNode.boundDescriptor((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, subNode__);
}
}
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[CallNode.functionCall(VirtualFrame, PFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */ && arg0Value instanceof PFunction) {
PFunction arg0Value_ = (PFunction) arg0Value;
{
CallDispatchNode dispatchNode_ = this.dispatchNode;
if (dispatchNode_ != null) {
CreateArgumentsNode argsNode_ = this.argsNode;
if (argsNode_ != null) {
return CallNode.functionCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_, argsNode_);
}
}
}
}
if ((state_0 & 0b100) != 0 /* is SpecializationActive[CallNode.builtinFunctionCall(VirtualFrame, PBuiltinFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */ && arg0Value instanceof PBuiltinFunction) {
PBuiltinFunction arg0Value_ = (PBuiltinFunction) arg0Value;
{
CallDispatchNode dispatchNode_1 = this.dispatchNode;
if (dispatchNode_1 != null) {
CreateArgumentsNode argsNode_1 = this.argsNode;
if (argsNode_1 != null) {
return CallNode.builtinFunctionCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_1, argsNode_1);
}
}
}
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[CallNode.doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PythonBuiltinClassType) {
PythonBuiltinClassType arg0Value_ = (PythonBuiltinClassType) arg0Value;
{
PRaiseNode raise_ = this.raise;
if (raise_ != null) {
LookupSpecialMethodSlotNode lookupCall_ = this.lookupCall;
if (lookupCall_ != null) {
CallVarargsMethodNode callCall_ = this.callCall;
if (callCall_ != null) {
Node inliningTarget__ = (this);
return CallNode.doType((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, inliningTarget__, raise_, INLINED_GET_CLASS_NODE, lookupCall_, callCall_);
}
}
}
}
}
if ((state_0 & 0b110000) != 0 /* is SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] || SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
{
PRaiseNode raise_1 = this.raise;
if (raise_1 != null) {
LookupSpecialMethodSlotNode lookupCall_1 = this.lookupCall;
if (lookupCall_1 != null) {
CallVarargsMethodNode callCall_1 = this.callCall;
if (callCall_1 != null) {
if ((PGuards.isPythonClass(arg0Value))) {
Node inliningTarget__1 = (this);
return CallNode.doPythonClass((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, inliningTarget__1, raise_1, INLINED_GET_CLASS_NODE, lookupCall_1, callCall_1);
}
}
}
}
}
}
if ((state_0 & 0b100000) != 0 /* is SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
{
PRaiseNode raise_2 = this.raise;
if (raise_2 != null) {
LookupSpecialMethodSlotNode lookupCall_2 = this.lookupCall;
if (lookupCall_2 != null) {
CallVarargsMethodNode callCall_2 = this.callCall;
if (callCall_2 != null) {
if ((!(PGuards.isCallable(arg0Value))) && (!(CallNode.isForeignMethod(arg0Value)))) {
Node inliningTarget__2 = (this);
return CallNode.doObjectAndType((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, inliningTarget__2, raise_2, INLINED_GET_CLASS_NODE, lookupCall_2, callCall_2);
}
}
}
}
}
}
}
if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[CallNode.doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)] */ && arg0Value instanceof ForeignMethod) {
ForeignMethod arg0Value_ = (ForeignMethod) arg0Value;
ForeignMethodData s6_ = this.foreignMethod_cache;
if (s6_ != null) {
{
PRaiseNode raise_3 = this.raise;
if (raise_3 != null) {
Node inliningTarget__3 = (s6_);
return CallNode.doForeignMethod(arg0Value_, arg1Value, arg2Value, inliningTarget__3, raise_3, s6_.fromForeign_, INLINED_FOREIGN_METHOD_KEYWORDS_ERROR_, INLINED_FOREIGN_METHOD_TYPE_ERROR_, s6_.gil_, s6_.interop_);
}
}
}
}
if ((state_0 & 0b110000000) != 0 /* is SpecializationActive[CallNode.methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */ && arg0Value instanceof PMethod) {
PMethod arg0Value_ = (PMethod) arg0Value;
if ((state_0 & 0b10000000) != 0 /* is SpecializationActive[CallNode.methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */) {
{
CallDispatchNode dispatchNode_2 = this.dispatchNode;
if (dispatchNode_2 != null) {
CreateArgumentsNode argsNode_2 = this.argsNode;
if (argsNode_2 != null) {
if ((PGuards.isPBuiltinFunction(arg0Value_.getFunction()))) {
return CallNode.methodCallBuiltinDirect((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_2, argsNode_2);
}
}
}
}
}
if ((state_0 & 0b100000000) != 0 /* is SpecializationActive[CallNode.methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */) {
{
CallDispatchNode dispatchNode_3 = this.dispatchNode;
if (dispatchNode_3 != null) {
CreateArgumentsNode argsNode_3 = this.argsNode;
if (argsNode_3 != null) {
if ((PGuards.isPFunction(arg0Value_.getFunction()))) {
return CallNode.methodCallDirect((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_3, argsNode_3);
}
}
}
}
}
}
if ((state_0 & 0b110000000000) != 0 /* is SpecializationActive[CallNode.builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)] || SpecializationActive[CallNode.builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */ && arg0Value instanceof PBuiltinMethod) {
PBuiltinMethod arg0Value_ = (PBuiltinMethod) arg0Value;
if ((state_0 & 0b10000000000) != 0 /* is SpecializationActive[CallNode.builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)] */) {
BuiltinMethodCallBuiltinDirectCachedData s9_ = this.builtinMethodCallBuiltinDirectCached_cache;
if (s9_ != null) {
{
CallDispatchNode dispatchNode_4 = this.dispatchNode;
if (dispatchNode_4 != null) {
CreateArgumentsNode argsNode_4 = this.argsNode;
if (argsNode_4 != null) {
PBuiltinMethod cachedCallable__ = (s9_.weakCachedCallableGen__.get());
assert DSLSupport.assertIdempotence((isSingleContext()));
if ((cachedCallable__ != null) && (arg0Value_ == cachedCallable__) && (PGuards.isPBuiltinFunction(cachedCallable__.getFunction()))) {
return CallNode.builtinMethodCallBuiltinDirectCached((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, cachedCallable__, dispatchNode_4, argsNode_4);
}
}
}
}
}
}
if ((state_0 & 0b100000000000) != 0 /* is SpecializationActive[CallNode.builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */) {
{
CallDispatchNode dispatchNode_5 = this.dispatchNode;
if (dispatchNode_5 != null) {
CreateArgumentsNode argsNode_5 = this.argsNode;
if (argsNode_5 != null) {
if ((PGuards.isPBuiltinFunction(arg0Value_.getFunction()))) {
return CallNode.builtinMethodCallBuiltinDirect((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_5, argsNode_5);
}
}
}
}
}
}
if ((state_0 & 0b1000000000000) != 0 /* is SpecializationActive[CallNode.methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PMethod) {
PMethod arg0Value_ = (PMethod) arg0Value;
{
PRaiseNode raise_4 = this.raise;
if (raise_4 != null) {
LookupSpecialMethodSlotNode lookupCall_3 = this.lookupCall;
if (lookupCall_3 != null) {
CallVarargsMethodNode callCall_3 = this.callCall;
if (callCall_3 != null) {
if ((!(PGuards.isFunction(arg0Value_.getFunction())))) {
Node inliningTarget__4 = (this);
return CallNode.methodCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, inliningTarget__4, raise_4, INLINED_GET_CLASS_NODE, lookupCall_3, callCall_3);
}
}
}
}
}
}
if ((state_0 & 0b10000000000000) != 0 /* is SpecializationActive[CallNode.builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PBuiltinMethod) {
PBuiltinMethod arg0Value_ = (PBuiltinMethod) arg0Value;
{
PRaiseNode raise_5 = this.raise;
if (raise_5 != null) {
LookupSpecialMethodSlotNode lookupCall_4 = this.lookupCall;
if (lookupCall_4 != null) {
CallVarargsMethodNode callVarargs_ = this.callVarargs;
if (callVarargs_ != null) {
if ((!(PGuards.isFunction(arg0Value_.getFunction())))) {
Node inliningTarget__5 = (this);
return CallNode.builtinMethodCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, inliningTarget__5, raise_5, INLINED_GET_CLASS_NODE, lookupCall_4, callVarargs_);
}
}
}
}
}
}
if ((state_0 & 0b1000000000) != 0 /* is SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
{
CallDispatchNode dispatchNode_6 = this.dispatchNode;
if (dispatchNode_6 != null) {
CreateArgumentsNode argsNode_6 = this.argsNode;
if (argsNode_6 != null) {
PRaiseNode raise_6 = this.raise;
if (raise_6 != null) {
LookupSpecialMethodSlotNode lookupCall_5 = this.lookupCall;
if (lookupCall_5 != null) {
CallVarargsMethodNode callVarargs_1 = this.callVarargs;
if (callVarargs_1 != null) {
if ((!(CallNode.isForeignMethod(arg0Value)))) {
Node inliningTarget__6 = (this);
return CallNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, inliningTarget__6, dispatchNode_6, argsNode_6, raise_6, INLINED_GET_CLASS_NODE, lookupCall_5, callVarargs_1);
}
}
}
}
}
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value);
}
private Object executeAndSpecialize(Frame frameValue, Object arg0Value, Object[] arg1Value, PKeyword[] arg2Value) {
int state_0 = this.state_0_;
int oldState_0 = (state_0 & 0b11111111111111);
try {
if (arg0Value instanceof BoundDescriptor) {
BoundDescriptor arg0Value_ = (BoundDescriptor) arg0Value;
CallNode subNode__ = this.insert((CallNode.create()));
Objects.requireNonNull(subNode__, "Specialization 'boundDescriptor(VirtualFrame, BoundDescriptor, Object[], PKeyword[], CallNode)' cache 'subNode' 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.boundDescriptor_subNode_ = subNode__;
state_0 = state_0 | 0b1 /* add SpecializationActive[CallNode.boundDescriptor(VirtualFrame, BoundDescriptor, Object[], PKeyword[], CallNode)] */;
this.state_0_ = state_0;
return CallNode.boundDescriptor((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, subNode__);
}
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PFunction) {
PFunction arg0Value_ = (PFunction) arg0Value;
CallDispatchNode dispatchNode_;
CallDispatchNode dispatchNode__shared = this.dispatchNode;
if (dispatchNode__shared != null) {
dispatchNode_ = dispatchNode__shared;
} else {
dispatchNode_ = this.insert((CallDispatchNode.create()));
if (dispatchNode_ == null) {
throw new IllegalStateException("Specialization 'functionCall(VirtualFrame, PFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
VarHandle.storeStoreFence();
this.dispatchNode = dispatchNode_;
}
CreateArgumentsNode argsNode_;
CreateArgumentsNode argsNode__shared = this.argsNode;
if (argsNode__shared != null) {
argsNode_ = argsNode__shared;
} else {
argsNode_ = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_ == null) {
throw new IllegalStateException("Specialization 'functionCall(VirtualFrame, PFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
VarHandle.storeStoreFence();
this.argsNode = argsNode_;
}
state_0 = state_0 | 0b10 /* add SpecializationActive[CallNode.functionCall(VirtualFrame, PFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */;
this.state_0_ = state_0;
return CallNode.functionCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_, argsNode_);
}
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PBuiltinFunction) {
PBuiltinFunction arg0Value_ = (PBuiltinFunction) arg0Value;
CallDispatchNode dispatchNode_1;
CallDispatchNode dispatchNode_1_shared = this.dispatchNode;
if (dispatchNode_1_shared != null) {
dispatchNode_1 = dispatchNode_1_shared;
} else {
dispatchNode_1 = this.insert((CallDispatchNode.create()));
if (dispatchNode_1 == null) {
throw new IllegalStateException("Specialization 'builtinFunctionCall(VirtualFrame, PBuiltinFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
VarHandle.storeStoreFence();
this.dispatchNode = dispatchNode_1;
}
CreateArgumentsNode argsNode_1;
CreateArgumentsNode argsNode_1_shared = this.argsNode;
if (argsNode_1_shared != null) {
argsNode_1 = argsNode_1_shared;
} else {
argsNode_1 = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_1 == null) {
throw new IllegalStateException("Specialization 'builtinFunctionCall(VirtualFrame, PBuiltinFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
VarHandle.storeStoreFence();
this.argsNode = argsNode_1;
}
state_0 = state_0 | 0b100 /* add SpecializationActive[CallNode.builtinFunctionCall(VirtualFrame, PBuiltinFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */;
this.state_0_ = state_0;
return CallNode.builtinFunctionCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_1, argsNode_1);
}
{
Node inliningTarget__ = null;
if (((state_0 & 0b1000110000)) == 0 /* is-not SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] && SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] && SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PythonBuiltinClassType) {
PythonBuiltinClassType arg0Value_ = (PythonBuiltinClassType) arg0Value;
inliningTarget__ = (this);
PRaiseNode raise_;
PRaiseNode raise__shared = this.raise;
if (raise__shared != null) {
raise_ = raise__shared;
} else {
raise_ = this.insert((PRaiseNode.create()));
if (raise_ == null) {
throw new IllegalStateException("Specialization 'doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
VarHandle.storeStoreFence();
this.raise = raise_;
}
LookupSpecialMethodSlotNode lookupCall_;
LookupSpecialMethodSlotNode lookupCall__shared = this.lookupCall;
if (lookupCall__shared != null) {
lookupCall_ = lookupCall__shared;
} else {
lookupCall_ = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Call)));
if (lookupCall_ == null) {
throw new IllegalStateException("Specialization 'doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'lookupCall' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.lookupCall == null) {
VarHandle.storeStoreFence();
this.lookupCall = lookupCall_;
}
CallVarargsMethodNode callCall_;
CallVarargsMethodNode callCall__shared = this.callCall;
if (callCall__shared != null) {
callCall_ = callCall__shared;
} else {
callCall_ = this.insert((CallVarargsMethodNode.create()));
if (callCall_ == null) {
throw new IllegalStateException("Specialization 'doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'callCallNode' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.callCall == null) {
VarHandle.storeStoreFence();
this.callCall = callCall_;
}
state_0 = state_0 | 0b1000 /* add SpecializationActive[CallNode.doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
this.state_0_ = state_0;
return CallNode.doType((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, inliningTarget__, raise_, INLINED_GET_CLASS_NODE, lookupCall_, callCall_);
}
}
{
Node inliningTarget__1 = null;
if (((state_0 & 0b1000100000)) == 0 /* is-not SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] && SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((PGuards.isPythonClass(arg0Value))) {
inliningTarget__1 = (this);
PRaiseNode raise_1;
PRaiseNode raise_1_shared = this.raise;
if (raise_1_shared != null) {
raise_1 = raise_1_shared;
} else {
raise_1 = this.insert((PRaiseNode.create()));
if (raise_1 == null) {
throw new IllegalStateException("Specialization 'doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
VarHandle.storeStoreFence();
this.raise = raise_1;
}
LookupSpecialMethodSlotNode lookupCall_1;
LookupSpecialMethodSlotNode lookupCall_1_shared = this.lookupCall;
if (lookupCall_1_shared != null) {
lookupCall_1 = lookupCall_1_shared;
} else {
lookupCall_1 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Call)));
if (lookupCall_1 == null) {
throw new IllegalStateException("Specialization 'doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'lookupCall' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.lookupCall == null) {
VarHandle.storeStoreFence();
this.lookupCall = lookupCall_1;
}
CallVarargsMethodNode callCall_1;
CallVarargsMethodNode callCall_1_shared = this.callCall;
if (callCall_1_shared != null) {
callCall_1 = callCall_1_shared;
} else {
callCall_1 = this.insert((CallVarargsMethodNode.create()));
if (callCall_1 == null) {
throw new IllegalStateException("Specialization 'doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'callCallNode' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.callCall == null) {
VarHandle.storeStoreFence();
this.callCall = callCall_1;
}
state_0 = state_0 & 0xfffffff7 /* remove SpecializationActive[CallNode.doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
state_0 = state_0 | 0b10000 /* add SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
this.state_0_ = state_0;
return CallNode.doPythonClass((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, inliningTarget__1, raise_1, INLINED_GET_CLASS_NODE, lookupCall_1, callCall_1);
}
}
}
{
Node inliningTarget__2 = null;
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((!(PGuards.isCallable(arg0Value))) && (!(CallNode.isForeignMethod(arg0Value)))) {
inliningTarget__2 = (this);
PRaiseNode raise_2;
PRaiseNode raise_2_shared = this.raise;
if (raise_2_shared != null) {
raise_2 = raise_2_shared;
} else {
raise_2 = this.insert((PRaiseNode.create()));
if (raise_2 == null) {
throw new IllegalStateException("Specialization 'doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
VarHandle.storeStoreFence();
this.raise = raise_2;
}
LookupSpecialMethodSlotNode lookupCall_2;
LookupSpecialMethodSlotNode lookupCall_2_shared = this.lookupCall;
if (lookupCall_2_shared != null) {
lookupCall_2 = lookupCall_2_shared;
} else {
lookupCall_2 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Call)));
if (lookupCall_2 == null) {
throw new IllegalStateException("Specialization 'doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'lookupCall' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.lookupCall == null) {
VarHandle.storeStoreFence();
this.lookupCall = lookupCall_2;
}
CallVarargsMethodNode callCall_2;
CallVarargsMethodNode callCall_2_shared = this.callCall;
if (callCall_2_shared != null) {
callCall_2 = callCall_2_shared;
} else {
callCall_2 = this.insert((CallVarargsMethodNode.create()));
if (callCall_2 == null) {
throw new IllegalStateException("Specialization 'doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'callCallNode' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.callCall == null) {
VarHandle.storeStoreFence();
this.callCall = callCall_2;
}
state_0 = state_0 & 0xffffffe7 /* remove SpecializationActive[CallNode.doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)], SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
state_0 = state_0 | 0b100000 /* add SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
this.state_0_ = state_0;
return CallNode.doObjectAndType((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, inliningTarget__2, raise_2, INLINED_GET_CLASS_NODE, lookupCall_2, callCall_2);
}
}
}
{
Node inliningTarget__3 = null;
if (arg0Value instanceof ForeignMethod) {
ForeignMethod arg0Value_ = (ForeignMethod) arg0Value;
ForeignMethodData s6_ = this.insert(new ForeignMethodData());
inliningTarget__3 = (s6_);
PRaiseNode raise_3;
PRaiseNode raise_3_shared = this.raise;
if (raise_3_shared != null) {
raise_3 = raise_3_shared;
} else {
raise_3 = s6_.insert((PRaiseNode.create()));
if (raise_3 == null) {
throw new IllegalStateException("Specialization 'doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
this.raise = raise_3;
}
PForeignToPTypeNode fromForeign__ = s6_.insert((PForeignToPTypeNode.create()));
Objects.requireNonNull(fromForeign__, "Specialization 'doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)' cache 'fromForeign' 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'.");
s6_.fromForeign_ = fromForeign__;
GilNode gil__ = s6_.insert((GilNode.create()));
Objects.requireNonNull(gil__, "Specialization 'doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)' cache 'gil' 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'.");
s6_.gil_ = gil__;
InteropLibrary interop__ = s6_.insert((INTEROP_LIBRARY_.createDispatched(PythonOptions.getCallSiteInlineCacheMaxDepth())));
Objects.requireNonNull(interop__, "Specialization 'doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)' cache 'interop' 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'.");
s6_.interop_ = interop__;
VarHandle.storeStoreFence();
this.foreignMethod_cache = s6_;
state_0 = state_0 | 0b1000000 /* add SpecializationActive[CallNode.doForeignMethod(ForeignMethod, Object[], PKeyword[], Node, PRaiseNode, PForeignToPTypeNode, InlinedBranchProfile, InlinedBranchProfile, GilNode, InteropLibrary)] */;
this.state_0_ = state_0;
return CallNode.doForeignMethod(arg0Value_, arg1Value, arg2Value, inliningTarget__3, raise_3, fromForeign__, INLINED_FOREIGN_METHOD_KEYWORDS_ERROR_, INLINED_FOREIGN_METHOD_TYPE_ERROR_, gil__, interop__);
}
}
if (arg0Value instanceof PMethod) {
PMethod arg0Value_ = (PMethod) arg0Value;
if (((state_0 & 0b1100000000)) == 0 /* is-not SpecializationActive[CallNode.methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] && SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((PGuards.isPBuiltinFunction(arg0Value_.getFunction()))) {
CallDispatchNode dispatchNode_2;
CallDispatchNode dispatchNode_2_shared = this.dispatchNode;
if (dispatchNode_2_shared != null) {
dispatchNode_2 = dispatchNode_2_shared;
} else {
dispatchNode_2 = this.insert((CallDispatchNode.create()));
if (dispatchNode_2 == null) {
throw new IllegalStateException("Specialization 'methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
VarHandle.storeStoreFence();
this.dispatchNode = dispatchNode_2;
}
CreateArgumentsNode argsNode_2;
CreateArgumentsNode argsNode_2_shared = this.argsNode;
if (argsNode_2_shared != null) {
argsNode_2 = argsNode_2_shared;
} else {
argsNode_2 = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_2 == null) {
throw new IllegalStateException("Specialization 'methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
VarHandle.storeStoreFence();
this.argsNode = argsNode_2;
}
state_0 = state_0 | 0b10000000 /* add SpecializationActive[CallNode.methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */;
this.state_0_ = state_0;
return CallNode.methodCallBuiltinDirect((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_2, argsNode_2);
}
}
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((PGuards.isPFunction(arg0Value_.getFunction()))) {
CallDispatchNode dispatchNode_3;
CallDispatchNode dispatchNode_3_shared = this.dispatchNode;
if (dispatchNode_3_shared != null) {
dispatchNode_3 = dispatchNode_3_shared;
} else {
dispatchNode_3 = this.insert((CallDispatchNode.create()));
if (dispatchNode_3 == null) {
throw new IllegalStateException("Specialization 'methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
VarHandle.storeStoreFence();
this.dispatchNode = dispatchNode_3;
}
CreateArgumentsNode argsNode_3;
CreateArgumentsNode argsNode_3_shared = this.argsNode;
if (argsNode_3_shared != null) {
argsNode_3 = argsNode_3_shared;
} else {
argsNode_3 = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_3 == null) {
throw new IllegalStateException("Specialization 'methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
VarHandle.storeStoreFence();
this.argsNode = argsNode_3;
}
state_0 = state_0 & 0xffffff7f /* remove SpecializationActive[CallNode.methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */;
state_0 = state_0 | 0b100000000 /* add SpecializationActive[CallNode.methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */;
this.state_0_ = state_0;
return CallNode.methodCallDirect((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_3, argsNode_3);
}
}
}
if (arg0Value instanceof PBuiltinMethod) {
PBuiltinMethod arg0Value_ = (PBuiltinMethod) arg0Value;
{
PBuiltinMethod cachedCallable__ = null;
if (((state_0 & 0b101000000000)) == 0 /* is-not SpecializationActive[CallNode.builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] && SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
while (true) {
int count9_ = 0;
BuiltinMethodCallBuiltinDirectCachedData s9_ = BUILTIN_METHOD_CALL_BUILTIN_DIRECT_CACHED_CACHE_UPDATER.getVolatile(this);
BuiltinMethodCallBuiltinDirectCachedData s9_original = s9_;
while (s9_ != null) {
{
CallDispatchNode dispatchNode_4 = this.dispatchNode;
if (dispatchNode_4 != null) {
CreateArgumentsNode argsNode_4 = this.argsNode;
if (argsNode_4 != null) {
cachedCallable__ = (s9_.weakCachedCallableGen__.get());
assert DSLSupport.assertIdempotence((isSingleContext()));
if ((cachedCallable__ != null) && (arg0Value_ == cachedCallable__) && (PGuards.isPBuiltinFunction(cachedCallable__.getFunction()))) {
break;
}
}
}
}
count9_++;
s9_ = null;
break;
}
if (s9_ == null && count9_ < 1) {
if ((isSingleContext())) {
TruffleWeakReference weakCachedCallableGen___ = (new TruffleWeakReference<>(arg0Value_));
cachedCallable__ = (weakCachedCallableGen___.get());
if ((cachedCallable__ != null) && (arg0Value_ == cachedCallable__) && (PGuards.isPBuiltinFunction(cachedCallable__.getFunction()))) {
s9_ = new BuiltinMethodCallBuiltinDirectCachedData();
s9_.weakCachedCallableGen__ = weakCachedCallableGen___;
CallDispatchNode dispatchNode_4;
CallDispatchNode dispatchNode_4_shared = this.dispatchNode;
if (dispatchNode_4_shared != null) {
dispatchNode_4 = dispatchNode_4_shared;
} else {
dispatchNode_4 = this.insert((CallDispatchNode.create()));
if (dispatchNode_4 == null) {
throw new IllegalStateException("Specialization 'builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
this.dispatchNode = dispatchNode_4;
}
CreateArgumentsNode argsNode_4;
CreateArgumentsNode argsNode_4_shared = this.argsNode;
if (argsNode_4_shared != null) {
argsNode_4 = argsNode_4_shared;
} else {
argsNode_4 = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_4 == null) {
throw new IllegalStateException("Specialization 'builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
this.argsNode = argsNode_4;
}
if (!BUILTIN_METHOD_CALL_BUILTIN_DIRECT_CACHED_CACHE_UPDATER.compareAndSet(this, s9_original, s9_)) {
continue;
}
state_0 = state_0 | 0b10000000000 /* add SpecializationActive[CallNode.builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)] */;
this.state_0_ = state_0;
}
}
}
if (s9_ != null) {
return CallNode.builtinMethodCallBuiltinDirectCached((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, cachedCallable__, this.dispatchNode, this.argsNode);
}
break;
}
}
}
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */) {
if ((PGuards.isPBuiltinFunction(arg0Value_.getFunction()))) {
CallDispatchNode dispatchNode_5;
CallDispatchNode dispatchNode_5_shared = this.dispatchNode;
if (dispatchNode_5_shared != null) {
dispatchNode_5 = dispatchNode_5_shared;
} else {
dispatchNode_5 = this.insert((CallDispatchNode.create()));
if (dispatchNode_5 == null) {
throw new IllegalStateException("Specialization 'builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
VarHandle.storeStoreFence();
this.dispatchNode = dispatchNode_5;
}
CreateArgumentsNode argsNode_5;
CreateArgumentsNode argsNode_5_shared = this.argsNode;
if (argsNode_5_shared != null) {
argsNode_5 = argsNode_5_shared;
} else {
argsNode_5 = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_5 == null) {
throw new IllegalStateException("Specialization 'builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
VarHandle.storeStoreFence();
this.argsNode = argsNode_5;
}
this.builtinMethodCallBuiltinDirectCached_cache = null;
state_0 = state_0 & 0xfffffbff /* remove SpecializationActive[CallNode.builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)] */;
state_0 = state_0 | 0b100000000000 /* add SpecializationActive[CallNode.builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)] */;
this.state_0_ = state_0;
return CallNode.builtinMethodCallBuiltinDirect((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, dispatchNode_5, argsNode_5);
}
}
}
{
Node inliningTarget__4 = null;
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PMethod) {
PMethod arg0Value_ = (PMethod) arg0Value;
if ((!(PGuards.isFunction(arg0Value_.getFunction())))) {
inliningTarget__4 = (this);
PRaiseNode raise_4;
PRaiseNode raise_4_shared = this.raise;
if (raise_4_shared != null) {
raise_4 = raise_4_shared;
} else {
raise_4 = this.insert((PRaiseNode.create()));
if (raise_4 == null) {
throw new IllegalStateException("Specialization 'methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
VarHandle.storeStoreFence();
this.raise = raise_4;
}
LookupSpecialMethodSlotNode lookupCall_3;
LookupSpecialMethodSlotNode lookupCall_3_shared = this.lookupCall;
if (lookupCall_3_shared != null) {
lookupCall_3 = lookupCall_3_shared;
} else {
lookupCall_3 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Call)));
if (lookupCall_3 == null) {
throw new IllegalStateException("Specialization 'methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'lookupCall' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.lookupCall == null) {
VarHandle.storeStoreFence();
this.lookupCall = lookupCall_3;
}
CallVarargsMethodNode callCall_3;
CallVarargsMethodNode callCall_3_shared = this.callCall;
if (callCall_3_shared != null) {
callCall_3 = callCall_3_shared;
} else {
callCall_3 = this.insert((CallVarargsMethodNode.create()));
if (callCall_3 == null) {
throw new IllegalStateException("Specialization 'methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'callCallNode' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.callCall == null) {
VarHandle.storeStoreFence();
this.callCall = callCall_3;
}
state_0 = state_0 | 0b1000000000000 /* add SpecializationActive[CallNode.methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
this.state_0_ = state_0;
return CallNode.methodCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, inliningTarget__4, raise_4, INLINED_GET_CLASS_NODE, lookupCall_3, callCall_3);
}
}
}
{
Node inliningTarget__5 = null;
if (((state_0 & 0b1000000000)) == 0 /* is-not SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */ && arg0Value instanceof PBuiltinMethod) {
PBuiltinMethod arg0Value_ = (PBuiltinMethod) arg0Value;
if ((!(PGuards.isFunction(arg0Value_.getFunction())))) {
inliningTarget__5 = (this);
PRaiseNode raise_5;
PRaiseNode raise_5_shared = this.raise;
if (raise_5_shared != null) {
raise_5 = raise_5_shared;
} else {
raise_5 = this.insert((PRaiseNode.create()));
if (raise_5 == null) {
throw new IllegalStateException("Specialization 'builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
VarHandle.storeStoreFence();
this.raise = raise_5;
}
LookupSpecialMethodSlotNode lookupCall_4;
LookupSpecialMethodSlotNode lookupCall_4_shared = this.lookupCall;
if (lookupCall_4_shared != null) {
lookupCall_4 = lookupCall_4_shared;
} else {
lookupCall_4 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Call)));
if (lookupCall_4 == null) {
throw new IllegalStateException("Specialization 'builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'lookupCall' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.lookupCall == null) {
VarHandle.storeStoreFence();
this.lookupCall = lookupCall_4;
}
CallVarargsMethodNode callVarargs_;
CallVarargsMethodNode callVarargs__shared = this.callVarargs;
if (callVarargs__shared != null) {
callVarargs_ = callVarargs__shared;
} else {
callVarargs_ = this.insert((CallVarargsMethodNode.create()));
if (callVarargs_ == null) {
throw new IllegalStateException("Specialization 'builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'callCallNode' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.callVarargs == null) {
VarHandle.storeStoreFence();
this.callVarargs = callVarargs_;
}
state_0 = state_0 | 0b10000000000000 /* add SpecializationActive[CallNode.builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
this.state_0_ = state_0;
return CallNode.builtinMethodCall((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, inliningTarget__5, raise_5, INLINED_GET_CLASS_NODE, lookupCall_4, callVarargs_);
}
}
}
{
Node inliningTarget__6 = null;
if ((!(CallNode.isForeignMethod(arg0Value)))) {
inliningTarget__6 = (this);
CallDispatchNode dispatchNode_6;
CallDispatchNode dispatchNode_6_shared = this.dispatchNode;
if (dispatchNode_6_shared != null) {
dispatchNode_6 = dispatchNode_6_shared;
} else {
dispatchNode_6 = this.insert((CallDispatchNode.create()));
if (dispatchNode_6 == null) {
throw new IllegalStateException("Specialization 'doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'dispatch' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.dispatchNode == null) {
VarHandle.storeStoreFence();
this.dispatchNode = dispatchNode_6;
}
CreateArgumentsNode argsNode_6;
CreateArgumentsNode argsNode_6_shared = this.argsNode;
if (argsNode_6_shared != null) {
argsNode_6 = argsNode_6_shared;
} else {
argsNode_6 = this.insert((CreateArgumentsNodeGen.create()));
if (argsNode_6 == null) {
throw new IllegalStateException("Specialization 'doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'createArgs' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.argsNode == null) {
VarHandle.storeStoreFence();
this.argsNode = argsNode_6;
}
PRaiseNode raise_6;
PRaiseNode raise_6_shared = this.raise;
if (raise_6_shared != null) {
raise_6 = raise_6_shared;
} else {
raise_6 = this.insert((PRaiseNode.create()));
if (raise_6 == null) {
throw new IllegalStateException("Specialization 'doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'raise' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.raise == null) {
VarHandle.storeStoreFence();
this.raise = raise_6;
}
LookupSpecialMethodSlotNode lookupCall_5;
LookupSpecialMethodSlotNode lookupCall_5_shared = this.lookupCall;
if (lookupCall_5_shared != null) {
lookupCall_5 = lookupCall_5_shared;
} else {
lookupCall_5 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.Call)));
if (lookupCall_5 == null) {
throw new IllegalStateException("Specialization 'doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'lookupCall' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.lookupCall == null) {
VarHandle.storeStoreFence();
this.lookupCall = lookupCall_5;
}
CallVarargsMethodNode callVarargs_1;
CallVarargsMethodNode callVarargs_1_shared = this.callVarargs;
if (callVarargs_1_shared != null) {
callVarargs_1 = callVarargs_1_shared;
} else {
callVarargs_1 = this.insert((CallVarargsMethodNode.create()));
if (callVarargs_1 == null) {
throw new IllegalStateException("Specialization 'doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)' contains a shared cache with name 'callCallNode' that returned a default value for the cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state.");
}
}
if (this.callVarargs == null) {
VarHandle.storeStoreFence();
this.callVarargs = callVarargs_1;
}
this.callCall = null;
this.builtinMethodCallBuiltinDirectCached_cache = null;
state_0 = state_0 & 0xffffc241 /* remove SpecializationActive[CallNode.functionCall(VirtualFrame, PFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)], SpecializationActive[CallNode.builtinFunctionCall(VirtualFrame, PBuiltinFunction, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)], SpecializationActive[CallNode.doType(VirtualFrame, PythonBuiltinClassType, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)], SpecializationActive[CallNode.doPythonClass(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)], SpecializationActive[CallNode.doObjectAndType(VirtualFrame, Object, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)], SpecializationActive[CallNode.methodCallBuiltinDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)], SpecializationActive[CallNode.methodCallDirect(VirtualFrame, PMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)], SpecializationActive[CallNode.builtinMethodCallBuiltinDirectCached(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], PBuiltinMethod, CallDispatchNode, CreateArgumentsNode)], SpecializationActive[CallNode.builtinMethodCallBuiltinDirect(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], CallDispatchNode, CreateArgumentsNode)], SpecializationActive[CallNode.methodCall(VirtualFrame, PMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)], SpecializationActive[CallNode.builtinMethodCall(VirtualFrame, PBuiltinMethod, Object[], PKeyword[], Node, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
state_0 = state_0 | 0b1000000000 /* add SpecializationActive[CallNode.doGeneric(VirtualFrame, Object, Object[], PKeyword[], Node, CallDispatchNode, CreateArgumentsNode, PRaiseNode, GetClassNode, LookupSpecialMethodSlotNode, CallVarargsMethodNode)] */;
this.state_0_ = state_0;
return CallNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, inliningTarget__6, dispatchNode_6, argsNode_6, raise_6, INLINED_GET_CLASS_NODE, lookupCall_5, callVarargs_1);
}
}
throw new UnsupportedSpecializationException(this, new Node[] {null, null, null}, arg0Value, arg1Value, arg2Value);
} finally {
if (oldState_0 != 0) {
checkForPolymorphicSpecialize(oldState_0);
}
}
}
private void checkForPolymorphicSpecialize(int oldState_0) {
if (((oldState_0 & 0b1000000000) == 0 && (state_0_ & 0b1000000000) != 0)) {
this.reportPolymorphicSpecialize();
}
}
@Override
public NodeCost getCost() {
int state_0 = this.state_0_;
if ((state_0 & 0b11111111111111) == 0) {
return NodeCost.UNINITIALIZED;
} else {
if (((state_0 & 0b11111111111111) & ((state_0 & 0b11111111111111) - 1)) == 0 /* is-single */) {
return NodeCost.MONOMORPHIC;
}
}
return NodeCost.POLYMORPHIC;
}
@NeverDefault
public static CallNode create() {
return new CallNodeGen();
}
@NeverDefault
public static CallNode getUncached() {
return CallNodeGen.UNCACHED;
}
@GeneratedBy(CallNode.class)
@DenyReplace
private static final class ForeignMethodData extends Node implements SpecializationDataNode {
/**
* State Info:
* 0: InlinedCache
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link InlinedBranchProfile} keywordsError
* Inline method: {@link InlinedBranchProfile#inline}
* 1: InlinedCache
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link InlinedBranchProfile} typeError
* Inline method: {@link InlinedBranchProfile#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int foreignMethod_state_0_;
/**
* Source Info:
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link PForeignToPTypeNode} fromForeign
*/
@Child PForeignToPTypeNode fromForeign_;
/**
* Source Info:
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link GilNode} gil
*/
@Child GilNode gil_;
/**
* Source Info:
* Specialization: {@link CallNode#doForeignMethod}
* Parameter: {@link InteropLibrary} interop
*/
@Child InteropLibrary interop_;
ForeignMethodData() {
}
@Override
public NodeCost getCost() {
return NodeCost.NONE;
}
private static Lookup lookup_() {
return MethodHandles.lookup();
}
}
@GeneratedBy(CallNode.class)
@DenyReplace
private static final class BuiltinMethodCallBuiltinDirectCachedData implements SpecializationDataNode {
/**
* Source Info:
* Specialization: {@link CallNode#builtinMethodCallBuiltinDirectCached}
* Parameter: {@link TruffleWeakReference} weakCachedCallableGen_
*/
@CompilationFinal TruffleWeakReference weakCachedCallableGen__;
BuiltinMethodCallBuiltinDirectCachedData() {
}
}
@GeneratedBy(CallNode.class)
@DenyReplace
private static final class Uncached extends CallNode {
@Override
protected Object executeInternal(Frame frameValue, Object arg0Value, Object[] arg1Value, PKeyword[] arg2Value) {
CompilerDirectives.transferToInterpreterAndInvalidate();
if (arg0Value instanceof BoundDescriptor) {
BoundDescriptor arg0Value_ = (BoundDescriptor) arg0Value;
return CallNode.boundDescriptor((VirtualFrame) frameValue, arg0Value_, arg1Value, arg2Value, (CallNode.getUncached()));
}
if (arg0Value instanceof ForeignMethod) {
ForeignMethod arg0Value_ = (ForeignMethod) arg0Value;
return CallNode.doForeignMethod(arg0Value_, arg1Value, arg2Value, (this), (PRaiseNode.getUncached()), (PForeignToPTypeNode.getUncached()), (InlinedBranchProfile.getUncached()), (InlinedBranchProfile.getUncached()), (GilNode.getUncached()), (INTEROP_LIBRARY_.getUncached()));
}
if ((!(CallNode.isForeignMethod(arg0Value)))) {
return CallNode.doGeneric((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, (this), (CallDispatchNode.getUncached()), (CreateArgumentsNodeGen.getUncached()), (PRaiseNode.getUncached()), (GetClassNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.Call)), (CallVarargsMethodNode.getUncached()));
}
throw new UnsupportedSpecializationException(this, new Node[] {null, null, null}, arg0Value, arg1Value, arg2Value);
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
/**
* Debug Info:
* Specialization {@link Lazy#doIt}
* Activation probability: 1.00000
* With/without class size: 24/4 bytes
*
*/
@GeneratedBy(Lazy.class)
@SuppressWarnings("javadoc")
public static final class LazyNodeGen {
private static final Uncached UNCACHED = new Uncached();
@NeverDefault
public static Lazy getUncached() {
return LazyNodeGen.UNCACHED;
}
/**
* Required Fields:
* - {@link Inlined#state_0_}
*
- {@link Inlined#callNode_}
*
*/
@NeverDefault
public static Lazy inline(@RequiredField(bits = 1, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) {
return new LazyNodeGen.Inlined(target);
}
@GeneratedBy(Lazy.class)
@DenyReplace
private static final class Inlined extends Lazy {
/**
* State Info:
* 0: SpecializationActive {@link Lazy#doIt}
*
*/
private final StateField state_0_;
private final ReferenceField callNode_;
@SuppressWarnings("unchecked")
private Inlined(InlineTarget target) {
assert target.getTargetClass().isAssignableFrom(Lazy.class);
this.state_0_ = target.getState(0, 1);
this.callNode_ = target.getReference(1, CallNode.class);
}
@Override
CallNode execute(Node arg0Value) {
int state_0 = this.state_0_.get(arg0Value);
if (state_0 != 0 /* is SpecializationActive[CallNode.Lazy.doIt(CallNode)] */) {
{
CallNode callNode__ = this.callNode_.get(arg0Value);
if (callNode__ != null) {
return Lazy.doIt(callNode__);
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(arg0Value);
}
private CallNode executeAndSpecialize(Node arg0Value) {
int state_0 = this.state_0_.get(arg0Value);
CallNode callNode__ = arg0Value.insert((CallNode.create()));
Objects.requireNonNull(callNode__, "Specialization 'doIt(CallNode)' cache 'callNode' 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.callNode_.set(arg0Value, callNode__);
state_0 = state_0 | 0b1 /* add SpecializationActive[CallNode.Lazy.doIt(CallNode)] */;
this.state_0_.set(arg0Value, state_0);
return Lazy.doIt(callNode__);
}
@Override
public boolean isAdoptable() {
return false;
}
}
@GeneratedBy(Lazy.class)
@DenyReplace
private static final class Uncached extends Lazy {
@TruffleBoundary
@Override
CallNode execute(Node arg0Value) {
return Lazy.doIt((CallNode.getUncached()));
}
@Override
public NodeCost getCost() {
return NodeCost.MEGAMORPHIC;
}
@Override
public boolean isAdoptable() {
return false;
}
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy