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

com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNodeGen Maven / Gradle / Ivy

// CheckStyle: start generated
package com.oracle.truffle.js.nodes.array;

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.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.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.profiles.InlinedExactClassProfile;
import com.oracle.truffle.js.nodes.access.JSHasPropertyNode;
import com.oracle.truffle.js.runtime.JSContext;
import com.oracle.truffle.js.runtime.array.ScriptArray;
import com.oracle.truffle.js.runtime.objects.JSDynamicObject;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;

/**
 * Debug Info: 
 *   Specialization {@link JSArrayLastElementIndexNode#doWithoutHolesCached}
 *     Activation probability: 0.23929
 *     With/without class size: 8/4 bytes
 *   Specialization {@link JSArrayLastElementIndexNode#doWithoutHolesUncached}
 *     Activation probability: 0.20714
 *     With/without class size: 6/0 bytes
 *   Specialization {@link JSArrayLastElementIndexNode#doWithHolesCached}
 *     Activation probability: 0.17500
 *     With/without class size: 8/4 bytes
 *   Specialization {@link JSArrayLastElementIndexNode#doWithHolesUncached}
 *     Activation probability: 0.14286
 *     With/without class size: 7/5 bytes
 *   Specialization {@link JSArrayLastElementIndexNode#doObjectViaEnumeration}
 *     Activation probability: 0.11071
 *     With/without class size: 5/0 bytes
 *   Specialization {@link JSArrayLastElementIndexNode#doObjectViaFullEnumeration}
 *     Activation probability: 0.07857
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSArrayLastElementIndexNode#doObject}
 *     Activation probability: 0.04643
 *     With/without class size: 4/0 bytes
 * 
*/ @GeneratedBy(JSArrayLastElementIndexNode.class) @SuppressWarnings("javadoc") public final class JSArrayLastElementIndexNodeGen extends JSArrayLastElementIndexNode { private static final StateField STATE_0_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); private static final StateField STATE_0_JSArrayLastElementIndexNode_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); static final ReferenceField WITHOUT_HOLES_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "withoutHolesCached_cache", WithoutHolesCachedData.class); static final ReferenceField WITH_HOLES_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "withHolesCached_cache", WithHolesCachedData.class); /** * Source Info:
     *   Specialization: {@link JSArrayLastElementIndexNode#doWithHolesCached}
     *   Parameter: {@link InlinedConditionProfile} isLengthMinusOne
     *   Inline method: {@link InlinedConditionProfile#inline}
*/ private static final InlinedConditionProfile INLINED_IS_LENGTH_MINUS_ONE = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, STATE_0_UPDATER.subUpdater(7, 2))); /** * Source Info:
     *   Specialization: {@link JSArrayLastElementIndexNode#doWithHolesUncached}
     *   Parameter: {@link InlinedExactClassProfile} arrayTypeProfile
     *   Inline method: {@link InlinedExactClassProfile#inline}
*/ private static final InlinedExactClassProfile INLINED_WITH_HOLES_UNCACHED_ARRAY_TYPE_PROFILE_ = InlinedExactClassProfile.inline(InlineTarget.create(InlinedExactClassProfile.class, STATE_0_JSArrayLastElementIndexNode_UPDATER.subUpdater(9, 2), ReferenceField.create(MethodHandles.lookup(), "withHolesUncached_arrayTypeProfile__field1_", Class.class))); /** * State Info:
     *   0: SpecializationActive {@link JSArrayLastElementIndexNode#doWithoutHolesCached}
     *   1: SpecializationActive {@link JSArrayLastElementIndexNode#doWithoutHolesUncached}
     *   2: SpecializationActive {@link JSArrayLastElementIndexNode#doWithHolesCached}
     *   3: SpecializationActive {@link JSArrayLastElementIndexNode#doWithHolesUncached}
     *   4: SpecializationActive {@link JSArrayLastElementIndexNode#doObjectViaEnumeration}
     *   5: SpecializationActive {@link JSArrayLastElementIndexNode#doObjectViaFullEnumeration}
     *   6: SpecializationActive {@link JSArrayLastElementIndexNode#doObject}
     *   7-8: InlinedCache
     *        Specialization: {@link JSArrayLastElementIndexNode#doWithHolesCached}
     *        Parameter: {@link InlinedConditionProfile} isLengthMinusOne
     *        Inline method: {@link InlinedConditionProfile#inline}
     *   9-10: InlinedCache
     *        Specialization: {@link JSArrayLastElementIndexNode#doWithHolesUncached}
     *        Parameter: {@link InlinedExactClassProfile} arrayTypeProfile
     *        Inline method: {@link InlinedExactClassProfile#inline}
     * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
     *   Specialization: {@link JSArrayLastElementIndexNode#doWithHolesCached}
     *   Parameter: {@link JSArrayPreviousElementIndexNode} previousElementIndexNode
*/ @Child private JSArrayPreviousElementIndexNode previousElementIndexNode; /** * Source Info:
     *   Specialization: {@link JSArrayLastElementIndexNode#doObjectViaEnumeration}
     *   Parameter: {@link JSHasPropertyNode} hasPropertyNode
*/ @Child private JSHasPropertyNode hasPropertyNode; @UnsafeAccessedField @CompilationFinal private WithoutHolesCachedData withoutHolesCached_cache; @UnsafeAccessedField @Child private WithHolesCachedData withHolesCached_cache; /** * Source Info:
     *   Specialization: {@link JSArrayLastElementIndexNode#doWithHolesUncached}
     *   Parameter: {@link InlinedExactClassProfile} arrayTypeProfile
     *   Inline method: {@link InlinedExactClassProfile#inline}
     *   Inline field: {@link Class} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Class withHolesUncached_arrayTypeProfile__field1_; private JSArrayLastElementIndexNodeGen(JSContext context) { super(context); } @ExplodeLoop @Override public long executeLong(Object arg0Value, long arg1Value, boolean arg2Value) { int state_0 = this.state_0_; if ((state_0 & 0b1111111) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] || SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] || SpecializationActive[JSArrayLastElementIndexNode.doWithHolesCached(JSDynamicObject, long, boolean, ScriptArray, Node, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] || SpecializationActive[JSArrayLastElementIndexNode.doWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] || SpecializationActive[JSArrayLastElementIndexNode.doObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] || SpecializationActive[JSArrayLastElementIndexNode.doObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] || SpecializationActive[JSArrayLastElementIndexNode.doObject(Object, long, boolean, JSHasPropertyNode)] */) { if ((state_0 & 0b111111) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] || SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] || SpecializationActive[JSArrayLastElementIndexNode.doWithHolesCached(JSDynamicObject, long, boolean, ScriptArray, Node, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] || SpecializationActive[JSArrayLastElementIndexNode.doWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] || SpecializationActive[JSArrayLastElementIndexNode.doObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] || SpecializationActive[JSArrayLastElementIndexNode.doObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */ && arg0Value instanceof JSDynamicObject) { JSDynamicObject arg0Value_ = (JSDynamicObject) arg0Value; if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] */ && (arg2Value) && (!(hasPrototypeElements(arg0Value_)))) { WithoutHolesCachedData s0_ = this.withoutHolesCached_cache; while (s0_ != null) { if ((JSArrayElementIndexNode.getArrayType(arg0Value_) == s0_.cachedArrayType_) && (!(s0_.cachedArrayType_.hasHoles(arg0Value_)))) { return doWithoutHolesCached(arg0Value_, arg1Value, arg2Value, s0_.cachedArrayType_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] */) { if ((arg2Value) && (!(hasPrototypeElements(arg0Value_))) && (!(JSArrayElementIndexNode.hasHoles(arg0Value_)))) { return doWithoutHolesUncached(arg0Value_, arg1Value, arg2Value); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doWithHolesCached(JSDynamicObject, long, boolean, ScriptArray, Node, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] */ && (arg2Value) && (!(hasPrototypeElements(arg0Value_)))) { WithHolesCachedData s2_ = this.withHolesCached_cache; while (s2_ != null) { { JSArrayPreviousElementIndexNode previousElementIndexNode_ = this.previousElementIndexNode; if (previousElementIndexNode_ != null) { if ((JSArrayElementIndexNode.getArrayType(arg0Value_) == s2_.cachedArrayType_) && (s2_.cachedArrayType_.hasHoles(arg0Value_))) { Node node__ = (this); return doWithHolesCached(arg0Value_, arg1Value, arg2Value, s2_.cachedArrayType_, node__, previousElementIndexNode_, INLINED_IS_LENGTH_MINUS_ONE); } } } s2_ = s2_.next_; } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] */) { { JSArrayPreviousElementIndexNode previousElementIndexNode_1 = this.previousElementIndexNode; if (previousElementIndexNode_1 != null) { if ((arg2Value) && (hasPrototypeElements(arg0Value_) || JSArrayElementIndexNode.hasHoles(arg0Value_))) { return doWithHolesUncached(arg0Value_, arg1Value, arg2Value, previousElementIndexNode_1, INLINED_IS_LENGTH_MINUS_ONE, INLINED_WITH_HOLES_UNCACHED_ARRAY_TYPE_PROFILE_); } } } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */) { { JSHasPropertyNode hasPropertyNode_ = this.hasPropertyNode; if (hasPropertyNode_ != null) { if ((!(arg2Value)) && (isSuitableForEnumBasedProcessingUsingOwnKeys(arg0Value_, arg1Value))) { return doObjectViaEnumeration(arg0Value_, arg1Value, arg2Value, hasPropertyNode_); } } } } if ((state_0 & 0b100000) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */) { { JSHasPropertyNode hasPropertyNode_1 = this.hasPropertyNode; if (hasPropertyNode_1 != null) { if ((!(arg2Value)) && (!(isSuitableForEnumBasedProcessingUsingOwnKeys(arg0Value_, arg1Value))) && (JSArrayElementIndexNode.isSuitableForEnumBasedProcessing(arg0Value_, arg1Value))) { return doObjectViaFullEnumeration(arg0Value_, arg1Value, arg2Value, hasPropertyNode_1); } } } } } if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSArrayLastElementIndexNode.doObject(Object, long, boolean, JSHasPropertyNode)] */) { { JSHasPropertyNode hasPropertyNode_2 = this.hasPropertyNode; if (hasPropertyNode_2 != null) { if ((!(arg2Value)) && (!(JSArrayElementIndexNode.isSuitableForEnumBasedProcessing(arg0Value, arg1Value)))) { return doObject(arg0Value, arg1Value, arg2Value, hasPropertyNode_2); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value, arg1Value, arg2Value); } private long executeAndSpecialize(Object arg0Value, long arg1Value, boolean arg2Value) { int state_0 = this.state_0_; if (arg0Value instanceof JSDynamicObject) { JSDynamicObject arg0Value_ = (JSDynamicObject) arg0Value; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] */ && (arg2Value) && (!(hasPrototypeElements(arg0Value_)))) { while (true) { int count0_ = 0; WithoutHolesCachedData s0_ = WITHOUT_HOLES_CACHED_CACHE_UPDATER.getVolatile(this); WithoutHolesCachedData s0_original = s0_; while (s0_ != null) { if ((JSArrayElementIndexNode.getArrayType(arg0Value_) == s0_.cachedArrayType_) && (!(s0_.cachedArrayType_.hasHoles(arg0Value_)))) { break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { { ScriptArray cachedArrayType__ = (JSArrayElementIndexNode.getArrayTypeIfArray(arg0Value_, arg2Value)); if ((JSArrayElementIndexNode.getArrayType(arg0Value_) == cachedArrayType__) && (!(cachedArrayType__.hasHoles(arg0Value_))) && count0_ < (JSArrayElementIndexNode.MAX_CACHED_ARRAY_TYPES)) { s0_ = new WithoutHolesCachedData(s0_original); s0_.cachedArrayType_ = cachedArrayType__; if (!WITHOUT_HOLES_CACHED_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] */; this.state_0_ = state_0; } } } if (s0_ != null) { return doWithoutHolesCached(arg0Value_, arg1Value, arg2Value, s0_.cachedArrayType_); } break; } } if ((arg2Value) && (!(hasPrototypeElements(arg0Value_))) && (!(JSArrayElementIndexNode.hasHoles(arg0Value_)))) { this.withoutHolesCached_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[JSArrayLastElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] */; this.state_0_ = state_0; return doWithoutHolesUncached(arg0Value_, arg1Value, arg2Value); } { Node node__ = null; if (((state_0 & 0b1000)) == 0 /* is-not SpecializationActive[JSArrayLastElementIndexNode.doWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] */ && (arg2Value) && (!(hasPrototypeElements(arg0Value_)))) { while (true) { int count2_ = 0; WithHolesCachedData s2_ = WITH_HOLES_CACHED_CACHE_UPDATER.getVolatile(this); WithHolesCachedData s2_original = s2_; while (s2_ != null) { { JSArrayPreviousElementIndexNode previousElementIndexNode_ = this.previousElementIndexNode; if (previousElementIndexNode_ != null) { if ((JSArrayElementIndexNode.getArrayType(arg0Value_) == s2_.cachedArrayType_) && (s2_.cachedArrayType_.hasHoles(arg0Value_))) { node__ = (this); break; } } } count2_++; s2_ = s2_.next_; } if (s2_ == null) { { ScriptArray cachedArrayType__1 = (JSArrayElementIndexNode.getArrayTypeIfArray(arg0Value_, arg2Value)); if ((JSArrayElementIndexNode.getArrayType(arg0Value_) == cachedArrayType__1) && (cachedArrayType__1.hasHoles(arg0Value_)) && count2_ < (JSArrayElementIndexNode.MAX_CACHED_ARRAY_TYPES)) { s2_ = this.insert(new WithHolesCachedData(s2_original)); s2_.cachedArrayType_ = cachedArrayType__1; node__ = (this); JSArrayPreviousElementIndexNode previousElementIndexNode_; JSArrayPreviousElementIndexNode previousElementIndexNode__shared = this.previousElementIndexNode; if (previousElementIndexNode__shared != null) { previousElementIndexNode_ = previousElementIndexNode__shared; } else { previousElementIndexNode_ = s2_.insert((JSArrayPreviousElementIndexNode.create(context))); if (previousElementIndexNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.previousElementIndexNode == null) { this.previousElementIndexNode = previousElementIndexNode_; } if (!WITH_HOLES_CACHED_CACHE_UPDATER.compareAndSet(this, s2_original, s2_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[JSArrayLastElementIndexNode.doWithHolesCached(JSDynamicObject, long, boolean, ScriptArray, Node, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] */; this.state_0_ = state_0; } } } if (s2_ != null) { return doWithHolesCached(arg0Value_, arg1Value, arg2Value, s2_.cachedArrayType_, node__, this.previousElementIndexNode, INLINED_IS_LENGTH_MINUS_ONE); } break; } } } if ((arg2Value) && (hasPrototypeElements(arg0Value_) || JSArrayElementIndexNode.hasHoles(arg0Value_))) { JSArrayPreviousElementIndexNode previousElementIndexNode_1; JSArrayPreviousElementIndexNode previousElementIndexNode_1_shared = this.previousElementIndexNode; if (previousElementIndexNode_1_shared != null) { previousElementIndexNode_1 = previousElementIndexNode_1_shared; } else { previousElementIndexNode_1 = this.insert((JSArrayPreviousElementIndexNode.create(context))); if (previousElementIndexNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.previousElementIndexNode == null) { VarHandle.storeStoreFence(); this.previousElementIndexNode = previousElementIndexNode_1; } this.withHolesCached_cache = null; state_0 = state_0 & 0xfffffffb /* remove SpecializationActive[JSArrayLastElementIndexNode.doWithHolesCached(JSDynamicObject, long, boolean, ScriptArray, Node, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] */; state_0 = state_0 | 0b1000 /* add SpecializationActive[JSArrayLastElementIndexNode.doWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] */; this.state_0_ = state_0; return doWithHolesUncached(arg0Value_, arg1Value, arg2Value, previousElementIndexNode_1, INLINED_IS_LENGTH_MINUS_ONE, INLINED_WITH_HOLES_UNCACHED_ARRAY_TYPE_PROFILE_); } if ((!(arg2Value)) && (isSuitableForEnumBasedProcessingUsingOwnKeys(arg0Value_, arg1Value))) { JSHasPropertyNode hasPropertyNode_; JSHasPropertyNode hasPropertyNode__shared = this.hasPropertyNode; if (hasPropertyNode__shared != null) { hasPropertyNode_ = hasPropertyNode__shared; } else { hasPropertyNode_ = this.insert((JSHasPropertyNode.create())); if (hasPropertyNode_ == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.hasPropertyNode == null) { VarHandle.storeStoreFence(); this.hasPropertyNode = hasPropertyNode_; } state_0 = state_0 | 0b10000 /* add SpecializationActive[JSArrayLastElementIndexNode.doObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */; this.state_0_ = state_0; return doObjectViaEnumeration(arg0Value_, arg1Value, arg2Value, hasPropertyNode_); } if ((!(arg2Value)) && (!(isSuitableForEnumBasedProcessingUsingOwnKeys(arg0Value_, arg1Value))) && (JSArrayElementIndexNode.isSuitableForEnumBasedProcessing(arg0Value_, arg1Value))) { JSHasPropertyNode hasPropertyNode_1; JSHasPropertyNode hasPropertyNode_1_shared = this.hasPropertyNode; if (hasPropertyNode_1_shared != null) { hasPropertyNode_1 = hasPropertyNode_1_shared; } else { hasPropertyNode_1 = this.insert((JSHasPropertyNode.create())); if (hasPropertyNode_1 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.hasPropertyNode == null) { VarHandle.storeStoreFence(); this.hasPropertyNode = hasPropertyNode_1; } state_0 = state_0 | 0b100000 /* add SpecializationActive[JSArrayLastElementIndexNode.doObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */; this.state_0_ = state_0; return doObjectViaFullEnumeration(arg0Value_, arg1Value, arg2Value, hasPropertyNode_1); } } if ((!(arg2Value)) && (!(JSArrayElementIndexNode.isSuitableForEnumBasedProcessing(arg0Value, arg1Value)))) { JSHasPropertyNode hasPropertyNode_2; JSHasPropertyNode hasPropertyNode_2_shared = this.hasPropertyNode; if (hasPropertyNode_2_shared != null) { hasPropertyNode_2 = hasPropertyNode_2_shared; } else { hasPropertyNode_2 = this.insert((JSHasPropertyNode.create())); if (hasPropertyNode_2 == null) { throw new IllegalStateException("A specialization returned a default value for a cached initializer. Default values are not supported for shared cached initializers because the default value is reserved for the uninitialized state."); } } if (this.hasPropertyNode == null) { VarHandle.storeStoreFence(); this.hasPropertyNode = hasPropertyNode_2; } state_0 = state_0 | 0b1000000 /* add SpecializationActive[JSArrayLastElementIndexNode.doObject(Object, long, boolean, JSHasPropertyNode)] */; this.state_0_ = state_0; return doObject(arg0Value, arg1Value, arg2Value, hasPropertyNode_2); } throw new UnsupportedSpecializationException(this, null, arg0Value, arg1Value, arg2Value); } @NeverDefault public static JSArrayLastElementIndexNode create(JSContext context) { return new JSArrayLastElementIndexNodeGen(context); } @GeneratedBy(JSArrayLastElementIndexNode.class) @DenyReplace private static final class WithoutHolesCachedData implements SpecializationDataNode { @CompilationFinal final WithoutHolesCachedData next_; /** * Source Info:
         *   Specialization: {@link JSArrayLastElementIndexNode#doWithoutHolesCached}
         *   Parameter: {@link ScriptArray} cachedArrayType
*/ @CompilationFinal ScriptArray cachedArrayType_; WithoutHolesCachedData(WithoutHolesCachedData next_) { this.next_ = next_; } } @GeneratedBy(JSArrayLastElementIndexNode.class) @DenyReplace private static final class WithHolesCachedData extends Node implements SpecializationDataNode { @Child WithHolesCachedData next_; /** * Source Info:
         *   Specialization: {@link JSArrayLastElementIndexNode#doWithHolesCached}
         *   Parameter: {@link ScriptArray} cachedArrayType
*/ @CompilationFinal ScriptArray cachedArrayType_; WithHolesCachedData(WithHolesCachedData next_) { this.next_ = next_; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy