com.oracle.truffle.js.nodes.access.JSGetOwnPropertyNodeGen Maven / Gradle / Ivy
// CheckStyle: start generated
package com.oracle.truffle.js.nodes.access;
import com.oracle.truffle.api.Assumption;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.DSLSupport;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.UnsupportedSpecializationException;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.InlineTarget;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.StateField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
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.object.Property;
import com.oracle.truffle.api.object.Shape;
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.strings.TruffleString.EqualNode;
import com.oracle.truffle.js.nodes.JSGuards;
import com.oracle.truffle.js.nodes.array.JSArrayGetOwnPropertyNode;
import com.oracle.truffle.js.nodes.array.JSArrayGetOwnPropertyNodeGen;
import com.oracle.truffle.js.nodes.cast.ToArrayIndexNode;
import com.oracle.truffle.js.runtime.JSRuntime;
import com.oracle.truffle.js.runtime.builtins.JSArrayObject;
import com.oracle.truffle.js.runtime.builtins.JSStringObject;
import com.oracle.truffle.js.runtime.objects.JSDynamicObject;
import com.oracle.truffle.js.runtime.objects.JSShape;
import com.oracle.truffle.js.runtime.objects.PropertyDescriptor;
import com.oracle.truffle.js.runtime.util.JSClassProfile;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.Objects;
/**
* Debug Info:
* Specialization {@link JSGetOwnPropertyNode#array}
* Activation probability: 0.32000
* With/without class size: 12/9 bytes
* Specialization {@link JSGetOwnPropertyNode#getOwnPropertyString}
* Activation probability: 0.26000
* With/without class size: 9/1 bytes
* Specialization {@link JSGetOwnPropertyNode#cachedOrdinary}
* Activation probability: 0.20000
* With/without class size: 11/16 bytes
* Specialization {@link JSGetOwnPropertyNode#uncachedOrdinary}
* Activation probability: 0.14000
* With/without class size: 5/0 bytes
* Specialization {@link JSGetOwnPropertyNode#generic}
* Activation probability: 0.08000
* With/without class size: 5/4 bytes
*
*/
@GeneratedBy(JSGetOwnPropertyNode.class)
@SuppressWarnings("javadoc")
public final class JSGetOwnPropertyNodeGen extends JSGetOwnPropertyNode {
private static final StateField STATE_0_JSGetOwnPropertyNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_");
static final ReferenceField CACHED_ORDINARY_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cachedOrdinary_cache", CachedOrdinaryData.class);
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#array}
* Parameter: {@link JSArrayGetOwnPropertyNode} arrayGetOwnProperty
* Inline method: {@link JSArrayGetOwnPropertyNodeGen#inline}
*/
private static final JSArrayGetOwnPropertyNode INLINED_ARRAY_ARRAY_GET_OWN_PROPERTY_ = JSArrayGetOwnPropertyNodeGen.inline(InlineTarget.create(JSArrayGetOwnPropertyNode.class, STATE_0_JSGetOwnPropertyNode_UPDATER.subUpdater(5, 2), ReferenceField.create(MethodHandles.lookup(), "array_arrayGetOwnProperty__field1_", Object.class)));
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#array}
* Parameter: {@link InlinedBranchProfile} noSuchElementBranch
* Inline method: {@link InlinedBranchProfile#inline}
*/
private static final InlinedBranchProfile INLINED_ARRAY_NO_SUCH_ELEMENT_BRANCH_ = InlinedBranchProfile.inline(InlineTarget.create(InlinedBranchProfile.class, STATE_0_JSGetOwnPropertyNode_UPDATER.subUpdater(7, 1)));
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#getOwnPropertyString}
* Parameter: {@link InlinedConditionProfile} stringCaseProfile
* Inline method: {@link InlinedConditionProfile#inline}
*/
private static final InlinedConditionProfile INLINED_GET_OWN_PROPERTY_STRING_STRING_CASE_PROFILE_ = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, STATE_0_JSGetOwnPropertyNode_UPDATER.subUpdater(8, 2)));
/**
* State Info:
* 0: SpecializationActive {@link JSGetOwnPropertyNode#array}
* 1: SpecializationActive {@link JSGetOwnPropertyNode#getOwnPropertyString}
* 2: SpecializationActive {@link JSGetOwnPropertyNode#cachedOrdinary}
* 3: SpecializationActive {@link JSGetOwnPropertyNode#uncachedOrdinary}
* 4: SpecializationActive {@link JSGetOwnPropertyNode#generic}
* 5-6: InlinedCache
* Specialization: {@link JSGetOwnPropertyNode#array}
* Parameter: {@link JSArrayGetOwnPropertyNode} arrayGetOwnProperty
* Inline method: {@link JSArrayGetOwnPropertyNodeGen#inline}
* 7: InlinedCache
* Specialization: {@link JSGetOwnPropertyNode#array}
* Parameter: {@link InlinedBranchProfile} noSuchElementBranch
* Inline method: {@link InlinedBranchProfile#inline}
* 8-9: InlinedCache
* Specialization: {@link JSGetOwnPropertyNode#getOwnPropertyString}
* Parameter: {@link InlinedConditionProfile} stringCaseProfile
* Inline method: {@link InlinedConditionProfile#inline}
*
*/
@CompilationFinal @UnsafeAccessedField private int state_0_;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#array}
* Parameter: {@link ToArrayIndexNode} toArrayIndexNode
*/
@Child private ToArrayIndexNode array_toArrayIndexNode_;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#array}
* Parameter: {@link JSArrayGetOwnPropertyNode} arrayGetOwnProperty
* Inline method: {@link JSArrayGetOwnPropertyNodeGen#inline}
* Inline field: {@link Object} field1
*/
@CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Object array_arrayGetOwnProperty__field1_;
@UnsafeAccessedField @Child private CachedOrdinaryData cachedOrdinary_cache;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#generic}
* Parameter: {@link JSClassProfile} jsclassProfile
*/
@CompilationFinal private JSClassProfile generic_jsclassProfile_;
private JSGetOwnPropertyNodeGen(boolean needValue, boolean needEnumerability, boolean needConfigurability, boolean needWritability, boolean allowCaching) {
super(needValue, needEnumerability, needConfigurability, needWritability, allowCaching);
}
@ExplodeLoop
@Override
public PropertyDescriptor execute(JSDynamicObject arg0Value, Object arg1Value) {
int state_0 = this.state_0_;
if ((state_0 & 0b11111) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.array(JSArrayObject, Object, Node, ToArrayIndexNode, JSArrayGetOwnPropertyNode, InlinedBranchProfile)] || SpecializationActive[JSGetOwnPropertyNode.getOwnPropertyString(JSStringObject, Object, InlinedConditionProfile)] || SpecializationActive[JSGetOwnPropertyNode.cachedOrdinary(JSDynamicObject, Object, Shape, Object, Property, EqualNode)] || SpecializationActive[JSGetOwnPropertyNode.uncachedOrdinary(JSDynamicObject, Object)] || SpecializationActive[JSGetOwnPropertyNode.generic(JSDynamicObject, Object, JSClassProfile)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.array(JSArrayObject, Object, Node, ToArrayIndexNode, JSArrayGetOwnPropertyNode, InlinedBranchProfile)] */ && arg0Value instanceof JSArrayObject) {
JSArrayObject arg0Value_ = (JSArrayObject) arg0Value;
{
ToArrayIndexNode toArrayIndexNode__ = this.array_toArrayIndexNode_;
if (toArrayIndexNode__ != null) {
Node node__ = (this);
return array(arg0Value_, arg1Value, node__, toArrayIndexNode__, INLINED_ARRAY_ARRAY_GET_OWN_PROPERTY_, INLINED_ARRAY_NO_SUCH_ELEMENT_BRANCH_);
}
}
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.getOwnPropertyString(JSStringObject, Object, InlinedConditionProfile)] */ && arg0Value instanceof JSStringObject) {
JSStringObject arg0Value_ = (JSStringObject) arg0Value;
return getOwnPropertyString(arg0Value_, arg1Value, INLINED_GET_OWN_PROPERTY_STRING_STRING_CASE_PROFILE_);
}
if ((state_0 & 0b11100) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.cachedOrdinary(JSDynamicObject, Object, Shape, Object, Property, EqualNode)] || SpecializationActive[JSGetOwnPropertyNode.uncachedOrdinary(JSDynamicObject, Object)] || SpecializationActive[JSGetOwnPropertyNode.generic(JSDynamicObject, Object, JSClassProfile)] */) {
if ((state_0 & 0b100) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.cachedOrdinary(JSDynamicObject, Object, Shape, Object, Property, EqualNode)] */) {
assert DSLSupport.assertIdempotence((allowCaching));
CachedOrdinaryData s2_ = this.cachedOrdinary_cache;
while (s2_ != null) {
if (!Assumption.isValidAssumption(s2_.assumption0_)) {
CompilerDirectives.transferToInterpreterAndInvalidate();
removeCachedOrdinary_(s2_);
return executeAndSpecialize(arg0Value, arg1Value);
}
if ((s2_.cachedShape_ == arg0Value.getShape())) {
assert DSLSupport.assertIdempotence((JSShape.usesOrdinaryGetOwnProperty(s2_.cachedShape_)));
if ((JSRuntime.propertyKeyEquals(s2_.equalsNode_, s2_.cachedPropertyKey_, arg1Value))) {
return cachedOrdinary(arg0Value, arg1Value, s2_.cachedShape_, s2_.cachedPropertyKey_, s2_.cachedProperty_, s2_.equalsNode_);
}
}
s2_ = s2_.next_;
}
}
if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.uncachedOrdinary(JSDynamicObject, Object)] */) {
if ((JSShape.usesOrdinaryGetOwnProperty(arg0Value.getShape()))) {
return uncachedOrdinary(arg0Value, arg1Value);
}
}
if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.generic(JSDynamicObject, Object, JSClassProfile)] */) {
{
JSClassProfile jsclassProfile__ = this.generic_jsclassProfile_;
if (jsclassProfile__ != null) {
if ((!(JSShape.usesOrdinaryGetOwnProperty(arg0Value.getShape()))) && (!(JSGuards.isJSArray(arg0Value))) && (!(JSGuards.isJSString(arg0Value)))) {
return JSGetOwnPropertyNode.generic(arg0Value, arg1Value, jsclassProfile__);
}
}
}
}
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(arg0Value, arg1Value);
}
@SuppressWarnings("unused")
private PropertyDescriptor executeAndSpecialize(JSDynamicObject arg0Value, Object arg1Value) {
int state_0 = this.state_0_;
{
Node node__ = null;
if (arg0Value instanceof JSArrayObject) {
JSArrayObject arg0Value_ = (JSArrayObject) arg0Value;
node__ = (this);
ToArrayIndexNode toArrayIndexNode__ = this.insert((ToArrayIndexNode.create()));
Objects.requireNonNull(toArrayIndexNode__, "A specialization cache returned a 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 the default value.");
VarHandle.storeStoreFence();
this.array_toArrayIndexNode_ = toArrayIndexNode__;
state_0 = state_0 | 0b1 /* add SpecializationActive[JSGetOwnPropertyNode.array(JSArrayObject, Object, Node, ToArrayIndexNode, JSArrayGetOwnPropertyNode, InlinedBranchProfile)] */;
this.state_0_ = state_0;
return array(arg0Value_, arg1Value, node__, toArrayIndexNode__, INLINED_ARRAY_ARRAY_GET_OWN_PROPERTY_, INLINED_ARRAY_NO_SUCH_ELEMENT_BRANCH_);
}
}
if (arg0Value instanceof JSStringObject) {
JSStringObject arg0Value_ = (JSStringObject) arg0Value;
state_0 = state_0 | 0b10 /* add SpecializationActive[JSGetOwnPropertyNode.getOwnPropertyString(JSStringObject, Object, InlinedConditionProfile)] */;
this.state_0_ = state_0;
return getOwnPropertyString(arg0Value_, arg1Value, INLINED_GET_OWN_PROPERTY_STRING_STRING_CASE_PROFILE_);
}
if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSGetOwnPropertyNode.uncachedOrdinary(JSDynamicObject, Object)] */ && (allowCaching)) {
while (true) {
int count2_ = 0;
CachedOrdinaryData s2_ = CACHED_ORDINARY_CACHE_UPDATER.getVolatile(this);
CachedOrdinaryData s2_original = s2_;
while (s2_ != null) {
if ((s2_.cachedShape_ == arg0Value.getShape())) {
assert DSLSupport.assertIdempotence((JSShape.usesOrdinaryGetOwnProperty(s2_.cachedShape_)));
if ((JSRuntime.propertyKeyEquals(s2_.equalsNode_, s2_.cachedPropertyKey_, arg1Value)) && Assumption.isValidAssumption(s2_.assumption0_)) {
break;
}
}
count2_++;
s2_ = s2_.next_;
}
if (s2_ == null) {
{
Shape cachedShape__ = (arg0Value.getShape());
if ((cachedShape__ == arg0Value.getShape()) && (JSShape.usesOrdinaryGetOwnProperty(cachedShape__))) {
Object cachedPropertyKey__ = (arg1Value);
EqualNode equalsNode__ = this.insert((EqualNode.create()));
if ((JSRuntime.propertyKeyEquals(equalsNode__, cachedPropertyKey__, arg1Value))) {
Assumption assumption0 = (cachedShape__.getValidAssumption());
if (Assumption.isValidAssumption(assumption0)) {
if (count2_ < (3)) {
s2_ = this.insert(new CachedOrdinaryData(s2_original));
Objects.requireNonNull(cachedShape__, "A specialization cache returned a 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 the default value.");
s2_.cachedShape_ = cachedShape__;
s2_.cachedPropertyKey_ = cachedPropertyKey__;
s2_.cachedProperty_ = (cachedShape__.getProperty(arg1Value));
Objects.requireNonNull(s2_.insert(equalsNode__), "A specialization cache returned a 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 the default value.");
s2_.equalsNode_ = equalsNode__;
s2_.assumption0_ = assumption0;
if (!CACHED_ORDINARY_CACHE_UPDATER.compareAndSet(this, s2_original, s2_)) {
continue;
}
state_0 = state_0 | 0b100 /* add SpecializationActive[JSGetOwnPropertyNode.cachedOrdinary(JSDynamicObject, Object, Shape, Object, Property, EqualNode)] */;
this.state_0_ = state_0;
}
}
}
}
}
}
if (s2_ != null) {
return cachedOrdinary(arg0Value, arg1Value, s2_.cachedShape_, s2_.cachedPropertyKey_, s2_.cachedProperty_, s2_.equalsNode_);
}
break;
}
}
if ((JSShape.usesOrdinaryGetOwnProperty(arg0Value.getShape()))) {
this.cachedOrdinary_cache = null;
state_0 = state_0 & 0xfffffffb /* remove SpecializationActive[JSGetOwnPropertyNode.cachedOrdinary(JSDynamicObject, Object, Shape, Object, Property, EqualNode)] */;
state_0 = state_0 | 0b1000 /* add SpecializationActive[JSGetOwnPropertyNode.uncachedOrdinary(JSDynamicObject, Object)] */;
this.state_0_ = state_0;
return uncachedOrdinary(arg0Value, arg1Value);
}
if ((!(JSShape.usesOrdinaryGetOwnProperty(arg0Value.getShape()))) && (!(JSGuards.isJSArray(arg0Value))) && (!(JSGuards.isJSString(arg0Value)))) {
JSClassProfile jsclassProfile__ = (JSClassProfile.create());
Objects.requireNonNull(jsclassProfile__, "A specialization cache returned a 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 the default value.");
VarHandle.storeStoreFence();
this.generic_jsclassProfile_ = jsclassProfile__;
state_0 = state_0 | 0b10000 /* add SpecializationActive[JSGetOwnPropertyNode.generic(JSDynamicObject, Object, JSClassProfile)] */;
this.state_0_ = state_0;
return JSGetOwnPropertyNode.generic(arg0Value, arg1Value, jsclassProfile__);
}
throw new UnsupportedSpecializationException(this, null, arg0Value, arg1Value);
}
void removeCachedOrdinary_(CachedOrdinaryData s2_) {
while (true) {
CachedOrdinaryData cur = this.cachedOrdinary_cache;
CachedOrdinaryData original = cur;
CachedOrdinaryData 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 && !CACHED_ORDINARY_CACHE_UPDATER.compareAndSet(this, original, update)) {
continue;
}
break;
}
}
@NeverDefault
public static JSGetOwnPropertyNode create(boolean needValue, boolean needEnumerability, boolean needConfigurability, boolean needWritability, boolean allowCaching) {
return new JSGetOwnPropertyNodeGen(needValue, needEnumerability, needConfigurability, needWritability, allowCaching);
}
@GeneratedBy(JSGetOwnPropertyNode.class)
@DenyReplace
private static final class CachedOrdinaryData extends Node implements SpecializationDataNode {
@Child CachedOrdinaryData next_;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#cachedOrdinary}
* Parameter: {@link Shape} cachedShape
*/
@CompilationFinal Shape cachedShape_;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#cachedOrdinary}
* Parameter: {@link Object} cachedPropertyKey
*/
@CompilationFinal Object cachedPropertyKey_;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#cachedOrdinary}
* Parameter: {@link Property} cachedProperty
*/
@CompilationFinal Property cachedProperty_;
/**
* Source Info:
* Specialization: {@link JSGetOwnPropertyNode#cachedOrdinary}
* Parameter: {@link EqualNode} equalsNode
*/
@Child EqualNode equalsNode_;
@CompilationFinal Assumption assumption0_;
CachedOrdinaryData(CachedOrdinaryData next_) {
this.next_ = next_;
}
CachedOrdinaryData remove(Node parent, CachedOrdinaryData search) {
CachedOrdinaryData newNext = this.next_;
if (newNext != null) {
if (search == newNext) {
newNext = newNext.next_;
} else {
newNext = newNext.remove(this, search);
}
}
CachedOrdinaryData copy = parent.insert(new CachedOrdinaryData(newNext));
copy.cachedShape_ = this.cachedShape_;
copy.cachedPropertyKey_ = this.cachedPropertyKey_;
copy.cachedProperty_ = this.cachedProperty_;
copy.equalsNode_ = copy.insert(this.equalsNode_);
copy.assumption0_ = this.assumption0_;
return copy;
}
}
/**
* Debug Info:
* Specialization {@link GetPropertyProxyValueNode#doCached}
* Activation probability: 0.65000
* With/without class size: 17/4 bytes
* Specialization {@link GetPropertyProxyValueNode#doUncached}
* Activation probability: 0.35000
* With/without class size: 8/0 bytes
*
*/
@GeneratedBy(GetPropertyProxyValueNode.class)
@SuppressWarnings("javadoc")
public static final class GetPropertyProxyValueNodeGen extends GetPropertyProxyValueNode {
static final ReferenceField CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "cached_cache", CachedData.class);
/**
* State Info:
* 0: SpecializationActive {@link GetPropertyProxyValueNode#doCached}
* 1: SpecializationActive {@link GetPropertyProxyValueNode#doUncached}
*
*/
@CompilationFinal private int state_0_;
@UnsafeAccessedField @CompilationFinal private CachedData cached_cache;
private GetPropertyProxyValueNodeGen() {
}
@ExplodeLoop
@Override
public Object execute(JSDynamicObject arg0Value, Object arg1Value) {
int state_0 = this.state_0_;
if (state_0 != 0 /* is SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doCached(JSDynamicObject, Object, Class<>)] || SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doUncached(JSDynamicObject, Object)] */) {
if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doCached(JSDynamicObject, Object, Class<>)] */) {
CachedData s0_ = this.cached_cache;
while (s0_ != null) {
if ((arg1Value.getClass() == s0_.cachedClass_)) {
return GetPropertyProxyValueNode.doCached(arg0Value, arg1Value, s0_.cachedClass_);
}
s0_ = s0_.next_;
}
}
if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doUncached(JSDynamicObject, Object)] */) {
return GetPropertyProxyValueNode.doUncached(arg0Value, arg1Value);
}
}
CompilerDirectives.transferToInterpreterAndInvalidate();
return executeAndSpecialize(arg0Value, arg1Value);
}
private Object executeAndSpecialize(JSDynamicObject arg0Value, Object arg1Value) {
int state_0 = this.state_0_;
if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doUncached(JSDynamicObject, Object)] */) {
while (true) {
int count0_ = 0;
CachedData s0_ = CACHED_CACHE_UPDATER.getVolatile(this);
CachedData s0_original = s0_;
while (s0_ != null) {
if ((arg1Value.getClass() == s0_.cachedClass_)) {
break;
}
count0_++;
s0_ = s0_.next_;
}
if (s0_ == null) {
{
Class> cachedClass__ = (arg1Value.getClass());
if ((arg1Value.getClass() == cachedClass__) && count0_ < (5)) {
s0_ = new CachedData(s0_original);
s0_.cachedClass_ = cachedClass__;
if (!CACHED_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) {
continue;
}
state_0 = state_0 | 0b1 /* add SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doCached(JSDynamicObject, Object, Class<>)] */;
this.state_0_ = state_0;
}
}
}
if (s0_ != null) {
return GetPropertyProxyValueNode.doCached(arg0Value, arg1Value, s0_.cachedClass_);
}
break;
}
}
this.cached_cache = null;
state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doCached(JSDynamicObject, Object, Class<>)] */;
state_0 = state_0 | 0b10 /* add SpecializationActive[JSGetOwnPropertyNode.GetPropertyProxyValueNode.doUncached(JSDynamicObject, Object)] */;
this.state_0_ = state_0;
return GetPropertyProxyValueNode.doUncached(arg0Value, arg1Value);
}
@NeverDefault
public static GetPropertyProxyValueNode create() {
return new GetPropertyProxyValueNodeGen();
}
@GeneratedBy(GetPropertyProxyValueNode.class)
@DenyReplace
private static final class CachedData implements SpecializationDataNode {
@CompilationFinal final CachedData next_;
/**
* Source Info:
* Specialization: {@link GetPropertyProxyValueNode#doCached}
* Parameter: {@link Class} cachedClass
*/
@CompilationFinal Class> cachedClass_;
CachedData(CachedData next_) {
this.next_ = next_;
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy