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

com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNodeGen 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 JSArrayPreviousElementIndexNode#doWithoutHolesCached}
 *     Activation probability: 0.23929
 *     With/without class size: 8/4 bytes
 *   Specialization {@link JSArrayPreviousElementIndexNode#doWithoutHolesUncached}
 *     Activation probability: 0.20714
 *     With/without class size: 6/0 bytes
 *   Specialization {@link JSArrayPreviousElementIndexNode#previousWithHolesCached}
 *     Activation probability: 0.17500
 *     With/without class size: 8/4 bytes
 *   Specialization {@link JSArrayPreviousElementIndexNode#previousWithHolesUncached}
 *     Activation probability: 0.14286
 *     With/without class size: 7/5 bytes
 *   Specialization {@link JSArrayPreviousElementIndexNode#previousObjectViaEnumeration}
 *     Activation probability: 0.11071
 *     With/without class size: 5/0 bytes
 *   Specialization {@link JSArrayPreviousElementIndexNode#previousObjectViaFullEnumeration}
 *     Activation probability: 0.07857
 *     With/without class size: 4/0 bytes
 *   Specialization {@link JSArrayPreviousElementIndexNode#previousObjectViaIteration}
 *     Activation probability: 0.04643
 *     With/without class size: 4/0 bytes
 * 
*/ @GeneratedBy(JSArrayPreviousElementIndexNode.class) @SuppressWarnings("javadoc") public final class JSArrayPreviousElementIndexNodeGen extends JSArrayPreviousElementIndexNode { private static final StateField STATE_0_UPDATER = StateField.create(MethodHandles.lookup(), "state_0_"); private static final StateField STATE_0_JSArrayPreviousElementIndexNode_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 PREVIOUS_WITH_HOLES_CACHED_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "previousWithHolesCached_cache", PreviousWithHolesCachedData.class); /** * Source Info:
     *   Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesCached}
     *   Parameter: {@link InlinedConditionProfile} isMinusOne
     *   Inline method: {@link InlinedConditionProfile#inline}
*/ private static final InlinedConditionProfile INLINED_IS_MINUS_ONE = InlinedConditionProfile.inline(InlineTarget.create(InlinedConditionProfile.class, STATE_0_UPDATER.subUpdater(7, 2))); /** * Source Info:
     *   Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesUncached}
     *   Parameter: {@link InlinedExactClassProfile} arrayTypeProfile
     *   Inline method: {@link InlinedExactClassProfile#inline}
*/ private static final InlinedExactClassProfile INLINED_PREVIOUS_WITH_HOLES_UNCACHED_ARRAY_TYPE_PROFILE_ = InlinedExactClassProfile.inline(InlineTarget.create(InlinedExactClassProfile.class, STATE_0_JSArrayPreviousElementIndexNode_UPDATER.subUpdater(9, 2), ReferenceField.create(MethodHandles.lookup(), "previousWithHolesUncached_arrayTypeProfile__field1_", Class.class))); /** * State Info:
     *   0: SpecializationActive {@link JSArrayPreviousElementIndexNode#doWithoutHolesCached}
     *   1: SpecializationActive {@link JSArrayPreviousElementIndexNode#doWithoutHolesUncached}
     *   2: SpecializationActive {@link JSArrayPreviousElementIndexNode#previousWithHolesCached}
     *   3: SpecializationActive {@link JSArrayPreviousElementIndexNode#previousWithHolesUncached}
     *   4: SpecializationActive {@link JSArrayPreviousElementIndexNode#previousObjectViaEnumeration}
     *   5: SpecializationActive {@link JSArrayPreviousElementIndexNode#previousObjectViaFullEnumeration}
     *   6: SpecializationActive {@link JSArrayPreviousElementIndexNode#previousObjectViaIteration}
     *   7-8: InlinedCache
     *        Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesCached}
     *        Parameter: {@link InlinedConditionProfile} isMinusOne
     *        Inline method: {@link InlinedConditionProfile#inline}
     *   9-10: InlinedCache
     *        Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesUncached}
     *        Parameter: {@link InlinedExactClassProfile} arrayTypeProfile
     *        Inline method: {@link InlinedExactClassProfile#inline}
     * 
*/ @CompilationFinal @UnsafeAccessedField private int state_0_; /** * Source Info:
     *   Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesCached}
     *   Parameter: {@link JSArrayPreviousElementIndexNode} previousElementIndexNode
*/ @Child private JSArrayPreviousElementIndexNode previousElementIndexNode; /** * Source Info:
     *   Specialization: {@link JSArrayPreviousElementIndexNode#previousObjectViaEnumeration}
     *   Parameter: {@link JSHasPropertyNode} hasPropertyNode
*/ @Child private JSHasPropertyNode hasPropertyNode; @UnsafeAccessedField @CompilationFinal private WithoutHolesCachedData withoutHolesCached_cache; @UnsafeAccessedField @Child private PreviousWithHolesCachedData previousWithHolesCached_cache; /** * Source Info:
     *   Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesUncached}
     *   Parameter: {@link InlinedExactClassProfile} arrayTypeProfile
     *   Inline method: {@link InlinedExactClassProfile#inline}
     *   Inline field: {@link Class} field1
*/ @CompilationFinal @UnsafeAccessedField @SuppressWarnings("unused") private Class previousWithHolesUncached_arrayTypeProfile__field1_; private JSArrayPreviousElementIndexNodeGen(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[JSArrayPreviousElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] || SpecializationActive[JSArrayPreviousElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesCached(JSDynamicObject, long, boolean, Node, ScriptArray, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaIteration(Object, long, boolean, JSHasPropertyNode)] */) { if ((state_0 & 0b111111) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] || SpecializationActive[JSArrayPreviousElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesCached(JSDynamicObject, long, boolean, Node, ScriptArray, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] || SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */ && arg0Value instanceof JSDynamicObject) { JSDynamicObject arg0Value_ = (JSDynamicObject) arg0Value; if ((state_0 & 0b1) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.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[JSArrayPreviousElementIndexNode.doWithoutHolesUncached(JSDynamicObject, long, boolean)] */) { if ((arg2Value) && (!(hasPrototypeElements(arg0Value_))) && (!(JSArrayElementIndexNode.hasHoles(arg0Value_)))) { return doWithoutHolesUncached(arg0Value_, arg1Value, arg2Value); } } if ((state_0 & 0b100) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesCached(JSDynamicObject, long, boolean, Node, ScriptArray, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] */ && (arg2Value) && (!(hasPrototypeElements(arg0Value_)))) { PreviousWithHolesCachedData s2_ = this.previousWithHolesCached_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 previousWithHolesCached(arg0Value_, arg1Value, arg2Value, node__, s2_.cachedArrayType_, previousElementIndexNode_, INLINED_IS_MINUS_ONE); } } } s2_ = s2_.next_; } } if ((state_0 & 0b1000) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] */) { { JSArrayPreviousElementIndexNode previousElementIndexNode_1 = this.previousElementIndexNode; if (previousElementIndexNode_1 != null) { if ((arg2Value) && (hasPrototypeElements(arg0Value_) || JSArrayElementIndexNode.hasHoles(arg0Value_))) { return previousWithHolesUncached(arg0Value_, arg1Value, arg2Value, previousElementIndexNode_1, INLINED_IS_MINUS_ONE, INLINED_PREVIOUS_WITH_HOLES_UNCACHED_ARRAY_TYPE_PROFILE_); } } } } if ((state_0 & 0b10000) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */) { { JSHasPropertyNode hasPropertyNode_ = this.hasPropertyNode; if (hasPropertyNode_ != null) { if ((!(arg2Value)) && (isSuitableForEnumBasedProcessingUsingOwnKeys(arg0Value_, arg1Value))) { return previousObjectViaEnumeration(arg0Value_, arg1Value, arg2Value, hasPropertyNode_); } } } } if ((state_0 & 0b100000) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */) { { JSHasPropertyNode hasPropertyNode_1 = this.hasPropertyNode; if (hasPropertyNode_1 != null) { if ((!(arg2Value)) && (!(isSuitableForEnumBasedProcessingUsingOwnKeys(arg0Value_, arg1Value))) && (JSArrayElementIndexNode.isSuitableForEnumBasedProcessing(arg0Value_, arg1Value))) { return previousObjectViaFullEnumeration(arg0Value_, arg1Value, arg2Value, hasPropertyNode_1); } } } } } if ((state_0 & 0b1000000) != 0 /* is SpecializationActive[JSArrayPreviousElementIndexNode.previousObjectViaIteration(Object, long, boolean, JSHasPropertyNode)] */) { { JSHasPropertyNode hasPropertyNode_2 = this.hasPropertyNode; if (hasPropertyNode_2 != null) { if ((!(arg2Value)) && (!(JSArrayElementIndexNode.isSuitableForEnumBasedProcessing(arg0Value, arg1Value)))) { return previousObjectViaIteration(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[JSArrayPreviousElementIndexNode.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[JSArrayPreviousElementIndexNode.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[JSArrayPreviousElementIndexNode.doWithoutHolesCached(JSDynamicObject, long, boolean, ScriptArray)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[JSArrayPreviousElementIndexNode.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[JSArrayPreviousElementIndexNode.previousWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] */ && (arg2Value) && (!(hasPrototypeElements(arg0Value_)))) { while (true) { int count2_ = 0; PreviousWithHolesCachedData s2_ = PREVIOUS_WITH_HOLES_CACHED_CACHE_UPDATER.getVolatile(this); PreviousWithHolesCachedData 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 PreviousWithHolesCachedData(s2_original)); node__ = (this); s2_.cachedArrayType_ = cachedArrayType__1; 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 (!PREVIOUS_WITH_HOLES_CACHED_CACHE_UPDATER.compareAndSet(this, s2_original, s2_)) { continue; } state_0 = state_0 | 0b100 /* add SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesCached(JSDynamicObject, long, boolean, Node, ScriptArray, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] */; this.state_0_ = state_0; } } } if (s2_ != null) { return previousWithHolesCached(arg0Value_, arg1Value, arg2Value, node__, s2_.cachedArrayType_, this.previousElementIndexNode, INLINED_IS_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.previousWithHolesCached_cache = null; state_0 = state_0 & 0xfffffffb /* remove SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesCached(JSDynamicObject, long, boolean, Node, ScriptArray, JSArrayPreviousElementIndexNode, InlinedConditionProfile)] */; state_0 = state_0 | 0b1000 /* add SpecializationActive[JSArrayPreviousElementIndexNode.previousWithHolesUncached(JSDynamicObject, long, boolean, JSArrayPreviousElementIndexNode, InlinedConditionProfile, InlinedExactClassProfile)] */; this.state_0_ = state_0; return previousWithHolesUncached(arg0Value_, arg1Value, arg2Value, previousElementIndexNode_1, INLINED_IS_MINUS_ONE, INLINED_PREVIOUS_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[JSArrayPreviousElementIndexNode.previousObjectViaEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */; this.state_0_ = state_0; return previousObjectViaEnumeration(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[JSArrayPreviousElementIndexNode.previousObjectViaFullEnumeration(JSDynamicObject, long, boolean, JSHasPropertyNode)] */; this.state_0_ = state_0; return previousObjectViaFullEnumeration(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[JSArrayPreviousElementIndexNode.previousObjectViaIteration(Object, long, boolean, JSHasPropertyNode)] */; this.state_0_ = state_0; return previousObjectViaIteration(arg0Value, arg1Value, arg2Value, hasPropertyNode_2); } throw new UnsupportedSpecializationException(this, null, arg0Value, arg1Value, arg2Value); } @NeverDefault public static JSArrayPreviousElementIndexNode create(JSContext context) { return new JSArrayPreviousElementIndexNodeGen(context); } @GeneratedBy(JSArrayPreviousElementIndexNode.class) @DenyReplace private static final class WithoutHolesCachedData implements SpecializationDataNode { @CompilationFinal final WithoutHolesCachedData next_; /** * Source Info:
         *   Specialization: {@link JSArrayPreviousElementIndexNode#doWithoutHolesCached}
         *   Parameter: {@link ScriptArray} cachedArrayType
*/ @CompilationFinal ScriptArray cachedArrayType_; WithoutHolesCachedData(WithoutHolesCachedData next_) { this.next_ = next_; } } @GeneratedBy(JSArrayPreviousElementIndexNode.class) @DenyReplace private static final class PreviousWithHolesCachedData extends Node implements SpecializationDataNode { @Child PreviousWithHolesCachedData next_; /** * Source Info:
         *   Specialization: {@link JSArrayPreviousElementIndexNode#previousWithHolesCached}
         *   Parameter: {@link ScriptArray} cachedArrayType
*/ @CompilationFinal ScriptArray cachedArrayType_; PreviousWithHolesCachedData(PreviousWithHolesCachedData next_) { this.next_ = next_; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy