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

com.oracle.graal.python.nodes.attributes.LookupNativeSlotNodeGen Maven / Gradle / Ivy

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

import com.oracle.graal.python.builtins.objects.cext.capi.SlotMethodDef;
import com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.ReadPointerNode;
import com.oracle.graal.python.builtins.objects.cext.structs.CStructAccessFactory.ReadPointerNodeGen;
import com.oracle.graal.python.builtins.objects.type.MroShape;
import com.oracle.graal.python.builtins.objects.type.PythonClass;
import com.oracle.graal.python.builtins.objects.type.PythonManagedClass;
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
import com.oracle.graal.python.builtins.objects.type.MroShape.MroShapeLookupResult;
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetMroStorageNode;
import com.oracle.graal.python.builtins.objects.type.TypeNodes.IsSameTypeNode;
import com.oracle.graal.python.builtins.objects.type.TypeNodesFactory.GetMroStorageNodeGen;
import com.oracle.graal.python.builtins.objects.type.TypeNodesFactory.IsSameTypeNodeGen;
import com.oracle.graal.python.nodes.attributes.LookupAttributeInMRONode.AttributeAssumptionPair;
import com.oracle.graal.python.runtime.PythonOptions;
import com.oracle.graal.python.runtime.sequence.storage.MroSequenceStorage;
import com.oracle.truffle.api.Assumption;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.DSLSupport;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.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.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
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.ExplodeLoop;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.nodes.NodeCost;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.util.Objects;

/**
 * Debug Info: 
 *   Specialization {@link LookupNativeSlotNode#lookupConstantMROCached}
 *     Activation probability: 0.32000
 *     With/without class size: 15/13 bytes
 *   Specialization {@link LookupNativeSlotNode#lookupConstantMROShape}
 *     Activation probability: 0.26000
 *     With/without class size: 13/13 bytes
 *   Specialization {@link LookupNativeSlotNode#lookupConstantMRO}
 *     Activation probability: 0.20000
 *     With/without class size: 14/29 bytes
 *   Specialization {@link LookupNativeSlotNode#lookupCachedLen}
 *     Activation probability: 0.14000
 *     With/without class size: 9/17 bytes
 *   Specialization {@link LookupNativeSlotNode#lookupGeneric}
 *     Activation probability: 0.08000
 *     With/without class size: 6/13 bytes
 * 
*/ @GeneratedBy(LookupNativeSlotNode.class) @SuppressWarnings("javadoc") public final class LookupNativeSlotNodeGen extends LookupNativeSlotNode { private static final StateField LOOKUP_CONSTANT_M_R_O_CACHED__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CONSTANT_M_R_O_CACHED_STATE_0_UPDATER = StateField.create(LookupConstantMROCachedData.lookup_(), "lookupConstantMROCached_state_0_"); private static final StateField LOOKUP_CONSTANT_M_R_O_SHAPE__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CONSTANT_M_R_O_SHAPE_STATE_0_UPDATER = StateField.create(LookupConstantMROShapeData.lookup_(), "lookupConstantMROShape_state_0_"); private static final StateField LOOKUP_CONSTANT_M_R_O__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CONSTANT_M_R_O_STATE_0_UPDATER = StateField.create(LookupConstantMROData.lookup_(), "lookupConstantMRO_state_0_"); private static final StateField LOOKUP_CACHED_LEN__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CACHED_LEN_STATE_0_UPDATER = StateField.create(LookupCachedLenData.lookup_(), "lookupCachedLen_state_0_"); private static final StateField LOOKUP_GENERIC__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_GENERIC_STATE_0_UPDATER = StateField.create(LookupGenericData.lookup_(), "lookupGeneric_state_0_"); static final ReferenceField LOOKUP_CONSTANT_M_R_O_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "lookupConstantMROCached_cache", LookupConstantMROCachedData.class); static final ReferenceField LOOKUP_CONSTANT_M_R_O_SHAPE_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "lookupConstantMROShape_cache", LookupConstantMROShapeData.class); static final ReferenceField LOOKUP_CONSTANT_M_R_O_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "lookupConstantMRO_cache", LookupConstantMROData.class); static final ReferenceField LOOKUP_CACHED_LEN_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "lookupCachedLen_cache", LookupCachedLenData.class); /** * Source Info:
     *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROCached}
     *   Parameter: {@link IsSameTypeNode} isSameTypeNode
     *   Inline method: {@link IsSameTypeNodeGen#inline}
*/ private static final IsSameTypeNode INLINED_LOOKUP_CONSTANT_M_R_O_CACHED_IS_SAME_TYPE_NODE_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, LOOKUP_CONSTANT_M_R_O_CACHED__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CONSTANT_M_R_O_CACHED_STATE_0_UPDATER.subUpdater(0, 6), ReferenceField.create(LookupConstantMROCachedData.lookup_(), "lookupConstantMROCached_isSameTypeNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROShape}
     *   Parameter: {@link GetMroStorageNode} getMroStorageNode
     *   Inline method: {@link GetMroStorageNodeGen#inline}
*/ private static final GetMroStorageNode INLINED_LOOKUP_CONSTANT_M_R_O_SHAPE_GET_MRO_STORAGE_NODE_ = GetMroStorageNodeGen.inline(InlineTarget.create(GetMroStorageNode.class, LOOKUP_CONSTANT_M_R_O_SHAPE__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CONSTANT_M_R_O_SHAPE_STATE_0_UPDATER.subUpdater(0, 8), ReferenceField.create(LookupConstantMROShapeData.lookup_(), "lookupConstantMROShape_getMroStorageNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
     *   Parameter: {@link IsSameTypeNode} isSameTypeNode
     *   Inline method: {@link IsSameTypeNodeGen#inline}
*/ private static final IsSameTypeNode INLINED_LOOKUP_CONSTANT_M_R_O_IS_SAME_TYPE_NODE_ = IsSameTypeNodeGen.inline(InlineTarget.create(IsSameTypeNode.class, LOOKUP_CONSTANT_M_R_O__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CONSTANT_M_R_O_STATE_0_UPDATER.subUpdater(0, 6), ReferenceField.create(LookupConstantMROData.lookup_(), "lookupConstantMRO_isSameTypeNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link LookupNativeSlotNode#lookupCachedLen}
     *   Parameter: {@link GetMroStorageNode} getMroStorageNode
     *   Inline method: {@link GetMroStorageNodeGen#inline}
*/ private static final GetMroStorageNode INLINED_LOOKUP_CACHED_LEN_GET_MRO_STORAGE_NODE_ = GetMroStorageNodeGen.inline(InlineTarget.create(GetMroStorageNode.class, LOOKUP_CACHED_LEN__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_CACHED_LEN_STATE_0_UPDATER.subUpdater(0, 8), ReferenceField.create(LookupCachedLenData.lookup_(), "lookupCachedLen_getMroStorageNode__field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link LookupNativeSlotNode#lookupGeneric}
     *   Parameter: {@link GetMroStorageNode} getMroStorageNode
     *   Inline method: {@link GetMroStorageNodeGen#inline}
*/ private static final GetMroStorageNode INLINED_LOOKUP_GENERIC_GET_MRO_STORAGE_NODE_ = GetMroStorageNodeGen.inline(InlineTarget.create(GetMroStorageNode.class, LOOKUP_GENERIC__LOOKUP_NATIVE_SLOT_NODE_LOOKUP_GENERIC_STATE_0_UPDATER.subUpdater(0, 8), ReferenceField.create(LookupGenericData.lookup_(), "lookupGeneric_getMroStorageNode__field1_", Node.class))); private static final LibraryFactory INTEROP_LIBRARY_ = LibraryFactory.resolve(InteropLibrary.class); /** * State Info:
     *   0: SpecializationActive {@link LookupNativeSlotNode#lookupConstantMROCached}
     *   1: SpecializationActive {@link LookupNativeSlotNode#lookupCachedLen}
     *   2: SpecializationActive {@link LookupNativeSlotNode#lookupGeneric}
     *   3: SpecializationActive {@link LookupNativeSlotNode#lookupConstantMROShape}
     *   4: SpecializationActive {@link LookupNativeSlotNode#lookupConstantMRO}
     * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
     *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
     *   Parameter: {@link ReadPointerNode} readPointerNode
*/ @Child private ReadPointerNode readPointerNode; @UnsafeAccessedField @Child private LookupConstantMROCachedData lookupConstantMROCached_cache; @UnsafeAccessedField @Child private LookupConstantMROShapeData lookupConstantMROShape_cache; @UnsafeAccessedField @Child private LookupConstantMROData lookupConstantMRO_cache; @UnsafeAccessedField @Child private LookupCachedLenData lookupCachedLen_cache; @Child private LookupGenericData lookupGeneric_cache; private LookupNativeSlotNodeGen(SlotMethodDef slot) { super(slot); } @ExplodeLoop @Override public Object execute(PythonManagedClass arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupConstantMROCached(PythonManagedClass, Node, IsSameTypeNode, Object, AttributeAssumptionPair)] || SpecializationActive[LookupNativeSlotNode.lookupConstantMROShape(PythonClass, Node, GetMroStorageNode, MroShape, MroShapeLookupResult)] || SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] || SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] || SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupConstantMROCached(PythonManagedClass, Node, IsSameTypeNode, Object, AttributeAssumptionPair)] */) { assert DSLSupport.assertIdempotence((isSingleContext())); LookupConstantMROCachedData s0_ = this.lookupConstantMROCached_cache; while (s0_ != null) { if (!Assumption.isValidAssumption((s0_.cachedAttrInMROInfo_.assumption))) { CompilerDirectives.transferToInterpreterAndInvalidate(); removeLookupConstantMROCached_(s0_); return executeAndSpecialize(arg0Value); } { Node inliningTarget__ = (s0_); if ((INLINED_LOOKUP_CONSTANT_M_R_O_CACHED_IS_SAME_TYPE_NODE_.execute(inliningTarget__, s0_.cachedKlass_, arg0Value))) { assert DSLSupport.assertIdempotence((s0_.cachedAttrInMROInfo_ != null)); return LookupNativeSlotNode.lookupConstantMROCached(arg0Value, inliningTarget__, INLINED_LOOKUP_CONSTANT_M_R_O_CACHED_IS_SAME_TYPE_NODE_, s0_.cachedKlass_, s0_.cachedAttrInMROInfo_); } } s0_ = s0_.next_; } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupConstantMROShape(PythonClass, Node, GetMroStorageNode, MroShape, MroShapeLookupResult)] */ && arg0Value instanceof PythonClass) { PythonClass arg0Value_ = (PythonClass) arg0Value; assert DSLSupport.assertIdempotence((!(isSingleContext()))); LookupConstantMROShapeData s1_ = this.lookupConstantMROShape_cache; while (s1_ != null) { assert DSLSupport.assertIdempotence((s1_.cachedMroShape_ != null)); if ((arg0Value_.getMroShape() == s1_.cachedMroShape_)) { Node inliningTarget__1 = (s1_); return lookupConstantMROShape(arg0Value_, inliningTarget__1, INLINED_LOOKUP_CONSTANT_M_R_O_SHAPE_GET_MRO_STORAGE_NODE_, s1_.cachedMroShape_, s1_.lookupResult_); } s1_ = s1_.next_; } } if ((state_0 & 0b10110) != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] || SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] || SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */) { if ((state_0 & 0b10000) != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] */) { assert DSLSupport.assertIdempotence((isSingleContext())); LookupConstantMROData s2_ = this.lookupConstantMRO_cache; while (s2_ != null) { if (!Assumption.isValidAssumption((s2_.lookupStable_))) { CompilerDirectives.transferToInterpreterAndInvalidate(); removeLookupConstantMRO_(s2_); return executeAndSpecialize(arg0Value); } { ReadPointerNode readPointerNode_ = this.readPointerNode; if (readPointerNode_ != null) { Node inliningTarget__2 = (s2_); if ((INLINED_LOOKUP_CONSTANT_M_R_O_IS_SAME_TYPE_NODE_.execute(inliningTarget__2, s2_.cachedKlass_, arg0Value))) { assert DSLSupport.assertIdempotence((s2_.mroLength_ < 32)); return lookupConstantMRO(arg0Value, inliningTarget__2, INLINED_LOOKUP_CONSTANT_M_R_O_IS_SAME_TYPE_NODE_, s2_.cachedKlass_, s2_.mro_, s2_.lookupStable_, s2_.mroLength_, s2_.readAttrNodes_, readPointerNode_, s2_.interopLibrary_); } } } s2_ = s2_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] */) { LookupCachedLenData s3_ = this.lookupCachedLen_cache; while (s3_ != null) { { ReadPointerNode readPointerNode_1 = this.readPointerNode; if (readPointerNode_1 != null) { Node inliningTarget__3 = (s3_); MroSequenceStorage mro__ = (INLINED_LOOKUP_CACHED_LEN_GET_MRO_STORAGE_NODE_.execute(inliningTarget__3, arg0Value)); int mroLength__ = (mro__.length()); if ((mroLength__ == s3_.cachedMroLength_)) { assert DSLSupport.assertIdempotence((s3_.cachedMroLength_ < 32)); return lookupCachedLen(arg0Value, inliningTarget__3, INLINED_LOOKUP_CACHED_LEN_GET_MRO_STORAGE_NODE_, mro__, mroLength__, s3_.cachedMroLength_, s3_.readAttrNodes_, readPointerNode_1, s3_.interopLibrary_); } } } s3_ = s3_.next_; } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */) { LookupGenericData s4_ = this.lookupGeneric_cache; if (s4_ != null) { { ReadPointerNode readPointerNode_2 = this.readPointerNode; if (readPointerNode_2 != null) { Node inliningTarget__4 = (s4_); return lookupGeneric(arg0Value, inliningTarget__4, INLINED_LOOKUP_GENERIC_GET_MRO_STORAGE_NODE_, s4_.readAttrNode_, readPointerNode_2, s4_.interopLibrary_); } } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } private Object executeAndSpecialize(PythonManagedClass arg0Value) { int state_0 = this.state_0_; int oldState_0 = state_0; try { { Node inliningTarget__ = null; if (((state_0 & 0b110)) == 0 /* is-not SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] && SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */ && (isSingleContext())) { while (true) { int count0_ = 0; LookupConstantMROCachedData s0_ = LOOKUP_CONSTANT_M_R_O_CACHED_CACHE_UPDATER.getVolatile(this); LookupConstantMROCachedData s0_original = s0_; while (s0_ != null) { { inliningTarget__ = (s0_); if ((INLINED_LOOKUP_CONSTANT_M_R_O_CACHED_IS_SAME_TYPE_NODE_.execute(inliningTarget__, s0_.cachedKlass_, arg0Value))) { assert DSLSupport.assertIdempotence((s0_.cachedAttrInMROInfo_ != null)); if (Assumption.isValidAssumption((s0_.cachedAttrInMROInfo_.assumption))) { break; } } } count0_++; s0_ = s0_.next_; } if (s0_ == null) { { s0_ = this.insert(new LookupConstantMROCachedData(s0_original)); inliningTarget__ = (s0_); Object cachedKlass__ = (arg0Value); if ((INLINED_LOOKUP_CONSTANT_M_R_O_CACHED_IS_SAME_TYPE_NODE_.execute(inliningTarget__, cachedKlass__, arg0Value))) { AttributeAssumptionPair cachedAttrInMROInfo__ = (findAttrAndAssumptionInMRO(cachedKlass__)); if ((cachedAttrInMROInfo__ != null)) { Assumption assumption0 = (cachedAttrInMROInfo__.assumption); if (Assumption.isValidAssumption(assumption0)) { if (count0_ < (PythonOptions.getAttributeAccessInlineCacheMaxDepth())) { s0_.cachedKlass_ = cachedKlass__; s0_.cachedAttrInMROInfo_ = cachedAttrInMROInfo__; if (!LOOKUP_CONSTANT_M_R_O_CACHED_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[LookupNativeSlotNode.lookupConstantMROCached(PythonManagedClass, Node, IsSameTypeNode, Object, AttributeAssumptionPair)] */; this.state_0_ = state_0; } else { s0_ = null; } } else { s0_ = null; } } else { s0_ = null; } } else { s0_ = null; } } } if (s0_ != null) { return LookupNativeSlotNode.lookupConstantMROCached(arg0Value, inliningTarget__, INLINED_LOOKUP_CONSTANT_M_R_O_CACHED_IS_SAME_TYPE_NODE_, s0_.cachedKlass_, s0_.cachedAttrInMROInfo_); } break; } } } { Node inliningTarget__1 = null; if (((state_0 & 0b10110)) == 0 /* is-not SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] && SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] && SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */ && arg0Value instanceof PythonClass) { PythonClass arg0Value_ = (PythonClass) arg0Value; if ((!(isSingleContext()))) { while (true) { int count1_ = 0; LookupConstantMROShapeData s1_ = LOOKUP_CONSTANT_M_R_O_SHAPE_CACHE_UPDATER.getVolatile(this); LookupConstantMROShapeData s1_original = s1_; while (s1_ != null) { assert DSLSupport.assertIdempotence((s1_.cachedMroShape_ != null)); if ((arg0Value_.getMroShape() == s1_.cachedMroShape_)) { inliningTarget__1 = (s1_); break; } count1_++; s1_ = s1_.next_; } if (s1_ == null) { { MroShape cachedMroShape__ = (arg0Value_.getMroShape()); if ((cachedMroShape__ != null) && (arg0Value_.getMroShape() == cachedMroShape__) && count1_ < (PythonOptions.getAttributeAccessInlineCacheMaxDepth())) { s1_ = this.insert(new LookupConstantMROShapeData(s1_original)); inliningTarget__1 = (s1_); s1_.cachedMroShape_ = cachedMroShape__; s1_.lookupResult_ = s1_.insert((lookupInMroShape(cachedMroShape__, arg0Value_))); if (!LOOKUP_CONSTANT_M_R_O_SHAPE_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } state_0 = state_0 | 0b1000 /* add SpecializationActive[LookupNativeSlotNode.lookupConstantMROShape(PythonClass, Node, GetMroStorageNode, MroShape, MroShapeLookupResult)] */; this.state_0_ = state_0; } } } if (s1_ != null) { return lookupConstantMROShape(arg0Value_, inliningTarget__1, INLINED_LOOKUP_CONSTANT_M_R_O_SHAPE_GET_MRO_STORAGE_NODE_, s1_.cachedMroShape_, s1_.lookupResult_); } break; } } } } { Node inliningTarget__2 = null; if (((state_0 & 0b110)) == 0 /* is-not SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] && SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */ && (isSingleContext())) { while (true) { int count2_ = 0; LookupConstantMROData s2_ = LOOKUP_CONSTANT_M_R_O_CACHE_UPDATER.getVolatile(this); LookupConstantMROData s2_original = s2_; while (s2_ != null) { { ReadPointerNode readPointerNode_ = this.readPointerNode; if (readPointerNode_ != null) { inliningTarget__2 = (s2_); if ((INLINED_LOOKUP_CONSTANT_M_R_O_IS_SAME_TYPE_NODE_.execute(inliningTarget__2, s2_.cachedKlass_, arg0Value))) { assert DSLSupport.assertIdempotence((s2_.mroLength_ < 32)); if (Assumption.isValidAssumption((s2_.lookupStable_))) { break; } } } } count2_++; s2_ = s2_.next_; } if (s2_ == null) { { s2_ = this.insert(new LookupConstantMROData(s2_original)); inliningTarget__2 = (s2_); Object cachedKlass__1 = (arg0Value); if ((INLINED_LOOKUP_CONSTANT_M_R_O_IS_SAME_TYPE_NODE_.execute(inliningTarget__2, cachedKlass__1, arg0Value))) { MroSequenceStorage mro__1 = (LookupNativeSlotNode.getMroStorageUncached(cachedKlass__1)); int mroLength__1 = (mro__1.length()); if ((mroLength__1 < 32)) { Assumption lookupStable__ = (mro__1.getLookupStableAssumption()); Assumption assumption0 = (lookupStable__); if (Assumption.isValidAssumption(assumption0)) { if (count2_ < (PythonOptions.getAttributeAccessInlineCacheMaxDepth())) { s2_.cachedKlass_ = cachedKlass__1; s2_.mro_ = mro__1; s2_.lookupStable_ = lookupStable__; s2_.mroLength_ = mroLength__1; ReadAttributeFromObjectNode[] readAttrNodes__ = s2_.insert((LookupAttributeInMRONode.create(mroLength__1))); Objects.requireNonNull(readAttrNodes__, "Specialization 'lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)' cache 'readAttrNodes' 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_.readAttrNodes_ = readAttrNodes__; ReadPointerNode readPointerNode_; ReadPointerNode readPointerNode__shared = this.readPointerNode; if (readPointerNode__shared != null) { readPointerNode_ = readPointerNode__shared; } else { readPointerNode_ = s2_.insert((ReadPointerNodeGen.create())); if (readPointerNode_ == null) { throw new IllegalStateException("Specialization 'lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)' contains a shared cache with name 'readPointerNode' 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.readPointerNode == null) { this.readPointerNode = readPointerNode_; } InteropLibrary interopLibrary__ = s2_.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(interopLibrary__, "Specialization 'lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)' cache 'interopLibrary' 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_.interopLibrary_ = interopLibrary__; if (!LOOKUP_CONSTANT_M_R_O_CACHE_UPDATER.compareAndSet(this, s2_original, s2_)) { continue; } this.lookupConstantMROShape_cache = null; state_0 = state_0 & 0xfffffff7 /* remove SpecializationActive[LookupNativeSlotNode.lookupConstantMROShape(PythonClass, Node, GetMroStorageNode, MroShape, MroShapeLookupResult)] */; state_0 = state_0 | 0b10000 /* add SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] */; this.state_0_ = state_0; } else { s2_ = null; } } else { s2_ = null; } } else { s2_ = null; } } else { s2_ = null; } } } if (s2_ != null) { return lookupConstantMRO(arg0Value, inliningTarget__2, INLINED_LOOKUP_CONSTANT_M_R_O_IS_SAME_TYPE_NODE_, s2_.cachedKlass_, s2_.mro_, s2_.lookupStable_, s2_.mroLength_, s2_.readAttrNodes_, this.readPointerNode, s2_.interopLibrary_); } break; } } } { int mroLength__ = 0; MroSequenceStorage mro__ = null; Node inliningTarget__3 = null; if (((state_0 & 0b100)) == 0 /* is-not SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */) { while (true) { int count3_ = 0; LookupCachedLenData s3_ = LOOKUP_CACHED_LEN_CACHE_UPDATER.getVolatile(this); LookupCachedLenData s3_original = s3_; while (s3_ != null) { { ReadPointerNode readPointerNode_1 = this.readPointerNode; if (readPointerNode_1 != null) { inliningTarget__3 = (s3_); mro__ = (INLINED_LOOKUP_CACHED_LEN_GET_MRO_STORAGE_NODE_.execute(inliningTarget__3, arg0Value)); mroLength__ = (mro__.length()); if ((mroLength__ == s3_.cachedMroLength_)) { assert DSLSupport.assertIdempotence((s3_.cachedMroLength_ < 32)); break; } } } count3_++; s3_ = s3_.next_; } if (s3_ == null) { { s3_ = this.insert(new LookupCachedLenData(s3_original)); inliningTarget__3 = (s3_); mro__ = (INLINED_LOOKUP_CACHED_LEN_GET_MRO_STORAGE_NODE_.execute(inliningTarget__3, arg0Value)); mroLength__ = (mro__.length()); int cachedMroLength__ = (mro__.length()); if ((mroLength__ == cachedMroLength__) && (cachedMroLength__ < 32) && count3_ < (PythonOptions.getAttributeAccessInlineCacheMaxDepth())) { s3_.cachedMroLength_ = cachedMroLength__; ReadAttributeFromObjectNode[] readAttrNodes__1 = s3_.insert((LookupAttributeInMRONode.create(cachedMroLength__))); Objects.requireNonNull(readAttrNodes__1, "Specialization 'lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)' cache 'readAttrNodes' 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_.readAttrNodes_ = readAttrNodes__1; ReadPointerNode readPointerNode_1; ReadPointerNode readPointerNode_1_shared = this.readPointerNode; if (readPointerNode_1_shared != null) { readPointerNode_1 = readPointerNode_1_shared; } else { readPointerNode_1 = s3_.insert((ReadPointerNodeGen.create())); if (readPointerNode_1 == null) { throw new IllegalStateException("Specialization 'lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)' contains a shared cache with name 'readPointerNode' 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.readPointerNode == null) { this.readPointerNode = readPointerNode_1; } InteropLibrary interopLibrary__1 = s3_.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(interopLibrary__1, "Specialization 'lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)' cache 'interopLibrary' 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_.interopLibrary_ = interopLibrary__1; if (!LOOKUP_CACHED_LEN_CACHE_UPDATER.compareAndSet(this, s3_original, s3_)) { continue; } this.lookupConstantMROCached_cache = null; this.lookupConstantMROShape_cache = null; this.lookupConstantMRO_cache = null; state_0 = state_0 & 0xffffffe6 /* remove SpecializationActive[LookupNativeSlotNode.lookupConstantMROCached(PythonManagedClass, Node, IsSameTypeNode, Object, AttributeAssumptionPair)], SpecializationActive[LookupNativeSlotNode.lookupConstantMROShape(PythonClass, Node, GetMroStorageNode, MroShape, MroShapeLookupResult)], SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] */; this.state_0_ = state_0; } else { s3_ = null; } } } if (s3_ != null) { return lookupCachedLen(arg0Value, inliningTarget__3, INLINED_LOOKUP_CACHED_LEN_GET_MRO_STORAGE_NODE_, mro__, mroLength__, s3_.cachedMroLength_, s3_.readAttrNodes_, this.readPointerNode, s3_.interopLibrary_); } break; } } } { Node inliningTarget__4 = null; LookupGenericData s4_ = this.insert(new LookupGenericData()); inliningTarget__4 = (s4_); ReadAttributeFromObjectNode readAttrNode__ = s4_.insert((ReadAttributeFromObjectNode.createForceType())); Objects.requireNonNull(readAttrNode__, "Specialization 'lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)' cache 'readAttrNode' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s4_.readAttrNode_ = readAttrNode__; ReadPointerNode readPointerNode_2; ReadPointerNode readPointerNode_2_shared = this.readPointerNode; if (readPointerNode_2_shared != null) { readPointerNode_2 = readPointerNode_2_shared; } else { readPointerNode_2 = s4_.insert((ReadPointerNodeGen.create())); if (readPointerNode_2 == null) { throw new IllegalStateException("Specialization 'lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)' contains a shared cache with name 'readPointerNode' 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.readPointerNode == null) { this.readPointerNode = readPointerNode_2; } InteropLibrary interopLibrary__2 = s4_.insert((INTEROP_LIBRARY_.createDispatched(1))); Objects.requireNonNull(interopLibrary__2, "Specialization 'lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)' cache 'interopLibrary' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); s4_.interopLibrary_ = interopLibrary__2; VarHandle.storeStoreFence(); this.lookupGeneric_cache = s4_; this.lookupConstantMROCached_cache = null; this.lookupConstantMROShape_cache = null; this.lookupConstantMRO_cache = null; this.lookupCachedLen_cache = null; state_0 = state_0 & 0xffffffe4 /* remove SpecializationActive[LookupNativeSlotNode.lookupConstantMROCached(PythonManagedClass, Node, IsSameTypeNode, Object, AttributeAssumptionPair)], SpecializationActive[LookupNativeSlotNode.lookupConstantMROShape(PythonClass, Node, GetMroStorageNode, MroShape, MroShapeLookupResult)], SpecializationActive[LookupNativeSlotNode.lookupConstantMRO(PythonManagedClass, Node, IsSameTypeNode, Object, MroSequenceStorage, Assumption, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)], SpecializationActive[LookupNativeSlotNode.lookupCachedLen(PythonManagedClass, Node, GetMroStorageNode, MroSequenceStorage, int, int, ReadAttributeFromObjectNode[], ReadPointerNode, InteropLibrary)] */; state_0 = state_0 | 0b100 /* add SpecializationActive[LookupNativeSlotNode.lookupGeneric(PythonManagedClass, Node, GetMroStorageNode, ReadAttributeFromObjectNode, ReadPointerNode, InteropLibrary)] */; this.state_0_ = state_0; return lookupGeneric(arg0Value, inliningTarget__4, INLINED_LOOKUP_GENERIC_GET_MRO_STORAGE_NODE_, readAttrNode__, readPointerNode_2, interopLibrary__2); } } finally { if (oldState_0 != 0) { checkForPolymorphicSpecialize(oldState_0); } } } private void checkForPolymorphicSpecialize(int oldState_0) { if (((oldState_0 & 0b100) == 0 && (state_0_ & 0b100) != 0)) { this.reportPolymorphicSpecialize(); } } @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 */) { LookupConstantMROCachedData s0_ = this.lookupConstantMROCached_cache; LookupConstantMROShapeData s1_ = this.lookupConstantMROShape_cache; LookupConstantMROData s2_ = this.lookupConstantMRO_cache; LookupCachedLenData s3_ = this.lookupCachedLen_cache; if ((s0_ == null || s0_.next_ == null) && (s1_ == null || s1_.next_ == null) && (s2_ == null || s2_.next_ == null) && (s3_ == null || s3_.next_ == null)) { return NodeCost.MONOMORPHIC; } } } return NodeCost.POLYMORPHIC; } void removeLookupConstantMROCached_(LookupConstantMROCachedData s0_) { while (true) { LookupConstantMROCachedData cur = this.lookupConstantMROCached_cache; LookupConstantMROCachedData original = cur; LookupConstantMROCachedData update = null; while (cur != null) { if (cur == s0_) { if (cur == original) { update = cur.next_; } else { update = original.remove(this, s0_); } break; } cur = cur.next_; } if (cur != null && !LOOKUP_CONSTANT_M_R_O_CACHED_CACHE_UPDATER.compareAndSet(this, original, update)) { continue; } break; } } void removeLookupConstantMRO_(LookupConstantMROData s2_) { while (true) { LookupConstantMROData cur = this.lookupConstantMRO_cache; LookupConstantMROData original = cur; LookupConstantMROData update = null; while (cur != null) { if (cur == s2_) { if (cur == original) { update = cur.next_; } else { update = original.remove(this, s2_); } break; } cur = cur.next_; } if (cur != null && !LOOKUP_CONSTANT_M_R_O_CACHE_UPDATER.compareAndSet(this, original, update)) { continue; } break; } } @NeverDefault public static LookupNativeSlotNode create(SlotMethodDef slot) { return new LookupNativeSlotNodeGen(slot); } @GeneratedBy(LookupNativeSlotNode.class) @DenyReplace private static final class LookupConstantMROCachedData extends Node implements SpecializationDataNode { @Child LookupConstantMROCachedData next_; /** * State Info:
         *   0-5: InlinedCache
         *        Specialization: {@link LookupNativeSlotNode#lookupConstantMROCached}
         *        Parameter: {@link IsSameTypeNode} isSameTypeNode
         *        Inline method: {@link IsSameTypeNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int lookupConstantMROCached_state_0_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROCached}
         *   Parameter: {@link IsSameTypeNode} isSameTypeNode
         *   Inline method: {@link IsSameTypeNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node lookupConstantMROCached_isSameTypeNode__field1_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROCached}
         *   Parameter: {@link Object} cachedKlass
*/ @CompilationFinal Object cachedKlass_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROCached}
         *   Parameter: {@link AttributeAssumptionPair} cachedAttrInMROInfo
*/ @CompilationFinal AttributeAssumptionPair cachedAttrInMROInfo_; LookupConstantMROCachedData(LookupConstantMROCachedData next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } LookupConstantMROCachedData remove(Node parent, LookupConstantMROCachedData search) { LookupConstantMROCachedData newNext = this.next_; if (newNext != null) { if (search == newNext) { newNext = newNext.next_; } else { newNext = newNext.remove(this, search); } } LookupConstantMROCachedData copy = parent.insert(new LookupConstantMROCachedData(newNext)); copy.lookupConstantMROCached_isSameTypeNode__field1_ = copy.insert(this.lookupConstantMROCached_isSameTypeNode__field1_); copy.cachedKlass_ = this.cachedKlass_; copy.cachedAttrInMROInfo_ = this.cachedAttrInMROInfo_; return copy; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(LookupNativeSlotNode.class) @DenyReplace private static final class LookupConstantMROShapeData extends Node implements SpecializationDataNode { @Child LookupConstantMROShapeData next_; /** * State Info:
         *   0-7: InlinedCache
         *        Specialization: {@link LookupNativeSlotNode#lookupConstantMROShape}
         *        Parameter: {@link GetMroStorageNode} getMroStorageNode
         *        Inline method: {@link GetMroStorageNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int lookupConstantMROShape_state_0_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROShape}
         *   Parameter: {@link GetMroStorageNode} getMroStorageNode
         *   Inline method: {@link GetMroStorageNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node lookupConstantMROShape_getMroStorageNode__field1_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROShape}
         *   Parameter: {@link MroShape} cachedMroShape
*/ @CompilationFinal MroShape cachedMroShape_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMROShape}
         *   Parameter: {@link MroShapeLookupResult} lookupResult
*/ @Child MroShapeLookupResult lookupResult_; LookupConstantMROShapeData(LookupConstantMROShapeData next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(LookupNativeSlotNode.class) @DenyReplace private static final class LookupConstantMROData extends Node implements SpecializationDataNode { @Child LookupConstantMROData next_; /** * State Info:
         *   0-5: InlinedCache
         *        Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *        Parameter: {@link IsSameTypeNode} isSameTypeNode
         *        Inline method: {@link IsSameTypeNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int lookupConstantMRO_state_0_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: {@link IsSameTypeNode} isSameTypeNode
         *   Inline method: {@link IsSameTypeNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node lookupConstantMRO_isSameTypeNode__field1_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: {@link Object} cachedKlass
*/ @CompilationFinal Object cachedKlass_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: {@link MroSequenceStorage} mro
*/ @CompilationFinal MroSequenceStorage mro_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: {@link Assumption} lookupStable
*/ @CompilationFinal Assumption lookupStable_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: int mroLength
*/ @CompilationFinal int mroLength_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: {@link ReadAttributeFromObjectNode} readAttrNodes
*/ @Children ReadAttributeFromObjectNode[] readAttrNodes_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupConstantMRO}
         *   Parameter: {@link InteropLibrary} interopLibrary
*/ @Child InteropLibrary interopLibrary_; LookupConstantMROData(LookupConstantMROData next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } LookupConstantMROData remove(Node parent, LookupConstantMROData search) { LookupConstantMROData newNext = this.next_; if (newNext != null) { if (search == newNext) { newNext = newNext.next_; } else { newNext = newNext.remove(this, search); } } LookupConstantMROData copy = parent.insert(new LookupConstantMROData(newNext)); copy.lookupConstantMRO_isSameTypeNode__field1_ = copy.insert(this.lookupConstantMRO_isSameTypeNode__field1_); copy.cachedKlass_ = this.cachedKlass_; copy.mro_ = this.mro_; copy.lookupStable_ = this.lookupStable_; copy.mroLength_ = this.mroLength_; copy.readAttrNodes_ = copy.insert(this.readAttrNodes_); copy.interopLibrary_ = copy.insert(this.interopLibrary_); return copy; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(LookupNativeSlotNode.class) @DenyReplace private static final class LookupCachedLenData extends Node implements SpecializationDataNode { @Child LookupCachedLenData next_; /** * State Info:
         *   0-7: InlinedCache
         *        Specialization: {@link LookupNativeSlotNode#lookupCachedLen}
         *        Parameter: {@link GetMroStorageNode} getMroStorageNode
         *        Inline method: {@link GetMroStorageNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int lookupCachedLen_state_0_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupCachedLen}
         *   Parameter: {@link GetMroStorageNode} getMroStorageNode
         *   Inline method: {@link GetMroStorageNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node lookupCachedLen_getMroStorageNode__field1_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupCachedLen}
         *   Parameter: int cachedMroLength
*/ @CompilationFinal int cachedMroLength_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupCachedLen}
         *   Parameter: {@link ReadAttributeFromObjectNode} readAttrNodes
*/ @Children ReadAttributeFromObjectNode[] readAttrNodes_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupCachedLen}
         *   Parameter: {@link InteropLibrary} interopLibrary
*/ @Child InteropLibrary interopLibrary_; LookupCachedLenData(LookupCachedLenData next_) { this.next_ = next_; } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } @GeneratedBy(LookupNativeSlotNode.class) @DenyReplace private static final class LookupGenericData extends Node implements SpecializationDataNode { /** * State Info:
         *   0-7: InlinedCache
         *        Specialization: {@link LookupNativeSlotNode#lookupGeneric}
         *        Parameter: {@link GetMroStorageNode} getMroStorageNode
         *        Inline method: {@link GetMroStorageNodeGen#inline}
         * 
*/ @CompilationFinal @UnsafeAccessedField private int lookupGeneric_state_0_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupGeneric}
         *   Parameter: {@link GetMroStorageNode} getMroStorageNode
         *   Inline method: {@link GetMroStorageNodeGen#inline}
         *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node lookupGeneric_getMroStorageNode__field1_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupGeneric}
         *   Parameter: {@link ReadAttributeFromObjectNode} readAttrNode
*/ @Child ReadAttributeFromObjectNode readAttrNode_; /** * Source Info:
         *   Specialization: {@link LookupNativeSlotNode#lookupGeneric}
         *   Parameter: {@link InteropLibrary} interopLibrary
*/ @Child InteropLibrary interopLibrary_; LookupGenericData() { } @Override public NodeCost getCost() { return NodeCost.NONE; } private static Lookup lookup_() { return MethodHandles.lookup(); } } /** * Debug Info:
     *   Specialization {@link LookupNativeGetattroSlotNode#get}
     *     Activation probability: 1.00000
     *     With/without class size: 32/12 bytes
     * 
*/ @GeneratedBy(LookupNativeGetattroSlotNode.class) @SuppressWarnings("javadoc") public static final class LookupNativeGetattroSlotNodeGen extends LookupNativeGetattroSlotNode { private static final Uncached UNCACHED = new Uncached(); /** * State Info:
         *   0: SpecializationActive {@link LookupNativeGetattroSlotNode#get}
         * 
*/ @CompilationFinal private int state_0_; /** * Source Info:
         *   Specialization: {@link LookupNativeGetattroSlotNode#get}
         *   Parameter: {@link LookupCallableSlotInMRONode} lookupGetattr
*/ @Child private LookupCallableSlotInMRONode lookupGetattr_; /** * Source Info:
         *   Specialization: {@link LookupNativeGetattroSlotNode#get}
         *   Parameter: {@link LookupCallableSlotInMRONode} lookupGetattribute
*/ @Child private LookupCallableSlotInMRONode lookupGetattribute_; /** * Source Info:
         *   Specialization: {@link LookupNativeGetattroSlotNode#get}
         *   Parameter: {@link LookupNativeSlotNode} lookupNativeGetattro
*/ @Child private LookupNativeSlotNode lookupNativeGetattro_; private LookupNativeGetattroSlotNodeGen() { } @Override public Object execute(PythonManagedClass arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[LookupNativeSlotNode.LookupNativeGetattroSlotNode.get(PythonManagedClass, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, LookupNativeSlotNode)] */) { { LookupCallableSlotInMRONode lookupGetattr__ = this.lookupGetattr_; if (lookupGetattr__ != null) { LookupCallableSlotInMRONode lookupGetattribute__ = this.lookupGetattribute_; if (lookupGetattribute__ != null) { LookupNativeSlotNode lookupNativeGetattro__ = this.lookupNativeGetattro_; if (lookupNativeGetattro__ != null) { return get(arg0Value, lookupGetattr__, lookupGetattribute__, lookupNativeGetattro__); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } private Object executeAndSpecialize(PythonManagedClass arg0Value) { int state_0 = this.state_0_; LookupCallableSlotInMRONode lookupGetattr__ = this.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.GetAttr))); Objects.requireNonNull(lookupGetattr__, "Specialization 'get(PythonManagedClass, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, LookupNativeSlotNode)' cache 'lookupGetattr' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); VarHandle.storeStoreFence(); this.lookupGetattr_ = lookupGetattr__; LookupCallableSlotInMRONode lookupGetattribute__ = this.insert((LookupCallableSlotInMRONode.create(SpecialMethodSlot.GetAttribute))); Objects.requireNonNull(lookupGetattribute__, "Specialization 'get(PythonManagedClass, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, LookupNativeSlotNode)' cache 'lookupGetattribute' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); VarHandle.storeStoreFence(); this.lookupGetattribute_ = lookupGetattribute__; LookupNativeSlotNode lookupNativeGetattro__ = this.insert((LookupNativeSlotNodeGen.create(SlotMethodDef.TP_GETATTRO))); Objects.requireNonNull(lookupNativeGetattro__, "Specialization 'get(PythonManagedClass, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, LookupNativeSlotNode)' cache 'lookupNativeGetattro' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'."); VarHandle.storeStoreFence(); this.lookupNativeGetattro_ = lookupNativeGetattro__; state_0 = state_0 | 0b1 /* add SpecializationActive[LookupNativeSlotNode.LookupNativeGetattroSlotNode.get(PythonManagedClass, LookupCallableSlotInMRONode, LookupCallableSlotInMRONode, LookupNativeSlotNode)] */; this.state_0_ = state_0; return get(arg0Value, lookupGetattr__, lookupGetattribute__, lookupNativeGetattro__); } @Override public NodeCost getCost() { int state_0 = this.state_0_; if (state_0 == 0) { return NodeCost.UNINITIALIZED; } else { return NodeCost.MONOMORPHIC; } } @NeverDefault public static LookupNativeGetattroSlotNode create() { return new LookupNativeGetattroSlotNodeGen(); } @NeverDefault public static LookupNativeGetattroSlotNode getUncached() { return LookupNativeGetattroSlotNodeGen.UNCACHED; } @GeneratedBy(LookupNativeGetattroSlotNode.class) @DenyReplace private static final class Uncached extends LookupNativeGetattroSlotNode { @TruffleBoundary @Override public Object execute(PythonManagedClass arg0Value) { return get(arg0Value, (LookupCallableSlotInMRONode.getUncached(SpecialMethodSlot.GetAttr)), (LookupCallableSlotInMRONode.getUncached(SpecialMethodSlot.GetAttribute)), (LookupNativeSlotNode.getUncached(SlotMethodDef.TP_GETATTRO))); } @Override public NodeCost getCost() { return NodeCost.MEGAMORPHIC; } @Override public boolean isAdoptable() { return false; } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy