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

com.oracle.graal.python.lib.PyObjectSetAttrNodeGen 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.PGuards;
import com.oracle.graal.python.nodes.PRaiseNode.Lazy;
import com.oracle.graal.python.nodes.PRaiseNodeGen.LazyNodeGen;
import com.oracle.graal.python.nodes.call.special.CallBinaryMethodNode;
import com.oracle.graal.python.nodes.call.special.CallTernaryMethodNode;
import com.oracle.graal.python.nodes.call.special.LookupSpecialMethodSlotNode;
import com.oracle.graal.python.nodes.object.GetClassNode;
import com.oracle.graal.python.nodes.object.GetClassNodeGen;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.UnsupportedSpecializationException;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.RequiredField;
import com.oracle.truffle.api.dsl.InlineSupport.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.frame.Frame;
import com.oracle.truffle.api.nodes.DenyReplace;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.strings.TruffleString;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;

/**
 * Debug Info: 
 *   Specialization {@link PyObjectSetAttr#setFixedAttr}
 *     Activation probability: 0.38500
 *     With/without class size: 11/4 bytes
 *   Specialization {@link PyObjectSetAttr#delFixedAttr}
 *     Activation probability: 0.29500
 *     With/without class size: 9/4 bytes
 *   Specialization {@link PyObjectSetAttr#doDynamicAttr}
 *     Activation probability: 0.20500
 *     With/without class size: 7/0 bytes
 *   Specialization {@link PyObjectSetAttr#nameMustBeString}
 *     Activation probability: 0.11500
 *     With/without class size: 5/0 bytes
 * 
*/ @GeneratedBy(PyObjectSetAttr.class) @SuppressWarnings("javadoc") public final class PyObjectSetAttrNodeGen extends PyObjectSetAttr { private static final StateField STATE_0_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField SET_FIXED_ATTR_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "setFixedAttr_cache", SetFixedAttrData.class); static final ReferenceField DEL_FIXED_ATTR_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "delFixedAttr_cache", DelFixedAttrData.class); /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link GetClassNode} getClass
     *   Inline method: {@link GetClassNodeGen#inline}
*/ private static final GetClassNode INLINED_GET_CLASS = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, STATE_0_UPDATER.subUpdater(4, 17), ReferenceField.create(MethodHandles.lookup(), "getClass_field1_", Node.class))); /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link Lazy} raise
     *   Inline method: {@link LazyNodeGen#inline}
*/ private static final Lazy INLINED_RAISE = LazyNodeGen.inline(InlineTarget.create(Lazy.class, STATE_0_UPDATER.subUpdater(21, 1), ReferenceField.create(MethodHandles.lookup(), "raise_field1_", Node.class))); private static final Uncached UNCACHED = new Uncached(); /** * State Info:
     *   0: SpecializationActive {@link PyObjectSetAttr#setFixedAttr}
     *   1: SpecializationActive {@link PyObjectSetAttr#doDynamicAttr}
     *   2: SpecializationActive {@link PyObjectSetAttr#delFixedAttr}
     *   3: SpecializationActive {@link PyObjectSetAttr#nameMustBeString}
     *   4-20: InlinedCache
     *        Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *        Parameter: {@link GetClassNode} getClass
     *        Inline method: {@link GetClassNodeGen#inline}
     *   21: InlinedCache
     *        Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *        Parameter: {@link Lazy} raise
     *        Inline method: {@link LazyNodeGen#inline}
     * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link GetClassNode} getClass
     *   Inline method: {@link GetClassNodeGen#inline}
     *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node getClass_field1_; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link LookupSpecialMethodSlotNode} lookupSetattr
*/ @Child private LookupSpecialMethodSlotNode lookup; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link LookupSpecialMethodSlotNode} lookupGetattr
*/ @Child private LookupSpecialMethodSlotNode lookupGet; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link Lazy} raise
     *   Inline method: {@link LazyNodeGen#inline}
     *   Inline field: {@link Node} field1
*/ @Child @UnsafeAccessedField @SuppressWarnings("unused") private Node raise_field1_; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
     *   Parameter: {@link CallTernaryMethodNode} callSetattr
*/ @Child private CallTernaryMethodNode call; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#delFixedAttr}
     *   Parameter: {@link LookupSpecialMethodSlotNode} lookupDelattr
*/ @Child private LookupSpecialMethodSlotNode lookupDel; /** * Source Info:
     *   Specialization: {@link PyObjectSetAttr#delFixedAttr}
     *   Parameter: {@link CallBinaryMethodNode} callDelattr
*/ @Child private CallBinaryMethodNode callDel; @UnsafeAccessedField @Child private SetFixedAttrData setFixedAttr_cache; @UnsafeAccessedField @Child private DelFixedAttrData delFixedAttr_cache; private PyObjectSetAttrNodeGen() { } @Override public void execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Object arg3Value) { int state_0 = this.state_0_; if ((state_0 & 0b1111) != 0 /* is SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] || SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] || SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] || SpecializationActive[PyObjectSetAttr.nameMustBeString(Node, Object, Object, Object, Lazy)] */) { if ((state_0 & 0b111) != 0 /* is SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] || SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] || SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */ && arg2Value instanceof TruffleString) { TruffleString arg2Value_ = (TruffleString) arg2Value; if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] */) { SetFixedAttrData s0_ = this.setFixedAttr_cache; if (s0_ != null) { { LookupSpecialMethodSlotNode lookup_ = this.lookup; if (lookup_ != null) { LookupSpecialMethodSlotNode lookupGet_ = this.lookupGet; if (lookupGet_ != null) { CallTernaryMethodNode call_ = this.call; if (call_ != null) { if ((arg2Value_ == s0_.cachedName_) && (arg3Value != null)) { PyObjectSetAttr.setFixedAttr(frameValue, this, arg1Value, arg2Value_, arg3Value, s0_.cachedName_, INLINED_GET_CLASS, lookup_, lookupGet_, INLINED_RAISE, call_); return; } } } } } } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] */) { DelFixedAttrData s1_ = this.delFixedAttr_cache; if (s1_ != null) { { LookupSpecialMethodSlotNode lookupDel_ = this.lookupDel; if (lookupDel_ != null) { LookupSpecialMethodSlotNode lookupGet_1 = this.lookupGet; if (lookupGet_1 != null) { CallBinaryMethodNode callDel_ = this.callDel; if (callDel_ != null) { if ((arg2Value_ == s1_.cachedName_) && (arg3Value == null)) { PyObjectSetAttr.delFixedAttr(frameValue, this, arg1Value, arg2Value_, arg3Value, s1_.cachedName_, INLINED_GET_CLASS, lookupDel_, lookupGet_1, INLINED_RAISE, callDel_); return; } } } } } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */) { { LookupSpecialMethodSlotNode lookup_1 = this.lookup; if (lookup_1 != null) { LookupSpecialMethodSlotNode lookupDel_1 = this.lookupDel; if (lookupDel_1 != null) { LookupSpecialMethodSlotNode lookupGet_2 = this.lookupGet; if (lookupGet_2 != null) { CallTernaryMethodNode call_1 = this.call; if (call_1 != null) { CallBinaryMethodNode callDel_1 = this.callDel; if (callDel_1 != null) { PyObjectSetAttr.doDynamicAttr(frameValue, this, arg1Value, arg2Value_, arg3Value, INLINED_GET_CLASS, lookup_1, lookupDel_1, lookupGet_2, INLINED_RAISE, call_1, callDel_1); return; } } } } } } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectSetAttr.nameMustBeString(Node, Object, Object, Object, Lazy)] */) { if ((!(PGuards.isString(arg2Value)))) { PyObjectSetAttr.nameMustBeString(this, arg1Value, arg2Value, arg3Value, INLINED_RAISE); return; } } } CompilerDirectives.transferToInterpreterAndInvalidate(); executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value); return; } private void executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Object arg3Value) { int state_0 = this.state_0_; if (arg2Value instanceof TruffleString) { TruffleString arg2Value_ = (TruffleString) arg2Value; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */) { while (true) { int count0_ = 0; SetFixedAttrData s0_ = SET_FIXED_ATTR_CACHE_UPDATER.getVolatile(this); SetFixedAttrData s0_original = s0_; while (s0_ != null) { { LookupSpecialMethodSlotNode lookup_ = this.lookup; if (lookup_ != null) { LookupSpecialMethodSlotNode lookupGet_ = this.lookupGet; if (lookupGet_ != null) { CallTernaryMethodNode call_ = this.call; if (call_ != null) { if ((arg2Value_ == s0_.cachedName_) && (arg3Value != null)) { break; } } } } } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { if ((arg3Value != null)) { // assert (arg2Value_ == s0_.cachedName_); s0_ = this.insert(new SetFixedAttrData()); s0_.cachedName_ = (arg2Value_); LookupSpecialMethodSlotNode lookup_; LookupSpecialMethodSlotNode lookup__shared = this.lookup; if (lookup__shared != null) { lookup_ = lookup__shared; } else { lookup_ = s0_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.SetAttr))); if (lookup_ == null) { throw new IllegalStateException("Specialization 'setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)' contains a shared cache with name 'lookupSetattr' 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.lookup == null) { this.lookup = lookup_; } LookupSpecialMethodSlotNode lookupGet_; LookupSpecialMethodSlotNode lookupGet__shared = this.lookupGet; if (lookupGet__shared != null) { lookupGet_ = lookupGet__shared; } else { lookupGet_ = s0_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.GetAttribute))); if (lookupGet_ == null) { throw new IllegalStateException("Specialization 'setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)' contains a shared cache with name 'lookupGetattr' 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_; } CallTernaryMethodNode call_; CallTernaryMethodNode call__shared = this.call; if (call__shared != null) { call_ = call__shared; } else { call_ = s0_.insert((CallTernaryMethodNode.create())); if (call_ == null) { throw new IllegalStateException("Specialization 'setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)' contains a shared cache with name 'callSetattr' 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.call == null) { this.call = call_; } if (!SET_FIXED_ATTR_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] */; this.state_0_ = state_0; } } if (s0_ != null) { PyObjectSetAttr.setFixedAttr(frameValue, this, arg1Value, arg2Value_, arg3Value, s0_.cachedName_, INLINED_GET_CLASS, this.lookup, this.lookupGet, INLINED_RAISE, this.call); return; } break; } } if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */) { while (true) { int count1_ = 0; DelFixedAttrData s1_ = DEL_FIXED_ATTR_CACHE_UPDATER.getVolatile(this); DelFixedAttrData s1_original = s1_; while (s1_ != null) { { LookupSpecialMethodSlotNode lookupDel_ = this.lookupDel; if (lookupDel_ != null) { LookupSpecialMethodSlotNode lookupGet_1 = this.lookupGet; if (lookupGet_1 != null) { CallBinaryMethodNode callDel_ = this.callDel; if (callDel_ != null) { if ((arg2Value_ == s1_.cachedName_) && (arg3Value == null)) { break; } } } } } count1_++; s1_ = null; break; } if (s1_ == null && count1_ < 1) { if ((arg3Value == null)) { // assert (arg2Value_ == s1_.cachedName_); s1_ = this.insert(new DelFixedAttrData()); s1_.cachedName_ = (arg2Value_); LookupSpecialMethodSlotNode lookupDel_; LookupSpecialMethodSlotNode lookupDel__shared = this.lookupDel; if (lookupDel__shared != null) { lookupDel_ = lookupDel__shared; } else { lookupDel_ = s1_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.DelAttr))); if (lookupDel_ == null) { throw new IllegalStateException("Specialization 'delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)' contains a shared cache with name 'lookupDelattr' 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.lookupDel == null) { this.lookupDel = lookupDel_; } LookupSpecialMethodSlotNode lookupGet_1; LookupSpecialMethodSlotNode lookupGet_1_shared = this.lookupGet; if (lookupGet_1_shared != null) { lookupGet_1 = lookupGet_1_shared; } else { lookupGet_1 = s1_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.GetAttribute))); if (lookupGet_1 == null) { throw new IllegalStateException("Specialization 'delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)' contains a shared cache with name 'lookupGetattr' 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; } CallBinaryMethodNode callDel_; CallBinaryMethodNode callDel__shared = this.callDel; if (callDel__shared != null) { callDel_ = callDel__shared; } else { callDel_ = s1_.insert((CallBinaryMethodNode.create())); if (callDel_ == null) { throw new IllegalStateException("Specialization 'delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)' contains a shared cache with name 'callDelattr' 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.callDel == null) { this.callDel = callDel_; } if (!DEL_FIXED_ATTR_CACHE_UPDATER.compareAndSet(this, s1_original, s1_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] */; this.state_0_ = state_0; } } if (s1_ != null) { PyObjectSetAttr.delFixedAttr(frameValue, this, arg1Value, arg2Value_, arg3Value, s1_.cachedName_, INLINED_GET_CLASS, this.lookupDel, this.lookupGet, INLINED_RAISE, this.callDel); return; } break; } } LookupSpecialMethodSlotNode lookup_1; LookupSpecialMethodSlotNode lookup_1_shared = this.lookup; if (lookup_1_shared != null) { lookup_1 = lookup_1_shared; } else { lookup_1 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.SetAttr))); if (lookup_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'lookupSetattr' 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.lookup == null) { VarHandle.storeStoreFence(); this.lookup = lookup_1; } LookupSpecialMethodSlotNode lookupDel_1; LookupSpecialMethodSlotNode lookupDel_1_shared = this.lookupDel; if (lookupDel_1_shared != null) { lookupDel_1 = lookupDel_1_shared; } else { lookupDel_1 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.DelAttr))); if (lookupDel_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'lookupDelattr' 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.lookupDel == null) { VarHandle.storeStoreFence(); this.lookupDel = lookupDel_1; } LookupSpecialMethodSlotNode lookupGet_2; LookupSpecialMethodSlotNode lookupGet_2_shared = this.lookupGet; if (lookupGet_2_shared != null) { lookupGet_2 = lookupGet_2_shared; } else { lookupGet_2 = this.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.GetAttribute))); if (lookupGet_2 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'lookupGetattr' 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) { VarHandle.storeStoreFence(); this.lookupGet = lookupGet_2; } CallTernaryMethodNode call_1; CallTernaryMethodNode call_1_shared = this.call; if (call_1_shared != null) { call_1 = call_1_shared; } else { call_1 = this.insert((CallTernaryMethodNode.create())); if (call_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'callSetattr' 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.call == null) { VarHandle.storeStoreFence(); this.call = call_1; } CallBinaryMethodNode callDel_1; CallBinaryMethodNode callDel_1_shared = this.callDel; if (callDel_1_shared != null) { callDel_1 = callDel_1_shared; } else { callDel_1 = this.insert((CallBinaryMethodNode.create())); if (callDel_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'callDelattr' 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.callDel == null) { VarHandle.storeStoreFence(); this.callDel = callDel_1; } this.setFixedAttr_cache = null; this.delFixedAttr_cache = null; state_0 = state_0 & 0xfffffffa /* remove SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)], SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */; this.state_0_ = state_0; PyObjectSetAttr.doDynamicAttr(frameValue, this, arg1Value, arg2Value_, arg3Value, INLINED_GET_CLASS, lookup_1, lookupDel_1, lookupGet_2, INLINED_RAISE, call_1, callDel_1); return; } if ((!(PGuards.isString(arg2Value)))) { state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectSetAttr.nameMustBeString(Node, Object, Object, Object, Lazy)] */; this.state_0_ = state_0; PyObjectSetAttr.nameMustBeString(this, arg1Value, arg2Value, arg3Value, INLINED_RAISE); return; } throw new UnsupportedSpecializationException(this, new Node[] {null, null, null, null}, arg0Value, arg1Value, arg2Value, arg3Value); } @Override public NodeCost getCost() { int state_0 = this.state_0_; if ((state_0 & 0b1111) == 0) { return NodeCost.UNINITIALIZED; } else { if (((state_0 & 0b1111) & ((state_0 & 0b1111) - 1)) == 0 /* is-single */) { return NodeCost.MONOMORPHIC; } } return NodeCost.POLYMORPHIC; } @NeverDefault public static PyObjectSetAttr create() { return new PyObjectSetAttrNodeGen(); } @NeverDefault public static PyObjectSetAttr getUncached() { return PyObjectSetAttrNodeGen.UNCACHED; } /** * Required Fields:
    *
  • {@link Inlined#state_0_} *
  • {@link Inlined#getClass_field1_} *
  • {@link Inlined#lookup} *
  • {@link Inlined#lookupGet} *
  • {@link Inlined#raise_field1_} *
  • {@link Inlined#call} *
  • {@link Inlined#lookupDel} *
  • {@link Inlined#callDel} *
  • {@link Inlined#setFixedAttr_cache} *
  • {@link Inlined#delFixedAttr_cache} *
*/ @NeverDefault public static PyObjectSetAttr inline(@RequiredField(bits = 22, 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 PyObjectSetAttrNodeGen.Inlined(target); } @GeneratedBy(PyObjectSetAttr.class) @DenyReplace private static final class Inlined extends PyObjectSetAttr { /** * State Info:
         *   0: SpecializationActive {@link PyObjectSetAttr#setFixedAttr}
         *   1: SpecializationActive {@link PyObjectSetAttr#doDynamicAttr}
         *   2: SpecializationActive {@link PyObjectSetAttr#delFixedAttr}
         *   3: SpecializationActive {@link PyObjectSetAttr#nameMustBeString}
         *   4-20: InlinedCache
         *        Specialization: {@link PyObjectSetAttr#setFixedAttr}
         *        Parameter: {@link GetClassNode} getClass
         *        Inline method: {@link GetClassNodeGen#inline}
         *   21: InlinedCache
         *        Specialization: {@link PyObjectSetAttr#setFixedAttr}
         *        Parameter: {@link Lazy} raise
         *        Inline method: {@link LazyNodeGen#inline}
         * 
*/ private final StateField state_0_; private final ReferenceField getClass_field1_; private final ReferenceField lookup; private final ReferenceField lookupGet; private final ReferenceField raise_field1_; private final ReferenceField call; private final ReferenceField lookupDel; private final ReferenceField callDel; private final ReferenceField setFixedAttr_cache; private final ReferenceField delFixedAttr_cache; /** * Source Info:
         *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
         *   Parameter: {@link GetClassNode} getClass
         *   Inline method: {@link GetClassNodeGen#inline}
*/ private final GetClassNode getClass; /** * Source Info:
         *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
         *   Parameter: {@link Lazy} raise
         *   Inline method: {@link LazyNodeGen#inline}
*/ private final Lazy raise; @SuppressWarnings("unchecked") private Inlined(InlineTarget target) { assert target.getTargetClass().isAssignableFrom(PyObjectSetAttr.class); this.state_0_ = target.getState(0, 22); this.getClass_field1_ = target.getReference(1, Node.class); this.lookup = target.getReference(2, LookupSpecialMethodSlotNode.class); this.lookupGet = target.getReference(3, LookupSpecialMethodSlotNode.class); this.raise_field1_ = target.getReference(4, Node.class); this.call = target.getReference(5, CallTernaryMethodNode.class); this.lookupDel = target.getReference(6, LookupSpecialMethodSlotNode.class); this.callDel = target.getReference(7, CallBinaryMethodNode.class); this.setFixedAttr_cache = target.getReference(8, SetFixedAttrData.class); this.delFixedAttr_cache = target.getReference(9, DelFixedAttrData.class); this.getClass = GetClassNodeGen.inline(InlineTarget.create(GetClassNode.class, state_0_.subUpdater(4, 17), getClass_field1_)); this.raise = LazyNodeGen.inline(InlineTarget.create(Lazy.class, state_0_.subUpdater(21, 1), raise_field1_)); } @Override public void execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Object arg3Value) { int state_0 = this.state_0_.get(arg0Value); if ((state_0 & 0b1111) != 0 /* is SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] || SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] || SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] || SpecializationActive[PyObjectSetAttr.nameMustBeString(Node, Object, Object, Object, Lazy)] */) { if ((state_0 & 0b111) != 0 /* is SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] || SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] || SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */ && arg2Value instanceof TruffleString) { TruffleString arg2Value_ = (TruffleString) arg2Value; if ((state_0 & 0b1) != 0 /* is SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] */) { SetFixedAttrData s0_ = this.setFixedAttr_cache.get(arg0Value); if (s0_ != null) { { LookupSpecialMethodSlotNode lookup_ = this.lookup.get(arg0Value); if (lookup_ != null) { LookupSpecialMethodSlotNode lookupGet_ = this.lookupGet.get(arg0Value); if (lookupGet_ != null) { CallTernaryMethodNode call_ = this.call.get(arg0Value); if (call_ != null) { if ((arg2Value_ == s0_.cachedName_) && (arg3Value != null)) { PyObjectSetAttr.setFixedAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, s0_.cachedName_, this.getClass, lookup_, lookupGet_, this.raise, call_); return; } } } } } } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] */) { DelFixedAttrData s1_ = this.delFixedAttr_cache.get(arg0Value); if (s1_ != null) { { LookupSpecialMethodSlotNode lookupDel_ = this.lookupDel.get(arg0Value); if (lookupDel_ != null) { LookupSpecialMethodSlotNode lookupGet_1 = this.lookupGet.get(arg0Value); if (lookupGet_1 != null) { CallBinaryMethodNode callDel_ = this.callDel.get(arg0Value); if (callDel_ != null) { if ((arg2Value_ == s1_.cachedName_) && (arg3Value == null)) { PyObjectSetAttr.delFixedAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, s1_.cachedName_, this.getClass, lookupDel_, lookupGet_1, this.raise, callDel_); return; } } } } } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */) { { LookupSpecialMethodSlotNode lookup_1 = this.lookup.get(arg0Value); if (lookup_1 != null) { LookupSpecialMethodSlotNode lookupDel_1 = this.lookupDel.get(arg0Value); if (lookupDel_1 != null) { LookupSpecialMethodSlotNode lookupGet_2 = this.lookupGet.get(arg0Value); if (lookupGet_2 != null) { CallTernaryMethodNode call_1 = this.call.get(arg0Value); if (call_1 != null) { CallBinaryMethodNode callDel_1 = this.callDel.get(arg0Value); if (callDel_1 != null) { PyObjectSetAttr.doDynamicAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, this.getClass, lookup_1, lookupDel_1, lookupGet_2, this.raise, call_1, callDel_1); return; } } } } } } } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[PyObjectSetAttr.nameMustBeString(Node, Object, Object, Object, Lazy)] */) { if ((!(PGuards.isString(arg2Value)))) { PyObjectSetAttr.nameMustBeString(arg0Value, arg1Value, arg2Value, arg3Value, this.raise); return; } } } CompilerDirectives.transferToInterpreterAndInvalidate(); executeAndSpecialize(frameValue, arg0Value, arg1Value, arg2Value, arg3Value); return; } private void executeAndSpecialize(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Object arg3Value) { int state_0 = this.state_0_.get(arg0Value); if (arg2Value instanceof TruffleString) { TruffleString arg2Value_ = (TruffleString) arg2Value; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */) { while (true) { int count0_ = 0; SetFixedAttrData s0_ = this.setFixedAttr_cache.getVolatile(arg0Value); SetFixedAttrData s0_original = s0_; while (s0_ != null) { { LookupSpecialMethodSlotNode lookup_ = this.lookup.get(arg0Value); if (lookup_ != null) { LookupSpecialMethodSlotNode lookupGet_ = this.lookupGet.get(arg0Value); if (lookupGet_ != null) { CallTernaryMethodNode call_ = this.call.get(arg0Value); if (call_ != null) { if ((arg2Value_ == s0_.cachedName_) && (arg3Value != null)) { break; } } } } } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { if ((arg3Value != null)) { // assert (arg2Value_ == s0_.cachedName_); s0_ = arg0Value.insert(new SetFixedAttrData()); s0_.cachedName_ = (arg2Value_); LookupSpecialMethodSlotNode lookup_; LookupSpecialMethodSlotNode lookup__shared = this.lookup.get(arg0Value); if (lookup__shared != null) { lookup_ = lookup__shared; } else { lookup_ = s0_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.SetAttr))); if (lookup_ == null) { throw new IllegalStateException("Specialization 'setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)' contains a shared cache with name 'lookupSetattr' 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.lookup.get(arg0Value) == null) { this.lookup.set(arg0Value, lookup_); } LookupSpecialMethodSlotNode lookupGet_; LookupSpecialMethodSlotNode lookupGet__shared = this.lookupGet.get(arg0Value); if (lookupGet__shared != null) { lookupGet_ = lookupGet__shared; } else { lookupGet_ = s0_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.GetAttribute))); if (lookupGet_ == null) { throw new IllegalStateException("Specialization 'setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)' contains a shared cache with name 'lookupGetattr' 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_); } CallTernaryMethodNode call_; CallTernaryMethodNode call__shared = this.call.get(arg0Value); if (call__shared != null) { call_ = call__shared; } else { call_ = s0_.insert((CallTernaryMethodNode.create())); if (call_ == null) { throw new IllegalStateException("Specialization 'setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)' contains a shared cache with name 'callSetattr' 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.call.get(arg0Value) == null) { this.call.set(arg0Value, call_); } if (!this.setFixedAttr_cache.compareAndSet(arg0Value, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)] */; this.state_0_.set(arg0Value, state_0); } } if (s0_ != null) { PyObjectSetAttr.setFixedAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, s0_.cachedName_, this.getClass, this.lookup.get(arg0Value), this.lookupGet.get(arg0Value), this.raise, this.call.get(arg0Value)); return; } break; } } if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */) { while (true) { int count1_ = 0; DelFixedAttrData s1_ = this.delFixedAttr_cache.getVolatile(arg0Value); DelFixedAttrData s1_original = s1_; while (s1_ != null) { { LookupSpecialMethodSlotNode lookupDel_ = this.lookupDel.get(arg0Value); if (lookupDel_ != null) { LookupSpecialMethodSlotNode lookupGet_1 = this.lookupGet.get(arg0Value); if (lookupGet_1 != null) { CallBinaryMethodNode callDel_ = this.callDel.get(arg0Value); if (callDel_ != null) { if ((arg2Value_ == s1_.cachedName_) && (arg3Value == null)) { break; } } } } } count1_++; s1_ = null; break; } if (s1_ == null && count1_ < 1) { if ((arg3Value == null)) { // assert (arg2Value_ == s1_.cachedName_); s1_ = arg0Value.insert(new DelFixedAttrData()); s1_.cachedName_ = (arg2Value_); LookupSpecialMethodSlotNode lookupDel_; LookupSpecialMethodSlotNode lookupDel__shared = this.lookupDel.get(arg0Value); if (lookupDel__shared != null) { lookupDel_ = lookupDel__shared; } else { lookupDel_ = s1_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.DelAttr))); if (lookupDel_ == null) { throw new IllegalStateException("Specialization 'delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)' contains a shared cache with name 'lookupDelattr' 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.lookupDel.get(arg0Value) == null) { this.lookupDel.set(arg0Value, lookupDel_); } LookupSpecialMethodSlotNode lookupGet_1; LookupSpecialMethodSlotNode lookupGet_1_shared = this.lookupGet.get(arg0Value); if (lookupGet_1_shared != null) { lookupGet_1 = lookupGet_1_shared; } else { lookupGet_1 = s1_.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.GetAttribute))); if (lookupGet_1 == null) { throw new IllegalStateException("Specialization 'delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)' contains a shared cache with name 'lookupGetattr' 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); } CallBinaryMethodNode callDel_; CallBinaryMethodNode callDel__shared = this.callDel.get(arg0Value); if (callDel__shared != null) { callDel_ = callDel__shared; } else { callDel_ = s1_.insert((CallBinaryMethodNode.create())); if (callDel_ == null) { throw new IllegalStateException("Specialization 'delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)' contains a shared cache with name 'callDelattr' 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.callDel.get(arg0Value) == null) { this.callDel.set(arg0Value, callDel_); } if (!this.delFixedAttr_cache.compareAndSet(arg0Value, s1_original, s1_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] */; this.state_0_.set(arg0Value, state_0); } } if (s1_ != null) { PyObjectSetAttr.delFixedAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, s1_.cachedName_, this.getClass, this.lookupDel.get(arg0Value), this.lookupGet.get(arg0Value), this.raise, this.callDel.get(arg0Value)); return; } break; } } LookupSpecialMethodSlotNode lookup_1; LookupSpecialMethodSlotNode lookup_1_shared = this.lookup.get(arg0Value); if (lookup_1_shared != null) { lookup_1 = lookup_1_shared; } else { lookup_1 = arg0Value.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.SetAttr))); if (lookup_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'lookupSetattr' 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.lookup.get(arg0Value) == null) { VarHandle.storeStoreFence(); this.lookup.set(arg0Value, lookup_1); } LookupSpecialMethodSlotNode lookupDel_1; LookupSpecialMethodSlotNode lookupDel_1_shared = this.lookupDel.get(arg0Value); if (lookupDel_1_shared != null) { lookupDel_1 = lookupDel_1_shared; } else { lookupDel_1 = arg0Value.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.DelAttr))); if (lookupDel_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'lookupDelattr' 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.lookupDel.get(arg0Value) == null) { VarHandle.storeStoreFence(); this.lookupDel.set(arg0Value, lookupDel_1); } LookupSpecialMethodSlotNode lookupGet_2; LookupSpecialMethodSlotNode lookupGet_2_shared = this.lookupGet.get(arg0Value); if (lookupGet_2_shared != null) { lookupGet_2 = lookupGet_2_shared; } else { lookupGet_2 = arg0Value.insert((LookupSpecialMethodSlotNode.create(SpecialMethodSlot.GetAttribute))); if (lookupGet_2 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'lookupGetattr' 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) { VarHandle.storeStoreFence(); this.lookupGet.set(arg0Value, lookupGet_2); } CallTernaryMethodNode call_1; CallTernaryMethodNode call_1_shared = this.call.get(arg0Value); if (call_1_shared != null) { call_1 = call_1_shared; } else { call_1 = arg0Value.insert((CallTernaryMethodNode.create())); if (call_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'callSetattr' 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.call.get(arg0Value) == null) { VarHandle.storeStoreFence(); this.call.set(arg0Value, call_1); } CallBinaryMethodNode callDel_1; CallBinaryMethodNode callDel_1_shared = this.callDel.get(arg0Value); if (callDel_1_shared != null) { callDel_1 = callDel_1_shared; } else { callDel_1 = arg0Value.insert((CallBinaryMethodNode.create())); if (callDel_1 == null) { throw new IllegalStateException("Specialization 'doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)' contains a shared cache with name 'callDelattr' 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.callDel.get(arg0Value) == null) { VarHandle.storeStoreFence(); this.callDel.set(arg0Value, callDel_1); } this.setFixedAttr_cache.set(arg0Value, null); this.delFixedAttr_cache.set(arg0Value, null); state_0 = state_0 & 0xfffffffa /* remove SpecializationActive[PyObjectSetAttr.setFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode)], SpecializationActive[PyObjectSetAttr.delFixedAttr(Frame, Node, Object, TruffleString, Object, TruffleString, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallBinaryMethodNode)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[PyObjectSetAttr.doDynamicAttr(Frame, Node, Object, TruffleString, Object, GetClassNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, LookupSpecialMethodSlotNode, Lazy, CallTernaryMethodNode, CallBinaryMethodNode)] */; this.state_0_.set(arg0Value, state_0); PyObjectSetAttr.doDynamicAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, this.getClass, lookup_1, lookupDel_1, lookupGet_2, this.raise, call_1, callDel_1); return; } if ((!(PGuards.isString(arg2Value)))) { state_0 = state_0 | 0b1000 /* add SpecializationActive[PyObjectSetAttr.nameMustBeString(Node, Object, Object, Object, Lazy)] */; this.state_0_.set(arg0Value, state_0); PyObjectSetAttr.nameMustBeString(arg0Value, arg1Value, arg2Value, arg3Value, this.raise); return; } throw new UnsupportedSpecializationException(this, new Node[] {null, null, null, null}, arg0Value, arg1Value, arg2Value, arg3Value); } @Override public boolean isAdoptable() { return false; } } @GeneratedBy(PyObjectSetAttr.class) @DenyReplace private static final class SetFixedAttrData extends Node implements SpecializationDataNode { /** * Source Info:
         *   Specialization: {@link PyObjectSetAttr#setFixedAttr}
         *   Parameter: {@link TruffleString} cachedName
*/ @CompilationFinal TruffleString cachedName_; SetFixedAttrData() { } @Override public NodeCost getCost() { return NodeCost.NONE; } } @GeneratedBy(PyObjectSetAttr.class) @DenyReplace private static final class DelFixedAttrData extends Node implements SpecializationDataNode { /** * Source Info:
         *   Specialization: {@link PyObjectSetAttr#delFixedAttr}
         *   Parameter: {@link TruffleString} cachedName
*/ @CompilationFinal TruffleString cachedName_; DelFixedAttrData() { } @Override public NodeCost getCost() { return NodeCost.NONE; } } @GeneratedBy(PyObjectSetAttr.class) @DenyReplace private static final class Uncached extends PyObjectSetAttr { @Override public void execute(Frame frameValue, Node arg0Value, Object arg1Value, Object arg2Value, Object arg3Value) { CompilerDirectives.transferToInterpreterAndInvalidate(); if (arg2Value instanceof TruffleString) { TruffleString arg2Value_ = (TruffleString) arg2Value; PyObjectSetAttr.doDynamicAttr(frameValue, arg0Value, arg1Value, arg2Value_, arg3Value, (GetClassNode.getUncached()), (LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.SetAttr)), (LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.DelAttr)), (LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.GetAttribute)), (Lazy.getUncached()), (CallTernaryMethodNode.getUncached()), (CallBinaryMethodNode.getUncached())); return; } if ((!(PGuards.isString(arg2Value)))) { PyObjectSetAttr.nameMustBeString(arg0Value, arg1Value, arg2Value, arg3Value, (Lazy.getUncached())); return; } throw new UnsupportedSpecializationException(this, new Node[] {null, null, null, null}, arg0Value, arg1Value, arg2Value, arg3Value); } @Override public NodeCost getCost() { return NodeCost.MEGAMORPHIC; } @Override public boolean isAdoptable() { return false; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy