com.oracle.graal.python.nodes.attributes.SetAttributeNodeGen Maven / Gradle / Ivy
// CheckStyle: start generated
package com.oracle.graal.python.nodes.attributes;
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
import com.oracle.graal.python.nodes.call.special.LookupAndCallTernaryNode;
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.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.strings.TruffleString;
import java.lang.invoke.VarHandle;
import java.util.Objects;
/**
* Debug Info:
* Specialization {@link SetAttributeNode#doIt}
* Activation probability: 1.00000
* With/without class size: 24/4 bytes
*
*/
@GeneratedBy(SetAttributeNode.class)
@SuppressWarnings("javadoc")
public final class SetAttributeNodeGen extends SetAttributeNode {
/**
* State Info:
* 0: SpecializationActive {@link SetAttributeNode#doIt}
*
*/
@CompilationFinal private int state_0_;
/**
* Source Info:
* Specialization: {@link SetAttributeNode#doIt}
* Parameter: {@link LookupAndCallTernaryNode} call
*/
@Child private LookupAndCallTernaryNode call_;
private SetAttributeNodeGen(TruffleString key) {
super(key);
}
@Override
public void execute(VirtualFrame frameValue, Object arg0Value, Object arg1Value) {
int state_0 = this.state_0_;
if (state_0 != 0 /* is SpecializationActive[SetAttributeNode.doIt(VirtualFrame, Object, Object, LookupAndCallTernaryNode)] */) {
{
LookupAndCallTernaryNode call__ = this.call_;
if (call__ != null) {
doIt(frameValue, arg0Value, arg1Value, call__);
return;
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
executeAndSpecialize(frameValue, arg0Value, arg1Value);
return;
}
private void executeAndSpecialize(VirtualFrame frameValue, Object arg0Value, Object arg1Value) {
int state_0 = this.state_0_;
LookupAndCallTernaryNode call__ = this.insert((LookupAndCallTernaryNode.create(SpecialMethodSlot.SetAttr)));
Objects.requireNonNull(call__, "Specialization 'doIt(VirtualFrame, Object, Object, LookupAndCallTernaryNode)' cache 'call' returned a 'null' default value. The cache initializer must never return a default value for this cache. Use @Cached(neverDefault=false) to allow default values for this cached value or make sure the cache initializer never returns 'null'.");
VarHandle.storeStoreFence();
this.call_ = call__;
state_0 = state_0 | 0b1 /* add SpecializationActive[SetAttributeNode.doIt(VirtualFrame, Object, Object, LookupAndCallTernaryNode)] */;
this.state_0_ = state_0;
doIt(frameValue, arg0Value, arg1Value, call__);
return;
}
@Override
public NodeCost getCost() {
int state_0 = this.state_0_;
if (state_0 == 0) {
return NodeCost.UNINITIALIZED;
} else {
return NodeCost.MONOMORPHIC;
}
}
@NeverDefault
public static SetAttributeNode create(TruffleString key) {
return new SetAttributeNodeGen(key);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy