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

com.oracle.graal.python.lib.PyObjectGetMethodNodeGen Maven / Gradle / Ivy

There is a newer version: 24.1.1
Show newest version
// CheckStyle: start generated
package com.oracle.graal.python.lib;

import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
import com.oracle.graal.python.nodes.PRaiseNode.Lazy;
import com.oracle.graal.python.nodes.PRaiseNodeGen.LazyNodeGen;
import com.oracle.graal.python.nodes.attributes.LookupAttributeInMRONode;
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
import com.oracle.graal.python.nodes.attributes.LookupAttributeInMRONode.Dynamic;
import com.oracle.graal.python.nodes.call.special.CallTernaryMethodNode;
import com.oracle.graal.python.nodes.object.GetClassNode;
import com.oracle.graal.python.nodes.object.GetClassNodeGen;
import com.oracle.graal.python.nodes.object.IsForeignObjectNode;
import com.oracle.graal.python.nodes.object.IsForeignObjectNodeGen;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.RequiredField;
import com.oracle.truffle.api.dsl.InlineSupport.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.frame.Frame;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.interop.InteropLibrary;
import com.oracle.truffle.api.library.LibraryFactory;
import com.oracle.truffle.api.nodes.DenyReplace;
import com.oracle.truffle.api.nodes.EncapsulatingNodeReference;
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.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleString.ToJavaStringNode;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;

/**
 * Debug Info: 
 *   Specialization {@link PyObjectGetMethod#getFixedAttr}
 *     Activation probability: 0.32000
 *     With/without class size: 18/25 bytes
 *   Specialization {@link PyObjectGetMethod#getDynamicAttr}
 *     Activation probability: 0.26000
 *     With/without class size: 14/21 bytes
 *   Specialization {@link PyObjectGetMethod#getForeignMethod}
 *     Activation probability: 0.20000
 *     With/without class size: 11/18 bytes
 *   Specialization {@link PyObjectGetMethod#getForeignMethod}
 *     Activation probability: 0.14000
 *     With/without class size: 8/14 bytes
 *   Specialization {@link PyObjectGetMethod#getGenericAttr}
 *     Activation probability: 0.08000
 *     With/without class size: 6/9 bytes
 * 
*/ @GeneratedBy(PyObjectGetMethod.class) @SuppressWarnings({"javadoc", "unused"}) public final class PyObjectGetMethodNodeGen extends PyObjectGetMethod { private static final StateField GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER = StateField.create(GetFixedAttrData.lookup_(), "getFixedAttr_state_0_"); private static final StateField GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_1_UPDATER = StateField.create(GetFixedAttrData.lookup_(), "getFixedAttr_state_1_"); private static final StateField GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_0_UPDATER = StateField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_state_0_"); private static final StateField GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_1_UPDATER = StateField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_state_1_"); private static final StateField GET_FOREIGN_METHOD0__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD0_STATE_0_UPDATER = StateField.create(GetForeignMethod0Data.lookup_(), "getForeignMethod0_state_0_"); private static final StateField GET_FOREIGN_METHOD1__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD1_STATE_0_UPDATER = StateField.create(GetForeignMethod1Data.lookup_(), "getForeignMethod1_state_0_"); private static final StateField FALLBACK__PY_OBJECT_GET_METHOD_FALLBACK_STATE_0_UPDATER = StateField.create(FallbackData.lookup_(), "fallback_state_0_"); static final ReferenceField GET_FIXED_ATTR_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getFixedAttr_cache", GetFixedAttrData.class); static final ReferenceField GET_DYNAMIC_ATTR_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getDynamicAttr_cache", GetDynamicAttrData.class); static final ReferenceField GET_FOREIGN_METHOD0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getForeignMethod0_cache", GetForeignMethod0Data.class); static final ReferenceField GET_FOREIGN_METHOD1_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getForeignMethod1_cache", GetForeignMethod1Data.class); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link GetClassNode} getClass
     *   Inline method: {@link GetClassNodeGen#inline}
*/ private static final GetClassNode INLINED_GET_FIXED_ATTR_GET_CLASS_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GetFixedAttrData.lookup_(), "getFixedAttr_getClass__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link GetClassNode} getDescrClass
     *   Inline method: {@link GetClassNodeGen#inline}
*/ private static final GetClassNode INLINED_GET_FIXED_ATTR_GET_DESCR_CLASS_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GetFixedAttrData.lookup_(), "getFixedAttr_getDescrClass__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link Lazy} raiseNode
     *   Inline method: {@link LazyNodeGen#inline}
*/ private static final Lazy INLINED_GET_FIXED_ATTR_RAISE_NODE_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(17, 1), ReferenceField.create(GetFixedAttrData.lookup_(), "getFixedAttr_raiseNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link InlinedBranchProfile} hasDescr
     *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FIXED_ATTR_HAS_DESCR_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(18, 1))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link InlinedBranchProfile} returnDataDescr
     *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FIXED_ATTR_RETURN_DATA_DESCR_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(19, 1))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link InlinedBranchProfile} returnAttr
     *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FIXED_ATTR_RETURN_ATTR_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(20, 1))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link InlinedBranchProfile} returnUnboundMethod
     *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FIXED_ATTR_RETURN_UNBOUND_METHOD_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(21, 1))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link InlinedBranchProfile} returnBoundDescr
     *   Inline method: {@link InlinedBranchProfile#inline}
*/ private static final InlinedBranchProfile INLINED_GET_FIXED_ATTR_RETURN_BOUND_DESCR_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(22, 1))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
     *   Parameter: {@link GetClassNode} getClass
     *   Inline method: {@link GetClassNodeGen#inline}
*/ private static final GetClassNode INLINED_GET_DYNAMIC_ATTR_GET_CLASS_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_0_UPDATER.subUpdater(2, 17), ReferenceField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_getClass__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
     *   Parameter: {@link GetClassNode} getDescrClass
     *   Inline method: {@link GetClassNodeGen#inline}
*/ private static final GetClassNode INLINED_GET_DYNAMIC_ATTR_GET_DESCR_CLASS_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_getDescrClass__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
     *   Parameter: {@link Lazy} raiseNode
     *   Inline method: {@link LazyNodeGen#inline}
*/ private static final Lazy INLINED_GET_DYNAMIC_ATTR_RAISE_NODE_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_0_UPDATER.subUpdater(19, 1), ReferenceField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_raiseNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
     *   Parameter: {@link IsForeignObjectNode} isForeignObjectNode
     *   Inline method: {@link IsForeignObjectNodeGen#inline}
*/ private static final IsForeignObjectNode INLINED_GET_FOREIGN_METHOD0_IS_FOREIGN_OBJECT_NODE_ = IsForeignObjectNodeGen.inline(InlineTarget.create(IsForeignObjectNode.class, GET_FOREIGN_METHOD0__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD0_STATE_0_UPDATER.subUpdater(0, 8))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
     *   Parameter: {@link PyObjectGetAttr} getAttr
     *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
*/ private static final PyObjectGetAttr INLINED_GET_FOREIGN_METHOD0_GET_ATTR_ = PyObjectGetAttrNodeGen.inline(InlineTarget.create(PyObjectGetAttr.class, GET_FOREIGN_METHOD0__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD0_STATE_0_UPDATER.subUpdater(8, 2), ReferenceField.create(GetForeignMethod0Data.lookup_(), "getForeignMethod0_getAttr__field1_", Node.class), ReferenceField.create(GetForeignMethod0Data.lookup_(), "getForeignMethod0_getAttr__field2_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
     *   Parameter: {@link IsForeignObjectNode} isForeignObjectNode
     *   Inline method: {@link IsForeignObjectNodeGen#inline}
*/ private static final IsForeignObjectNode INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_ = IsForeignObjectNodeGen.inline(InlineTarget.create(IsForeignObjectNode.class, GET_FOREIGN_METHOD1__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD1_STATE_0_UPDATER.subUpdater(2, 8))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
     *   Parameter: {@link PyObjectGetAttr} getAttr
     *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
*/ private static final PyObjectGetAttr INLINED_GET_FOREIGN_METHOD1_GET_ATTR_ = PyObjectGetAttrNodeGen.inline(InlineTarget.create(PyObjectGetAttr.class, GET_FOREIGN_METHOD1__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD1_STATE_0_UPDATER.subUpdater(10, 2), ReferenceField.create(GetForeignMethod1Data.lookup_(), "getForeignMethod1_getAttr__field1_", Node.class), ReferenceField.create(GetForeignMethod1Data.lookup_(), "getForeignMethod1_getAttr__field2_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getGenericAttr}
     *   Parameter: {@link PyObjectGetAttr} getAttr
     *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
*/ private static final PyObjectGetAttr INLINED_FALLBACK_GET_ATTR_ = PyObjectGetAttrNodeGen.inline(InlineTarget.create(PyObjectGetAttr.class, FALLBACK__PY_OBJECT_GET_METHOD_FALLBACK_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(FallbackData.lookup_(), "fallback_getAttr__field1_", Node.class), ReferenceField.create(FallbackData.lookup_(), "fallback_getAttr__field2_", Node.class))); private static final Uncached UNCACHED = new Uncached(); private static final LibraryFactory INTEROP_LIBRARY_ = LibraryFactory.resolve(InteropLibrary.class); /** * State Info:
     *   0: SpecializationActive {@link PyObjectGetMethod#getFixedAttr}
     *   1: SpecializationActive {@link PyObjectGetMethod#getDynamicAttr}
     *   2: SpecializationActive {@link PyObjectGetMethod#getForeignMethod}
     *   3: SpecializationActive {@link PyObjectGetMethod#getForeignMethod}
     *   4: SpecializationActive {@link PyObjectGetMethod#getGenericAttr}
     * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link LookupCallableSlotInMRONode} lookupGet
*/ @Child private LookupCallableSlotInMRONode lookupGet; /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link LookupCallableSlotInMRONode} lookupSet
*/ @Child private LookupCallableSlotInMRONode lookupSet; /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link CallTernaryMethodNode} callGet
*/ @Child private CallTernaryMethodNode callGet; /** * Source Info:
     *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
     *   Parameter: {@link ReadAttributeFromObjectNode} readAttr
*/ @Child private ReadAttributeFromObjectNode readAttr; @UnsafeAccessedField @Child private GetFixedAttrData getFixedAttr_cache; @UnsafeAccessedField @Child private GetDynamicAttrData getDynamicAttr_cache; @UnsafeAccessedField @Child private GetForeignMethod0Data getForeignMethod0_cache; @UnsafeAccessedField @Child private GetForeignMethod1Data getForeignMethod1_cache; @Child private FallbackData fallback_cache; private PyObjectGetMethodNodeGen() { } @SuppressWarnings("static-method") private boolean fallbackGuard_(int state_0, Node arg0Value, Object arg1Value, TruffleString arg2Value) { { GetDynamicAttrData s1_ = this.getDynamicAttr_cache; if ((s1_ == null || ((s1_.getDynamicAttr_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy), guardIndex=0] */ || (PyObjectGetMethod.isObjectGetAttribute((INLINED_GET_DYNAMIC_ATTR_GET_CLASS_.execute(s1_, arg1Value)))))) { return false; } } { GetForeignMethod1Data s3_ = this.getForeignMethod1_cache; if ((s3_ == null || ((s3_.getForeignMethod1_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr), guardIndex=0] */ || (INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_.execute(s3_, arg1Value)))) { return false; } } return true; } @Override public Object execute(Frame frameValue, Node arg0Value, Object arg1Value, TruffleString arg2Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] || SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] || SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] || SpecializationActive[PyObjectGetMethod.getGenericAttr(Frame, Node, Object, TruffleString, PyObjectGetAttr)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { GetFixedAttrData s0_ = this.getFixedAttr_cache; if (s0_ != null) { { LookupCallableSlotInMRONode lookupGet_ = this.lookupGet; if (lookupGet_ != null) { LookupCallableSlotInMRONode lookupSet_ = this.lookupSet; if (lookupSet_ != null) { CallTernaryMethodNode callGet_ = this.callGet; if (callGet_ != null) { ReadAttributeFromObjectNode readAttr_ = this.readAttr; if (readAttr_ != null) { Object lazyClass__ = (INLINED_GET_FIXED_ATTR_GET_CLASS_.execute(s0_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__)) && (arg2Value == s0_.cachedName_)) { return PyObjectGetMethod.getFixedAttr((VirtualFrame) frameValue, s0_, arg1Value, arg2Value, INLINED_GET_FIXED_ATTR_GET_CLASS_, lazyClass__, s0_.cachedName_, s0_.lookupNode_, INLINED_GET_FIXED_ATTR_GET_DESCR_CLASS_, lookupGet_, lookupSet_, callGet_, readAttr_, INLINED_GET_FIXED_ATTR_RAISE_NODE_, INLINED_GET_FIXED_ATTR_HAS_DESCR_, INLINED_GET_FIXED_ATTR_RETURN_DATA_DESCR_, INLINED_GET_FIXED_ATTR_RETURN_ATTR_, INLINED_GET_FIXED_ATTR_RETURN_UNBOUND_METHOD_, INLINED_GET_FIXED_ATTR_RETURN_BOUND_DESCR_); } } } } } } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] */) { GetDynamicAttrData s1_ = this.getDynamicAttr_cache; if (s1_ != null) { if ((s1_.getDynamicAttr_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { LookupCallableSlotInMRONode lookupGet_1 = this.lookupGet; if (lookupGet_1 != null) { LookupCallableSlotInMRONode lookupSet_1 = this.lookupSet; if (lookupSet_1 != null) { CallTernaryMethodNode callGet_1 = this.callGet; if (callGet_1 != null) { ReadAttributeFromObjectNode readAttr_1 = this.readAttr; if (readAttr_1 != null) { Object lazyClass__1 = (INLINED_GET_DYNAMIC_ATTR_GET_CLASS_.execute(s1_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__1))) { return PyObjectGetMethod.getDynamicAttr(frameValue, s1_, arg1Value, arg2Value, INLINED_GET_DYNAMIC_ATTR_GET_CLASS_, lazyClass__1, s1_.lookupNode_, INLINED_GET_DYNAMIC_ATTR_GET_DESCR_CLASS_, lookupGet_1, lookupSet_1, callGet_1, readAttr_1, INLINED_GET_DYNAMIC_ATTR_RAISE_NODE_); } } } } } } } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */) { GetForeignMethod0Data s2_ = this.getForeignMethod0_cache; if (s2_ != null) { if ((s2_.lib_.accepts(arg1Value)) && (INLINED_GET_FOREIGN_METHOD0_IS_FOREIGN_OBJECT_NODE_.execute(s2_, arg1Value))) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s2_, arg1Value, arg2Value, INLINED_GET_FOREIGN_METHOD0_IS_FOREIGN_OBJECT_NODE_, s2_.toJavaString_, s2_.lib_, INLINED_GET_FOREIGN_METHOD0_GET_ATTR_); } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */) { GetForeignMethod1Data s3_ = this.getForeignMethod1_cache; if (s3_ != null) { if ((s3_.getForeignMethod1_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */ && (INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_.execute(s3_, arg1Value))) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { InteropLibrary lib__ = (INTEROP_LIBRARY_.getUncached()); return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s3_, arg1Value, arg2Value, INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_, s3_.toJavaString_, lib__, INLINED_GET_FOREIGN_METHOD1_GET_ATTR_); } } finally { encapsulating_.set(prev_); } } } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectGetMethod.getGenericAttr(Frame, Node, Object, TruffleString, PyObjectGetAttr)] */) { FallbackData s4_ = this.fallback_cache; if (s4_ != null) { if (fallbackGuard_(state_0, arg0Value, arg1Value, arg2Value)) { return PyObjectGetMethod.getGenericAttr(frameValue, s4_, arg1Value, arg2Value, INLINED_FALLBACK_GET_ATTR_); } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value); } private Object executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, TruffleString arg2Value) { int state_0 = this.state_0_; { Object lazyClass__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] */) { while (true) { int count0_ = 0; GetFixedAttrData s0_ = GET_FIXED_ATTR_CACHE_UPDATER.getVolatile(this); GetFixedAttrData s0_original = s0_; while (s0_ != null) { { LookupCallableSlotInMRONode lookupGet_ = this.lookupGet; if (lookupGet_ != null) { LookupCallableSlotInMRONode lookupSet_ = this.lookupSet; if (lookupSet_ != null) { CallTernaryMethodNode callGet_ = this.callGet; if (callGet_ != null) { ReadAttributeFromObjectNode readAttr_ = this.readAttr; if (readAttr_ != null) { lazyClass__ = (INLINED_GET_FIXED_ATTR_GET_CLASS_.execute(s0_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__)) && (arg2Value == s0_.cachedName_)) { break; } } } } } } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { { s0_ = this.insert(new GetFixedAttrData()); lazyClass__ = (INLINED_GET_FIXED_ATTR_GET_CLASS_.execute(s0_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__))) { // assert (arg2Value == s0_.cachedName_); s0_.cachedName_ = (arg2Value); LookupAttributeInMRONode lookupNode__ = s0_.insert((LookupAttributeInMRONode.create(arg2Value))); Objects.requireNonNull(lookupNode__, "Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'lookupNode' 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'."); s0_.lookupNode_ = lookupNode__; LookupCallableSlotInMRONode lookupGet_; LookupCallableSlotInMRONode lookupGet__shared = this.lookupGet; if (lookupGet__shared != null) { lookupGet_ = lookupGet__shared; } else { lookupGet_ = s0_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Get))); if (lookupGet_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'lookupGet' 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.lookupGet == null) { this.lookupGet = lookupGet_; } LookupCallableSlotInMRONode lookupSet_; LookupCallableSlotInMRONode lookupSet__shared = this.lookupSet; if (lookupSet__shared != null) { lookupSet_ = lookupSet__shared; } else { lookupSet_ = s0_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Set))); if (lookupSet_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'lookupSet' 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.lookupSet == null) { this.lookupSet = lookupSet_; } CallTernaryMethodNode callGet_; CallTernaryMethodNode callGet__shared = this.callGet; if (callGet__shared != null) { callGet_ = callGet__shared; } else { callGet_ = s0_.insert((CallTernaryMethodNode.create())); if (callGet_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'callGet' 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.callGet == null) { this.callGet = callGet_; } ReadAttributeFromObjectNode readAttr_; ReadAttributeFromObjectNode readAttr__shared = this.readAttr; if (readAttr__shared != null) { readAttr_ = readAttr__shared; } else { readAttr_ = s0_.insert((ReadAttributeFromObjectNode.create())); if (readAttr_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'readAttr' 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.readAttr == null) { this.readAttr = readAttr_; } if (!GET_FIXED_ATTR_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_ = state_0; } else { s0_ = null; } } } if (s0_ != null) { return PyObjectGetMethod.getFixedAttr((VirtualFrame) frameValue, s0_, arg1Value, arg2Value, INLINED_GET_FIXED_ATTR_GET_CLASS_, lazyClass__, s0_.cachedName_, s0_.lookupNode_, INLINED_GET_FIXED_ATTR_GET_DESCR_CLASS_, this.lookupGet, this.lookupSet, this.callGet, this.readAttr, INLINED_GET_FIXED_ATTR_RAISE_NODE_, INLINED_GET_FIXED_ATTR_HAS_DESCR_, INLINED_GET_FIXED_ATTR_RETURN_DATA_DESCR_, INLINED_GET_FIXED_ATTR_RETURN_ATTR_, INLINED_GET_FIXED_ATTR_RETURN_UNBOUND_METHOD_, INLINED_GET_FIXED_ATTR_RETURN_BOUND_DESCR_); } break; } } } { Object lazyClass__1 = null; while (true) { int count1_ = 0; GetDynamicAttrData s1_ = GET_DYNAMIC_ATTR_CACHE_UPDATER.getVolatile(this); GetDynamicAttrData s1_original = s1_; while (s1_ != null) { if ((s1_.getDynamicAttr_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { LookupCallableSlotInMRONode lookupGet_1 = this.lookupGet; if (lookupGet_1 != null) { LookupCallableSlotInMRONode lookupSet_1 = this.lookupSet; if (lookupSet_1 != null) { CallTernaryMethodNode callGet_1 = this.callGet; if (callGet_1 != null) { ReadAttributeFromObjectNode readAttr_1 = this.readAttr; if (readAttr_1 != null) { lazyClass__1 = (INLINED_GET_DYNAMIC_ATTR_GET_CLASS_.execute(s1_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__1))) { break; } } } } } } if ((s1_.getDynamicAttr_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { count1_++; } s1_ = null; break; } if (s1_ == null && count1_ < 1) { { s1_ = this.insert(new GetDynamicAttrData()); lazyClass__1 = (INLINED_GET_DYNAMIC_ATTR_GET_CLASS_.execute(s1_, arg1Value)); if (((s1_.getDynamicAttr_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy), guardIndex=0] */) { s1_.getDynamicAttr_state_0_ = s1_.getDynamicAttr_state_0_ | 0b1 /* add GuardActive[specialization=PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy), guardIndex=0] */; if (!GET_DYNAMIC_ATTR_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } s1_original = s1_; s1_ = this.insert(new GetDynamicAttrData(s1_)); } if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__1))) { Dynamic lookupNode__1 = s1_.insert((Dynamic.create())); Objects.requireNonNull(lookupNode__1, "Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' cache 'lookupNode' 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'."); s1_.lookupNode_ = lookupNode__1; LookupCallableSlotInMRONode lookupGet_1; LookupCallableSlotInMRONode lookupGet_1_shared = this.lookupGet; if (lookupGet_1_shared != null) { lookupGet_1 = lookupGet_1_shared; } else { lookupGet_1 = s1_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Get))); if (lookupGet_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'lookupGet' 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.lookupGet == null) { this.lookupGet = lookupGet_1; } LookupCallableSlotInMRONode lookupSet_1; LookupCallableSlotInMRONode lookupSet_1_shared = this.lookupSet; if (lookupSet_1_shared != null) { lookupSet_1 = lookupSet_1_shared; } else { lookupSet_1 = s1_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Set))); if (lookupSet_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'lookupSet' 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.lookupSet == null) { this.lookupSet = lookupSet_1; } CallTernaryMethodNode callGet_1; CallTernaryMethodNode callGet_1_shared = this.callGet; if (callGet_1_shared != null) { callGet_1 = callGet_1_shared; } else { callGet_1 = s1_.insert((CallTernaryMethodNode.create())); if (callGet_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'callGet' 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.callGet == null) { this.callGet = callGet_1; } ReadAttributeFromObjectNode readAttr_1; ReadAttributeFromObjectNode readAttr_1_shared = this.readAttr; if (readAttr_1_shared != null) { readAttr_1 = readAttr_1_shared; } else { readAttr_1 = s1_.insert((ReadAttributeFromObjectNode.create())); if (readAttr_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'readAttr' 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.readAttr == null) { this.readAttr = readAttr_1; } s1_.getDynamicAttr_state_0_ = s1_.getDynamicAttr_state_0_ | 0b10 /* add SpecializationCachesInitialized */; if (!GET_DYNAMIC_ATTR_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } this.getFixedAttr_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] */; this.state_0_ = state_0; } else { s1_ = null; } } } if (s1_ != null) { return PyObjectGetMethod.getDynamicAttr(frameValue, s1_, arg1Value, arg2Value, INLINED_GET_DYNAMIC_ATTR_GET_CLASS_, lazyClass__1, s1_.lookupNode_, INLINED_GET_DYNAMIC_ATTR_GET_DESCR_CLASS_, this.lookupGet, this.lookupSet, this.callGet, this.readAttr, INLINED_GET_DYNAMIC_ATTR_RAISE_NODE_); } break; } } if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */) { while (true) { int count2_ = 0; GetForeignMethod0Data s2_ = GET_FOREIGN_METHOD0_CACHE_UPDATER.getVolatile(this); GetForeignMethod0Data s2_original = s2_; while (s2_ != null) { if ((s2_.lib_.accepts(arg1Value)) && (INLINED_GET_FOREIGN_METHOD0_IS_FOREIGN_OBJECT_NODE_.execute(s2_, arg1Value))) { break; } count2_++; s2_ = null; break; } if (s2_ == null && count2_ < 1) { // assert (s2_.lib_.accepts(arg1Value)); { s2_ = this.insert(new GetForeignMethod0Data()); if ((INLINED_GET_FOREIGN_METHOD0_IS_FOREIGN_OBJECT_NODE_.execute(s2_, arg1Value))) { ToJavaStringNode toJavaString__ = s2_.insert((ToJavaStringNode.create())); Objects.requireNonNull(toJavaString__, "Specialization 'getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)' cache 'toJavaString' 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'."); s2_.toJavaString_ = toJavaString__; InteropLibrary lib__ = s2_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(lib__, "Specialization 'getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)' cache 'lib' 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'."); s2_.lib_ = lib__; if (!GET_FOREIGN_METHOD0_CACHE_UPDATER.compareAndSet(this, s2_original, s2_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */; this.state_0_ = state_0; } else { s2_ = null; } } } if (s2_ != null) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s2_, arg1Value, arg2Value, INLINED_GET_FOREIGN_METHOD0_IS_FOREIGN_OBJECT_NODE_, s2_.toJavaString_, s2_.lib_, INLINED_GET_FOREIGN_METHOD0_GET_ATTR_); } break; } } { InteropLibrary lib__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { while (true) { int count3_ = 0; GetForeignMethod1Data s3_ = GET_FOREIGN_METHOD1_CACHE_UPDATER.getVolatile(this); GetForeignMethod1Data s3_original = s3_; while (s3_ != null) { if ((s3_.getForeignMethod1_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */ && (INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_.execute(s3_, arg1Value))) { lib__ = (INTEROP_LIBRARY_.getUncached()); break; } if ((s3_.getForeignMethod1_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { count3_++; } s3_ = null; break; } if (s3_ == null && count3_ < 1) { { s3_ = this.insert(new GetForeignMethod1Data()); if (((s3_.getForeignMethod1_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr), guardIndex=0] */) { s3_.getForeignMethod1_state_0_ = s3_.getForeignMethod1_state_0_ | 0b1 /* add GuardActive[specialization=PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr), guardIndex=0] */; if (!GET_FOREIGN_METHOD1_CACHE_UPDATER.compareAndSet(this, s3_original, s3_)) { continue; } s3_original = s3_; s3_ = this.insert(new GetForeignMethod1Data(s3_)); } if ((INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_.execute(s3_, arg1Value))) { ToJavaStringNode toJavaString__ = s3_.insert((ToJavaStringNode.create())); Objects.requireNonNull(toJavaString__, "Specialization 'getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)' cache 'toJavaString' 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'."); s3_.toJavaString_ = toJavaString__; lib__ = (INTEROP_LIBRARY_.getUncached()); s3_.getForeignMethod1_state_0_ = s3_.getForeignMethod1_state_0_ | 0b10 /* add SpecializationCachesInitialized */; if (!GET_FOREIGN_METHOD1_CACHE_UPDATER.compareAndSet(this, s3_original, s3_)) { continue; } this.getForeignMethod0_cache = null; state_0 = state_0 & 0xfffffffb /* remove SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */; state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */; this.state_0_ = state_0; } else { s3_ = null; } } } if (s3_ != null) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s3_, arg1Value, arg2Value, INLINED_GET_FOREIGN_METHOD1_IS_FOREIGN_OBJECT_NODE_, s3_.toJavaString_, lib__, INLINED_GET_FOREIGN_METHOD1_GET_ATTR_); } break; } } finally { encapsulating_.set(prev_); } } } FallbackData s4_ = this.insert(new FallbackData()); VarHandle.storeStoreFence(); this.fallback_cache = s4_; state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectGetMethod.getGenericAttr(Frame, Node, Object, TruffleString, PyObjectGetAttr)] */; this.state_0_ = state_0; return PyObjectGetMethod.getGenericAttr(frameValue, s4_, arg1Value, arg2Value, INLINED_FALLBACK_GET_ATTR_); } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { if ((state_0 & (state_0 - 1)) == 0 /* is-single */) { return NodeCost.MONOMORPHIC; } } return NodeCost.POLYMORPHIC; } @NeverDefault public static PyObjectGetMethod create() { return new PyObjectGetMethodNodeGen(); } @NeverDefault public static PyObjectGetMethod getUncached() { return PyObjectGetMethodNodeGen.UNCACHED; } /** * Required Fields:
    *
  • {@link Inlined#state_0_} *
  • {@link Inlined#lookupGet} *
  • {@link Inlined#lookupSet} *
  • {@link Inlined#callGet} *
  • {@link Inlined#readAttr} *
  • {@link Inlined#getFixedAttr_cache} *
  • {@link Inlined#getDynamicAttr_cache} *
  • {@link Inlined#getForeignMethod0_cache} *
  • {@link Inlined#getForeignMethod1_cache} *
  • {@link Inlined#fallback_cache} *
*/ @NeverDefault public static PyObjectGetMethod inline(@RequiredField(bits = 5, value = StateField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class)@RequiredField(type = Node.class, value = ReferenceField.class) InlineTarget target) { return new PyObjectGetMethodNodeGen.Inlined(target); } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class Inlined extends PyObjectGetMethod { /** * State Info:
         *   0: SpecializationActive {@link PyObjectGetMethod#getFixedAttr}
         *   1: SpecializationActive {@link PyObjectGetMethod#getDynamicAttr}
         *   2: SpecializationActive {@link PyObjectGetMethod#getForeignMethod}
         *   3: SpecializationActive {@link PyObjectGetMethod#getForeignMethod}
         *   4: SpecializationActive {@link PyObjectGetMethod#getGenericAttr}
         * 
*/ private final StateField state_0_; private final ReferenceField lookupGet; private final ReferenceField lookupSet; private final ReferenceField callGet; private final ReferenceField readAttr; private final ReferenceField getFixedAttr_cache; private final ReferenceField getDynamicAttr_cache; private final ReferenceField getForeignMethod0_cache; private final ReferenceField getForeignMethod1_cache; private final ReferenceField fallback_cache; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link GetClassNode} getClass
         *   Inline method: {@link GetClassNodeGen#inline}
*/ private final GetClassNode getFixedAttr_getClass_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link GetClassNode} getDescrClass
         *   Inline method: {@link GetClassNodeGen#inline}
*/ private final GetClassNode getFixedAttr_getDescrClass_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link Lazy} raiseNode
         *   Inline method: {@link LazyNodeGen#inline}
*/ private final Lazy getFixedAttr_raiseNode_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link InlinedBranchProfile} hasDescr
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile getFixedAttr_hasDescr_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link InlinedBranchProfile} returnDataDescr
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile getFixedAttr_returnDataDescr_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link InlinedBranchProfile} returnAttr
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile getFixedAttr_returnAttr_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link InlinedBranchProfile} returnUnboundMethod
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile getFixedAttr_returnUnboundMethod_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link InlinedBranchProfile} returnBoundDescr
         *   Inline method: {@link InlinedBranchProfile#inline}
*/ private final InlinedBranchProfile getFixedAttr_returnBoundDescr_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link GetClassNode} getClass
         *   Inline method: {@link GetClassNodeGen#inline}
*/ private final GetClassNode getDynamicAttr_getClass_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link GetClassNode} getDescrClass
         *   Inline method: {@link GetClassNodeGen#inline}
*/ private final GetClassNode getDynamicAttr_getDescrClass_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link Lazy} raiseNode
         *   Inline method: {@link LazyNodeGen#inline}
*/ private final Lazy getDynamicAttr_raiseNode_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link IsForeignObjectNode} isForeignObjectNode
         *   Inline method: {@link IsForeignObjectNodeGen#inline}
*/ private final IsForeignObjectNode getForeignMethod0_isForeignObjectNode_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
*/ private final PyObjectGetAttr getForeignMethod0_getAttr_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link IsForeignObjectNode} isForeignObjectNode
         *   Inline method: {@link IsForeignObjectNodeGen#inline}
*/ private final IsForeignObjectNode getForeignMethod1_isForeignObjectNode_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
*/ private final PyObjectGetAttr getForeignMethod1_getAttr_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getGenericAttr}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
*/ private final PyObjectGetAttr fallback_getAttr_; @SuppressWarnings("unchecked") private Inlined(InlineTarget target) { assert target.getTargetClass().isAssignableFrom(PyObjectGetMethod.class); this.state_0_ = target.getState(0, 5); this.lookupGet = target.getReference(1, LookupCallableSlotInMRONode.class); this.lookupSet = target.getReference(2, LookupCallableSlotInMRONode.class); this.callGet = target.getReference(3, CallTernaryMethodNode.class); this.readAttr = target.getReference(4, ReadAttributeFromObjectNode.class); this.getFixedAttr_cache = target.getReference(5, GetFixedAttrData.class); this.getDynamicAttr_cache = target.getReference(6, GetDynamicAttrData.class); this.getForeignMethod0_cache = target.getReference(7, GetForeignMethod0Data.class); this.getForeignMethod1_cache = target.getReference(8, GetForeignMethod1Data.class); this.fallback_cache = target.getReference(9, FallbackData.class); this.getFixedAttr_getClass_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(0, 17), ReferenceField.create(GetFixedAttrData.lookup_(), "getFixedAttr_getClass__field1_", Node.class))); this.getFixedAttr_getDescrClass_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GetFixedAttrData.lookup_(), "getFixedAttr_getDescrClass__field1_", Node.class))); this.getFixedAttr_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(17, 1), ReferenceField.create(GetFixedAttrData.lookup_(), "getFixedAttr_raiseNode__field1_", Node.class))); this.getFixedAttr_hasDescr_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(18, 1))); this.getFixedAttr_returnDataDescr_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(19, 1))); this.getFixedAttr_returnAttr_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(20, 1))); this.getFixedAttr_returnUnboundMethod_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(21, 1))); this.getFixedAttr_returnBoundDescr_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, GET_FIXED_ATTR__PY_OBJECT_GET_METHOD_GET_FIXED_ATTR_STATE_0_UPDATER.subUpdater(22, 1))); this.getDynamicAttr_getClass_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_0_UPDATER.subUpdater(2, 17), ReferenceField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_getClass__field1_", Node.class))); this.getDynamicAttr_getDescrClass_ = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_1_UPDATER.subUpdater(0, 17), ReferenceField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_getDescrClass__field1_", Node.class))); this.getDynamicAttr_raiseNode_ = LazyNodeGen.inline(InlineTarget.create(Lazy.class, GET_DYNAMIC_ATTR__PY_OBJECT_GET_METHOD_GET_DYNAMIC_ATTR_STATE_0_UPDATER.subUpdater(19, 1), ReferenceField.create(GetDynamicAttrData.lookup_(), "getDynamicAttr_raiseNode__field1_", Node.class))); this.getForeignMethod0_isForeignObjectNode_ = IsForeignObjectNodeGen.inline(InlineTarget.create(IsForeignObjectNode.class, GET_FOREIGN_METHOD0__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD0_STATE_0_UPDATER.subUpdater(0, 8))); this.getForeignMethod0_getAttr_ = PyObjectGetAttrNodeGen.inline(InlineTarget.create(PyObjectGetAttr.class, GET_FOREIGN_METHOD0__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD0_STATE_0_UPDATER.subUpdater(8, 2), ReferenceField.create(GetForeignMethod0Data.lookup_(), "getForeignMethod0_getAttr__field1_", Node.class), ReferenceField.create(GetForeignMethod0Data.lookup_(), "getForeignMethod0_getAttr__field2_", Node.class))); this.getForeignMethod1_isForeignObjectNode_ = IsForeignObjectNodeGen.inline(InlineTarget.create(IsForeignObjectNode.class, GET_FOREIGN_METHOD1__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD1_STATE_0_UPDATER.subUpdater(2, 8))); this.getForeignMethod1_getAttr_ = PyObjectGetAttrNodeGen.inline(InlineTarget.create(PyObjectGetAttr.class, GET_FOREIGN_METHOD1__PY_OBJECT_GET_METHOD_GET_FOREIGN_METHOD1_STATE_0_UPDATER.subUpdater(10, 2), ReferenceField.create(GetForeignMethod1Data.lookup_(), "getForeignMethod1_getAttr__field1_", Node.class), ReferenceField.create(GetForeignMethod1Data.lookup_(), "getForeignMethod1_getAttr__field2_", Node.class))); this.fallback_getAttr_ = PyObjectGetAttrNodeGen.inline(InlineTarget.create(PyObjectGetAttr.class, FALLBACK__PY_OBJECT_GET_METHOD_FALLBACK_STATE_0_UPDATER.subUpdater(0, 2), ReferenceField.create(FallbackData.lookup_(), "fallback_getAttr__field1_", Node.class), ReferenceField.create(FallbackData.lookup_(), "fallback_getAttr__field2_", Node.class))); } @SuppressWarnings("static-method") private boolean fallbackGuard_(int state_0, Node arg0Value, Object arg1Value, TruffleString arg2Value) { { GetDynamicAttrData s1_ = this.getDynamicAttr_cache.get(arg0Value); if ((s1_ == null || ((s1_.getDynamicAttr_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy), guardIndex=0] */ || (PyObjectGetMethod.isObjectGetAttribute((this.getDynamicAttr_getClass_.execute(s1_, arg1Value)))))) { return false; } } { GetForeignMethod1Data s3_ = this.getForeignMethod1_cache.get(arg0Value); if ((s3_ == null || ((s3_.getForeignMethod1_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr), guardIndex=0] */ || (this.getForeignMethod1_isForeignObjectNode_.execute(s3_, arg1Value)))) { return false; } } return true; } @Override public Object execute(Frame frameValue, Node arg0Value, Object arg1Value, TruffleString arg2Value) { int state_0 = this.state_0_.get(arg0Value); if (state_0 != 0 /* is SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] || SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] || SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] || SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] || SpecializationActive[PyObjectGetMethod.getGenericAttr(Frame, Node, Object, TruffleString, PyObjectGetAttr)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */) { GetFixedAttrData s0_ = this.getFixedAttr_cache.get(arg0Value); if (s0_ != null) { { LookupCallableSlotInMRONode lookupGet_ = this.lookupGet.get(arg0Value); if (lookupGet_ != null) { LookupCallableSlotInMRONode lookupSet_ = this.lookupSet.get(arg0Value); if (lookupSet_ != null) { CallTernaryMethodNode callGet_ = this.callGet.get(arg0Value); if (callGet_ != null) { ReadAttributeFromObjectNode readAttr_ = this.readAttr.get(arg0Value); if (readAttr_ != null) { Object lazyClass__ = (this.getFixedAttr_getClass_.execute(s0_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__)) && (arg2Value == s0_.cachedName_)) { return PyObjectGetMethod.getFixedAttr((VirtualFrame) frameValue, s0_, arg1Value, arg2Value, this.getFixedAttr_getClass_, lazyClass__, s0_.cachedName_, s0_.lookupNode_, this.getFixedAttr_getDescrClass_, lookupGet_, lookupSet_, callGet_, readAttr_, this.getFixedAttr_raiseNode_, this.getFixedAttr_hasDescr_, this.getFixedAttr_returnDataDescr_, this.getFixedAttr_returnAttr_, this.getFixedAttr_returnUnboundMethod_, this.getFixedAttr_returnBoundDescr_); } } } } } } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] */) { GetDynamicAttrData s1_ = this.getDynamicAttr_cache.get(arg0Value); if (s1_ != null) { if ((s1_.getDynamicAttr_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { LookupCallableSlotInMRONode lookupGet_1 = this.lookupGet.get(arg0Value); if (lookupGet_1 != null) { LookupCallableSlotInMRONode lookupSet_1 = this.lookupSet.get(arg0Value); if (lookupSet_1 != null) { CallTernaryMethodNode callGet_1 = this.callGet.get(arg0Value); if (callGet_1 != null) { ReadAttributeFromObjectNode readAttr_1 = this.readAttr.get(arg0Value); if (readAttr_1 != null) { Object lazyClass__1 = (this.getDynamicAttr_getClass_.execute(s1_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__1))) { return PyObjectGetMethod.getDynamicAttr(frameValue, s1_, arg1Value, arg2Value, this.getDynamicAttr_getClass_, lazyClass__1, s1_.lookupNode_, this.getDynamicAttr_getDescrClass_, lookupGet_1, lookupSet_1, callGet_1, readAttr_1, this.getDynamicAttr_raiseNode_); } } } } } } } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */) { GetForeignMethod0Data s2_ = this.getForeignMethod0_cache.get(arg0Value); if (s2_ != null) { if ((s2_.lib_.accepts(arg1Value)) && (this.getForeignMethod0_isForeignObjectNode_.execute(s2_, arg1Value))) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s2_, arg1Value, arg2Value, this.getForeignMethod0_isForeignObjectNode_, s2_.toJavaString_, s2_.lib_, this.getForeignMethod0_getAttr_); } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */) { GetForeignMethod1Data s3_ = this.getForeignMethod1_cache.get(arg0Value); if (s3_ != null) { if ((s3_.getForeignMethod1_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */ && (this.getForeignMethod1_isForeignObjectNode_.execute(s3_, arg1Value))) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(arg0Value); try { { InteropLibrary lib__ = (INTEROP_LIBRARY_.getUncached()); return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s3_, arg1Value, arg2Value, this.getForeignMethod1_isForeignObjectNode_, s3_.toJavaString_, lib__, this.getForeignMethod1_getAttr_); } } finally { encapsulating_.set(prev_); } } } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[PyObjectGetMethod.getGenericAttr(Frame, Node, Object, TruffleString, PyObjectGetAttr)] */) { FallbackData s4_ = this.fallback_cache.get(arg0Value); if (s4_ != null) { if (fallbackGuard_(state_0, arg0Value, arg1Value, arg2Value)) { return PyObjectGetMethod.getGenericAttr(frameValue, s4_, arg1Value, arg2Value, this.fallback_getAttr_); } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value); } private Object executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, TruffleString arg2Value) { int state_0 = this.state_0_.get(arg0Value); { Object lazyClass__ = null; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] */) { while (true) { int count0_ = 0; GetFixedAttrData s0_ = this.getFixedAttr_cache.getVolatile(arg0Value); GetFixedAttrData s0_original = s0_; while (s0_ != null) { { LookupCallableSlotInMRONode lookupGet_ = this.lookupGet.get(arg0Value); if (lookupGet_ != null) { LookupCallableSlotInMRONode lookupSet_ = this.lookupSet.get(arg0Value); if (lookupSet_ != null) { CallTernaryMethodNode callGet_ = this.callGet.get(arg0Value); if (callGet_ != null) { ReadAttributeFromObjectNode readAttr_ = this.readAttr.get(arg0Value); if (readAttr_ != null) { lazyClass__ = (this.getFixedAttr_getClass_.execute(s0_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__)) && (arg2Value == s0_.cachedName_)) { break; } } } } } } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { { s0_ = arg0Value.insert(new GetFixedAttrData()); lazyClass__ = (this.getFixedAttr_getClass_.execute(s0_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__))) { // assert (arg2Value == s0_.cachedName_); s0_.cachedName_ = (arg2Value); LookupAttributeInMRONode lookupNode__ = s0_.insert((LookupAttributeInMRONode.create(arg2Value))); Objects.requireNonNull(lookupNode__, "Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' cache 'lookupNode' 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'."); s0_.lookupNode_ = lookupNode__; LookupCallableSlotInMRONode lookupGet_; LookupCallableSlotInMRONode lookupGet__shared = this.lookupGet.get(arg0Value); if (lookupGet__shared != null) { lookupGet_ = lookupGet__shared; } else { lookupGet_ = s0_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Get))); if (lookupGet_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'lookupGet' 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.lookupGet.get(arg0Value) == null) { this.lookupGet.set(arg0Value, lookupGet_); } LookupCallableSlotInMRONode lookupSet_; LookupCallableSlotInMRONode lookupSet__shared = this.lookupSet.get(arg0Value); if (lookupSet__shared != null) { lookupSet_ = lookupSet__shared; } else { lookupSet_ = s0_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Set))); if (lookupSet_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'lookupSet' 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.lookupSet.get(arg0Value) == null) { this.lookupSet.set(arg0Value, lookupSet_); } CallTernaryMethodNode callGet_; CallTernaryMethodNode callGet__shared = this.callGet.get(arg0Value); if (callGet__shared != null) { callGet_ = callGet__shared; } else { callGet_ = s0_.insert((CallTernaryMethodNode.create())); if (callGet_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'callGet' 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.callGet.get(arg0Value) == null) { this.callGet.set(arg0Value, callGet_); } ReadAttributeFromObjectNode readAttr_; ReadAttributeFromObjectNode readAttr__shared = this.readAttr.get(arg0Value); if (readAttr__shared != null) { readAttr_ = readAttr__shared; } else { readAttr_ = s0_.insert((ReadAttributeFromObjectNode.create())); if (readAttr_ == null) { throw new IllegalStateException("Specialization 'getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)' contains a shared cache with name 'readAttr' 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.readAttr.get(arg0Value) == null) { this.readAttr.set(arg0Value, readAttr_); } if (!this.getFixedAttr_cache.compareAndSet(arg0Value, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; this.state_0_.set(arg0Value, state_0); } else { s0_ = null; } } } if (s0_ != null) { return PyObjectGetMethod.getFixedAttr((VirtualFrame) frameValue, s0_, arg1Value, arg2Value, this.getFixedAttr_getClass_, lazyClass__, s0_.cachedName_, s0_.lookupNode_, this.getFixedAttr_getDescrClass_, this.lookupGet.get(arg0Value), this.lookupSet.get(arg0Value), this.callGet.get(arg0Value), this.readAttr.get(arg0Value), this.getFixedAttr_raiseNode_, this.getFixedAttr_hasDescr_, this.getFixedAttr_returnDataDescr_, this.getFixedAttr_returnAttr_, this.getFixedAttr_returnUnboundMethod_, this.getFixedAttr_returnBoundDescr_); } break; } } } { Object lazyClass__1 = null; while (true) { int count1_ = 0; GetDynamicAttrData s1_ = this.getDynamicAttr_cache.getVolatile(arg0Value); GetDynamicAttrData s1_original = s1_; while (s1_ != null) { if ((s1_.getDynamicAttr_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { LookupCallableSlotInMRONode lookupGet_1 = this.lookupGet.get(arg0Value); if (lookupGet_1 != null) { LookupCallableSlotInMRONode lookupSet_1 = this.lookupSet.get(arg0Value); if (lookupSet_1 != null) { CallTernaryMethodNode callGet_1 = this.callGet.get(arg0Value); if (callGet_1 != null) { ReadAttributeFromObjectNode readAttr_1 = this.readAttr.get(arg0Value); if (readAttr_1 != null) { lazyClass__1 = (this.getDynamicAttr_getClass_.execute(s1_, arg1Value)); if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__1))) { break; } } } } } } if ((s1_.getDynamicAttr_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { count1_++; } s1_ = null; break; } if (s1_ == null && count1_ < 1) { { s1_ = arg0Value.insert(new GetDynamicAttrData()); lazyClass__1 = (this.getDynamicAttr_getClass_.execute(s1_, arg1Value)); if (((s1_.getDynamicAttr_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy), guardIndex=0] */) { s1_.getDynamicAttr_state_0_ = s1_.getDynamicAttr_state_0_ | 0b1 /* add GuardActive[specialization=PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy), guardIndex=0] */; if (!this.getDynamicAttr_cache.compareAndSet(arg0Value, s1_original, s1_)) { continue; } s1_original = s1_; s1_ = arg0Value.insert(new GetDynamicAttrData(s1_)); } if ((PyObjectGetMethod.isObjectGetAttribute(lazyClass__1))) { Dynamic lookupNode__1 = s1_.insert((Dynamic.create())); Objects.requireNonNull(lookupNode__1, "Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' cache 'lookupNode' 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'."); s1_.lookupNode_ = lookupNode__1; LookupCallableSlotInMRONode lookupGet_1; LookupCallableSlotInMRONode lookupGet_1_shared = this.lookupGet.get(arg0Value); if (lookupGet_1_shared != null) { lookupGet_1 = lookupGet_1_shared; } else { lookupGet_1 = s1_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Get))); if (lookupGet_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'lookupGet' 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.lookupGet.get(arg0Value) == null) { this.lookupGet.set(arg0Value, lookupGet_1); } LookupCallableSlotInMRONode lookupSet_1; LookupCallableSlotInMRONode lookupSet_1_shared = this.lookupSet.get(arg0Value); if (lookupSet_1_shared != null) { lookupSet_1 = lookupSet_1_shared; } else { lookupSet_1 = s1_.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.Set))); if (lookupSet_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'lookupSet' 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.lookupSet.get(arg0Value) == null) { this.lookupSet.set(arg0Value, lookupSet_1); } CallTernaryMethodNode callGet_1; CallTernaryMethodNode callGet_1_shared = this.callGet.get(arg0Value); if (callGet_1_shared != null) { callGet_1 = callGet_1_shared; } else { callGet_1 = s1_.insert((CallTernaryMethodNode.create())); if (callGet_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'callGet' 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.callGet.get(arg0Value) == null) { this.callGet.set(arg0Value, callGet_1); } ReadAttributeFromObjectNode readAttr_1; ReadAttributeFromObjectNode readAttr_1_shared = this.readAttr.get(arg0Value); if (readAttr_1_shared != null) { readAttr_1 = readAttr_1_shared; } else { readAttr_1 = s1_.insert((ReadAttributeFromObjectNode.create())); if (readAttr_1 == null) { throw new IllegalStateException("Specialization 'getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)' contains a shared cache with name 'readAttr' 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.readAttr.get(arg0Value) == null) { this.readAttr.set(arg0Value, readAttr_1); } s1_.getDynamicAttr_state_0_ = s1_.getDynamicAttr_state_0_ | 0b10 /* add SpecializationCachesInitialized */; if (!this.getDynamicAttr_cache.compareAndSet(arg0Value, s1_original, s1_)) { continue; } this.getFixedAttr_cache.set(arg0Value, null); state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[PyObjectGetMethod.getFixedAttr(VirtualFrame, Node, Object, TruffleString, GetClassNode, Object, TruffleString, LookupAttributeInMRONode, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile, InlinedBranchProfile)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectGetMethod.getDynamicAttr(Frame, Node, Object, TruffleString, GetClassNode, Object, Dynamic, GetClassNode, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, CallTernaryMethodNode, ReadAttributeFromObjectNode, Lazy)] */; this.state_0_.set(arg0Value, state_0); } else { s1_ = null; } } } if (s1_ != null) { return PyObjectGetMethod.getDynamicAttr(frameValue, s1_, arg1Value, arg2Value, this.getDynamicAttr_getClass_, lazyClass__1, s1_.lookupNode_, this.getDynamicAttr_getDescrClass_, this.lookupGet.get(arg0Value), this.lookupSet.get(arg0Value), this.callGet.get(arg0Value), this.readAttr.get(arg0Value), this.getDynamicAttr_raiseNode_); } break; } } if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */) { while (true) { int count2_ = 0; GetForeignMethod0Data s2_ = this.getForeignMethod0_cache.getVolatile(arg0Value); GetForeignMethod0Data s2_original = s2_; while (s2_ != null) { if ((s2_.lib_.accepts(arg1Value)) && (this.getForeignMethod0_isForeignObjectNode_.execute(s2_, arg1Value))) { break; } count2_++; s2_ = null; break; } if (s2_ == null && count2_ < 1) { // assert (s2_.lib_.accepts(arg1Value)); { s2_ = arg0Value.insert(new GetForeignMethod0Data()); if ((this.getForeignMethod0_isForeignObjectNode_.execute(s2_, arg1Value))) { ToJavaStringNode toJavaString__ = s2_.insert((ToJavaStringNode.create())); Objects.requireNonNull(toJavaString__, "Specialization 'getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)' cache 'toJavaString' 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'."); s2_.toJavaString_ = toJavaString__; InteropLibrary lib__ = s2_.insert((INTEROP_LIBRARY_.create(arg1Value))); Objects.requireNonNull(lib__, "Specialization 'getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)' cache 'lib' 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'."); s2_.lib_ = lib__; if (!this.getForeignMethod0_cache.compareAndSet(arg0Value, s2_original, s2_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */; this.state_0_.set(arg0Value, state_0); } else { s2_ = null; } } } if (s2_ != null) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s2_, arg1Value, arg2Value, this.getForeignMethod0_isForeignObjectNode_, s2_.toJavaString_, s2_.lib_, this.getForeignMethod0_getAttr_); } break; } } { InteropLibrary lib__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(arg0Value); try { while (true) { int count3_ = 0; GetForeignMethod1Data s3_ = this.getForeignMethod1_cache.getVolatile(arg0Value); GetForeignMethod1Data s3_original = s3_; while (s3_ != null) { if ((s3_.getForeignMethod1_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */ && (this.getForeignMethod1_isForeignObjectNode_.execute(s3_, arg1Value))) { lib__ = (INTEROP_LIBRARY_.getUncached()); break; } if ((s3_.getForeignMethod1_state_0_ & 0b10) != 0 /* is SpecializationCachesInitialized */) { count3_++; } s3_ = null; break; } if (s3_ == null && count3_ < 1) { { s3_ = arg0Value.insert(new GetForeignMethod1Data()); if (((s3_.getForeignMethod1_state_0_ & 0b1)) == 0 /* is-not GuardActive[specialization=PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr), guardIndex=0] */) { s3_.getForeignMethod1_state_0_ = s3_.getForeignMethod1_state_0_ | 0b1 /* add GuardActive[specialization=PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr), guardIndex=0] */; if (!this.getForeignMethod1_cache.compareAndSet(arg0Value, s3_original, s3_)) { continue; } s3_original = s3_; s3_ = arg0Value.insert(new GetForeignMethod1Data(s3_)); } if ((this.getForeignMethod1_isForeignObjectNode_.execute(s3_, arg1Value))) { ToJavaStringNode toJavaString__ = s3_.insert((ToJavaStringNode.create())); Objects.requireNonNull(toJavaString__, "Specialization 'getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)' cache 'toJavaString' 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'."); s3_.toJavaString_ = toJavaString__; lib__ = (INTEROP_LIBRARY_.getUncached()); s3_.getForeignMethod1_state_0_ = s3_.getForeignMethod1_state_0_ | 0b10 /* add SpecializationCachesInitialized */; if (!this.getForeignMethod1_cache.compareAndSet(arg0Value, s3_original, s3_)) { continue; } this.getForeignMethod0_cache.set(arg0Value, null); state_0 = state_0 & 0xfffffffb /* remove SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */; state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectGetMethod.getForeignMethod(VirtualFrame, Node, Object, TruffleString, IsForeignObjectNode, ToJavaStringNode, InteropLibrary, PyObjectGetAttr)] */; this.state_0_.set(arg0Value, state_0); } else { s3_ = null; } } } if (s3_ != null) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, s3_, arg1Value, arg2Value, this.getForeignMethod1_isForeignObjectNode_, s3_.toJavaString_, lib__, this.getForeignMethod1_getAttr_); } break; } } finally { encapsulating_.set(prev_); } } } FallbackData s4_ = arg0Value.insert(new FallbackData()); VarHandle.storeStoreFence(); this.fallback_cache.set(arg0Value, s4_); state_0 = state_0 | 0b10000 /* add SpecializationActive[PyObjectGetMethod.getGenericAttr(Frame, Node, Object, TruffleString, PyObjectGetAttr)] */; this.state_0_.set(arg0Value, state_0); return PyObjectGetMethod.getGenericAttr(frameValue, s4_, arg1Value, arg2Value, this.fallback_getAttr_); } @Override public boolean isAdoptable() { return false; } } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class GetFixedAttrData extends Node implements SpecializationDataNode { /** * State Info:
         *   0-16: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link GetClassNode} getClass
         *        Inline method: {@link GetClassNodeGen#inline}
         *   17: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link Lazy} raiseNode
         *        Inline method: {@link LazyNodeGen#inline}
         *   18: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link InlinedBranchProfile} hasDescr
         *        Inline method: {@link InlinedBranchProfile#inline}
         *   19: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link InlinedBranchProfile} returnDataDescr
         *        Inline method: {@link InlinedBranchProfile#inline}
         *   20: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link InlinedBranchProfile} returnAttr
         *        Inline method: {@link InlinedBranchProfile#inline}
         *   21: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link InlinedBranchProfile} returnUnboundMethod
         *        Inline method: {@link InlinedBranchProfile#inline}
         *   22: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link InlinedBranchProfile} returnBoundDescr
         *        Inline method: {@link InlinedBranchProfile#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int getFixedAttr_state_0_; /** * State Info:
         *   0-16: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *        Parameter: {@link GetClassNode} getDescrClass
         *        Inline method: {@link GetClassNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int getFixedAttr_state_1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link GetClassNode} getClass
         *   Inline method: {@link GetClassNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getFixedAttr_getClass__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link TruffleString} cachedName
*/ @CompilationFinal TruffleString cachedName_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link LookupAttributeInMRONode} lookupNode
*/ @Child LookupAttributeInMRONode lookupNode_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link GetClassNode} getDescrClass
         *   Inline method: {@link GetClassNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getFixedAttr_getDescrClass__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getFixedAttr}
         *   Parameter: {@link Lazy} raiseNode
         *   Inline method: {@link LazyNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getFixedAttr_raiseNode__field1_; GetFixedAttrData() { } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class GetDynamicAttrData extends Node implements SpecializationDataNode { /** * State Info:
         *   0: GuardActive[guardIndex=0] {@link PyObjectGetMethod#getDynamicAttr}
         *   1: SpecializationCachesInitialized {@link PyObjectGetMethod#getDynamicAttr}
         *   2-18: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *        Parameter: {@link GetClassNode} getClass
         *        Inline method: {@link GetClassNodeGen#inline}
         *   19: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *        Parameter: {@link Lazy} raiseNode
         *        Inline method: {@link LazyNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int getDynamicAttr_state_0_; /** * State Info:
         *   0-16: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *        Parameter: {@link GetClassNode} getDescrClass
         *        Inline method: {@link GetClassNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int getDynamicAttr_state_1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link GetClassNode} getClass
         *   Inline method: {@link GetClassNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getDynamicAttr_getClass__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link Dynamic} lookupNode
*/ @Child Dynamic lookupNode_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link GetClassNode} getDescrClass
         *   Inline method: {@link GetClassNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getDynamicAttr_getDescrClass__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getDynamicAttr}
         *   Parameter: {@link Lazy} raiseNode
         *   Inline method: {@link LazyNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getDynamicAttr_raiseNode__field1_; GetDynamicAttrData() { } GetDynamicAttrData(GetDynamicAttrData delegate) { this.getDynamicAttr_state_0_ = delegate.getDynamicAttr_state_0_; this.getDynamicAttr_state_1_ = delegate.getDynamicAttr_state_1_; this.getDynamicAttr_getClass__field1_ = delegate.getDynamicAttr_getClass__field1_; this.lookupNode_ = delegate.lookupNode_; this.getDynamicAttr_getDescrClass__field1_ = delegate.getDynamicAttr_getDescrClass__field1_; this.getDynamicAttr_raiseNode__field1_ = delegate.getDynamicAttr_raiseNode__field1_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class GetForeignMethod0Data extends Node implements SpecializationDataNode { /** * State Info:
         *   0-7: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *        Parameter: {@link IsForeignObjectNode} isForeignObjectNode
         *        Inline method: {@link IsForeignObjectNodeGen#inline}
         *   8-9: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *        Parameter: {@link PyObjectGetAttr} getAttr
         *        Inline method: {@link PyObjectGetAttrNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int getForeignMethod0_state_0_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link ToJavaStringNode} toJavaString
*/ @Child ToJavaStringNode toJavaString_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link InteropLibrary} lib
*/ @Child InteropLibrary lib_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getForeignMethod0_getAttr__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
         *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getForeignMethod0_getAttr__field2_; GetForeignMethod0Data() { } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class GetForeignMethod1Data extends Node implements SpecializationDataNode { /** * State Info:
         *   0: GuardActive[guardIndex=0] {@link PyObjectGetMethod#getForeignMethod}
         *   1: SpecializationCachesInitialized {@link PyObjectGetMethod#getForeignMethod}
         *   2-9: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *        Parameter: {@link IsForeignObjectNode} isForeignObjectNode
         *        Inline method: {@link IsForeignObjectNodeGen#inline}
         *   10-11: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *        Parameter: {@link PyObjectGetAttr} getAttr
         *        Inline method: {@link PyObjectGetAttrNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int getForeignMethod1_state_0_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link ToJavaStringNode} toJavaString
*/ @Child ToJavaStringNode toJavaString_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getForeignMethod1_getAttr__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getForeignMethod}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
         *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getForeignMethod1_getAttr__field2_; GetForeignMethod1Data() { } GetForeignMethod1Data(GetForeignMethod1Data delegate) { this.getForeignMethod1_state_0_ = delegate.getForeignMethod1_state_0_; this.toJavaString_ = delegate.toJavaString_; this.getForeignMethod1_getAttr__field1_ = delegate.getForeignMethod1_getAttr__field1_; this.getForeignMethod1_getAttr__field2_ = delegate.getForeignMethod1_getAttr__field2_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class FallbackData extends Node implements SpecializationDataNode { /** * State Info:
         *   0-1: InlinedCache
         *        Specialization: {@link PyObjectGetMethod#getGenericAttr}
         *        Parameter: {@link PyObjectGetAttr} getAttr
         *        Inline method: {@link PyObjectGetAttrNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int fallback_state_0_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getGenericAttr}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node fallback_getAttr__field1_; /** * Source Info:
         *   Specialization: {@link PyObjectGetMethod#getGenericAttr}
         *   Parameter: {@link PyObjectGetAttr} getAttr
         *   Inline method: {@link PyObjectGetAttrNodeGen#inline}
         *   Inline field: {@link Node} field2
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node fallback_getAttr__field2_; FallbackData() { } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(PyObjectGetMethod.class) @DenyReplace private static final class Uncached extends PyObjectGetMethod { @Override public Object execute(Frame frameValue, Node arg0Value, Object arg1Value, TruffleString arg2Value) { CompilerDirectives.transferToInterpreterAndInvalidate(); if ((PyObjectGetMethod.isObjectGetAttribute(((GetClassNode.getUncached()).execute(arg0Value, arg1Value))))) { return PyObjectGetMethod.getDynamicAttr(frameValue, arg0Value, arg1Value, arg2Value, (GetClassNode.getUncached()), ((GetClassNode.getUncached()).execute(arg0Value, arg1Value)), (Dynamic.getUncached()), (GetClassNode.getUncached()), (LookupCallableSlotInMRONode.getUncached(SpecialMethodSlot.Get)), (LookupCallableSlotInMRONode.getUncached(SpecialMethodSlot.Set)), (CallTernaryMethodNode.getUncached()), (ReadAttributeFromObjectNode.getUncached()), (Lazy.getUncached())); } if (((IsForeignObjectNodeGen.getUncached()).execute(arg0Value, arg1Value))) { return PyObjectGetMethod.getForeignMethod((VirtualFrame) frameValue, arg0Value, arg1Value, arg2Value, (IsForeignObjectNodeGen.getUncached()), (ToJavaStringNode.getUncached()), (INTEROP_LIBRARY_.getUncached(arg1Value)), (PyObjectGetAttr.getUncached())); } return PyObjectGetMethod.getGenericAttr(frameValue, arg0Value, arg1Value, arg2Value, (PyObjectGetAttr.getUncached())); } @Override public NodeCost getCost() { return NodeCost.MEGAMORPHIC; } @Override public boolean isAdoptable() { return false; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy