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

com.oracle.truffle.nfi.SignatureRootNodeFactory Maven / Gradle / Ivy

// CheckStyle: start generated
package com.oracle.truffle.nfi;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.dsl.NeverDefault;
import com.oracle.truffle.api.dsl.DSLSupport.SpecializationDataNode;
import com.oracle.truffle.api.dsl.InlineSupport.ReferenceField;
import com.oracle.truffle.api.dsl.InlineSupport.UnsafeAccessedField;
import com.oracle.truffle.api.library.LibraryFactory;
import com.oracle.truffle.api.nodes.DenyReplace;
import com.oracle.truffle.api.nodes.EncapsulatingNodeReference;
import com.oracle.truffle.api.nodes.ExplodeLoop;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.nfi.SignatureRootNode.AddArgumentNode;
import com.oracle.truffle.nfi.SignatureRootNode.ArgumentBuilderNode;
import com.oracle.truffle.nfi.SignatureRootNode.BuildSignatureNode;
import com.oracle.truffle.nfi.SignatureRootNode.GetArrayTypeNode;
import com.oracle.truffle.nfi.SignatureRootNode.GetEnvTypeNode;
import com.oracle.truffle.nfi.SignatureRootNode.GetSignatureTypeNode;
import com.oracle.truffle.nfi.SignatureRootNode.GetSimpleTypeNode;
import com.oracle.truffle.nfi.SignatureRootNode.GetTypeNode;
import com.oracle.truffle.nfi.SignatureRootNode.MakeVarargs;
import com.oracle.truffle.nfi.SignatureRootNode.SetRetTypeNode;
import com.oracle.truffle.nfi.backend.spi.NFIBackendLibrary;
import com.oracle.truffle.nfi.backend.spi.NFIBackendSignatureBuilderLibrary;
import com.oracle.truffle.nfi.backend.spi.types.NativeSimpleType;
import com.oracle.truffle.nfi.backend.spi.util.ProfiledArrayBuilder.ArrayBuilderFactory;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.Objects;

@GeneratedBy(SignatureRootNode.class)
@SuppressWarnings({"javadoc", "unused"})
final class SignatureRootNodeFactory {

    private static final LibraryFactory N_F_I_BACKEND_LIBRARY_ = LibraryFactory.resolve(NFIBackendLibrary.class);
    private static final LibraryFactory N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_ = LibraryFactory.resolve(NFIBackendSignatureBuilderLibrary.class);

    /**
     * Debug Info: 
     *   Specialization {@link BuildSignatureNode#doBuild}
     *     Activation probability: 0.65000
     *     With/without class size: 24/12 bytes
     *   Specialization {@link BuildSignatureNode#doBuild}
     *     Activation probability: 0.35000
     *     With/without class size: 12/8 bytes
     * 
*/ @GeneratedBy(BuildSignatureNode.class) @SuppressWarnings("javadoc") static final class BuildSignatureNodeGen extends BuildSignatureNode { static final ReferenceField BUILD0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "build0_cache", Build0Data.class); /** * State Info:
         *   0: SpecializationActive {@link BuildSignatureNode#doBuild}
         *   1: SpecializationActive {@link BuildSignatureNode#doBuild}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private Build0Data build0_cache; /** * Source Info:
         *   Specialization: {@link BuildSignatureNode#doBuild}
         *   Parameter: {@link NFIBackendSignatureBuilderLibrary} sigBuilderLibrary
*/ @Child private NFIBackendSignatureBuilderLibrary build1_sigBuilderLibrary_; /** * Source Info:
         *   Specialization: {@link BuildSignatureNode#doBuild}
         *   Parameter: {@link ArrayBuilderFactory} factory
*/ @CompilationFinal private ArrayBuilderFactory build1_factory_; private BuildSignatureNodeGen(ArgumentBuilderNode[] argBuilders) { super(argBuilders); } @ExplodeLoop @Override Object execute(API arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] || SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */) { Build0Data s0_ = this.build0_cache; while (s0_ != null) { if ((s0_.backendLibrary_.accepts(arg0Value.backend))) { return doBuild(arg0Value, s0_.backendLibrary_, s0_.sigBuilderLibrary_, s0_.factory_); } s0_ = s0_.next_; } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */) { { NFIBackendSignatureBuilderLibrary sigBuilderLibrary__ = this.build1_sigBuilderLibrary_; if (sigBuilderLibrary__ != null) { ArrayBuilderFactory factory__ = this.build1_factory_; if (factory__ != null) { return this.build1Boundary(state_0, arg0Value, sigBuilderLibrary__, factory__); } } } } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object build1Boundary(int state_0, API arg0Value, NFIBackendSignatureBuilderLibrary sigBuilderLibrary__, ArrayBuilderFactory factory__) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendLibrary backendLibrary__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); return doBuild(arg0Value, backendLibrary__, sigBuilderLibrary__, factory__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(API arg0Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */) { while (true) { int count0_ = 0; Build0Data s0_ = BUILD0_CACHE_UPDATER.getVolatile(this); Build0Data s0_original = s0_; while (s0_ != null) { if ((s0_.backendLibrary_.accepts(arg0Value.backend))) { break; } count0_++; s0_ = s0_.next_; } if (s0_ == null) { // assert (s0_.backendLibrary_.accepts(arg0Value.backend)); if (count0_ < (3)) { s0_ = this.insert(new Build0Data(s0_original)); NFIBackendLibrary backendLibrary__ = s0_.insert((N_F_I_BACKEND_LIBRARY_.create(arg0Value.backend))); Objects.requireNonNull(backendLibrary__, "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."); s0_.backendLibrary_ = backendLibrary__; NFIBackendSignatureBuilderLibrary sigBuilderLibrary__ = s0_.insert((N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.createDispatched(1))); Objects.requireNonNull(sigBuilderLibrary__, "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."); s0_.sigBuilderLibrary_ = sigBuilderLibrary__; ArrayBuilderFactory factory__ = (ArrayBuilderFactory.create()); Objects.requireNonNull(factory__, "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."); s0_.factory_ = factory__; if (!BUILD0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */; this.state_0_ = state_0; } } if (s0_ != null) { return doBuild(arg0Value, s0_.backendLibrary_, s0_.sigBuilderLibrary_, s0_.factory_); } break; } } { NFIBackendLibrary backendLibrary__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { backendLibrary__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); NFIBackendSignatureBuilderLibrary sigBuilderLibrary__ = this.insert((N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.createDispatched(1))); Objects.requireNonNull(sigBuilderLibrary__, "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.build1_sigBuilderLibrary_ = sigBuilderLibrary__; ArrayBuilderFactory factory__ = (ArrayBuilderFactory.create()); Objects.requireNonNull(factory__, "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.build1_factory_ = factory__; this.build0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.BuildSignatureNode.doBuild(API, NFIBackendLibrary, NFIBackendSignatureBuilderLibrary, ArrayBuilderFactory)] */; this.state_0_ = state_0; return doBuild(arg0Value, backendLibrary__, sigBuilderLibrary__, factory__); } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static BuildSignatureNode create(ArgumentBuilderNode[] argBuilders) { return new BuildSignatureNodeGen(argBuilders); } @GeneratedBy(BuildSignatureNode.class) @DenyReplace private static final class Build0Data extends Node implements SpecializationDataNode { @Child Build0Data next_; /** * Source Info:
             *   Specialization: {@link BuildSignatureNode#doBuild}
             *   Parameter: {@link NFIBackendLibrary} backendLibrary
*/ @Child NFIBackendLibrary backendLibrary_; /** * Source Info:
             *   Specialization: {@link BuildSignatureNode#doBuild}
             *   Parameter: {@link NFIBackendSignatureBuilderLibrary} sigBuilderLibrary
*/ @Child NFIBackendSignatureBuilderLibrary sigBuilderLibrary_; /** * Source Info:
             *   Specialization: {@link BuildSignatureNode#doBuild}
             *   Parameter: {@link ArrayBuilderFactory} factory
*/ @CompilationFinal ArrayBuilderFactory factory_; Build0Data(Build0Data next_) { this.next_ = next_; } } } /** * Debug Info:
     *   Specialization {@link SetRetTypeNode#setRetType}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link SetRetTypeNode#setRetType}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(SetRetTypeNode.class) @SuppressWarnings("javadoc") static final class SetRetTypeNodeGen extends SetRetTypeNode { static final ReferenceField SET_RET_TYPE0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "setRetType0_cache", SetRetType0Data.class); /** * State Info:
         *   0: SpecializationActive {@link SetRetTypeNode#setRetType}
         *   1: SpecializationActive {@link SetRetTypeNode#setRetType}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private SetRetType0Data setRetType0_cache; private SetRetTypeNodeGen(GetTypeNode retType) { super(retType); } @Override void execute(API arg0Value, Object arg1Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] || SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */) { SetRetType0Data s0_ = this.setRetType0_cache; if (s0_ != null) { if ((s0_.sigBuilderLib_.accepts(arg1Value))) { setRetType(arg0Value, arg1Value, s0_.sigBuilderLib_); return; } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */) { this.setRetType1Boundary(state_0, arg0Value, arg1Value); return; } } CompilerDirectives.transferToInterpreterAndInvalidate(); executeAndSpecialize(arg0Value, arg1Value); return; } @SuppressWarnings("static-method") @TruffleBoundary private void setRetType1Boundary(int state_0, API arg0Value, Object arg1Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendSignatureBuilderLibrary sigBuilderLib__ = (N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.getUncached(arg1Value)); setRetType(arg0Value, arg1Value, sigBuilderLib__); return; } } finally { encapsulating_.set(prev_); } } private void executeAndSpecialize(API arg0Value, Object arg1Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */) { while (true) { int count0_ = 0; SetRetType0Data s0_ = SET_RET_TYPE0_CACHE_UPDATER.getVolatile(this); SetRetType0Data s0_original = s0_; while (s0_ != null) { if ((s0_.sigBuilderLib_.accepts(arg1Value))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.sigBuilderLib_.accepts(arg1Value)); s0_ = this.insert(new SetRetType0Data()); NFIBackendSignatureBuilderLibrary sigBuilderLib__ = s0_.insert((N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.create(arg1Value))); Objects.requireNonNull(sigBuilderLib__, "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."); s0_.sigBuilderLib_ = sigBuilderLib__; if (!SET_RET_TYPE0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { setRetType(arg0Value, arg1Value, s0_.sigBuilderLib_); return; } break; } } { NFIBackendSignatureBuilderLibrary sigBuilderLib__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { sigBuilderLib__ = (N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.getUncached(arg1Value)); this.setRetType0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.SetRetTypeNode.setRetType(API, Object, NFIBackendSignatureBuilderLibrary)] */; this.state_0_ = state_0; setRetType(arg0Value, arg1Value, sigBuilderLib__); return; } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static SetRetTypeNode create(GetTypeNode retType) { return new SetRetTypeNodeGen(retType); } @GeneratedBy(SetRetTypeNode.class) @DenyReplace private static final class SetRetType0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link SetRetTypeNode#setRetType}
             *   Parameter: {@link NFIBackendSignatureBuilderLibrary} sigBuilderLib
*/ @Child NFIBackendSignatureBuilderLibrary sigBuilderLib_; SetRetType0Data() { } } } /** * Debug Info:
     *   Specialization {@link AddArgumentNode#addArgument}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link AddArgumentNode#addArgument}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(AddArgumentNode.class) @SuppressWarnings("javadoc") static final class AddArgumentNodeGen extends AddArgumentNode { static final ReferenceField ADD_ARGUMENT0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "addArgument0_cache", AddArgument0Data.class); /** * State Info:
         *   0: SpecializationActive {@link AddArgumentNode#addArgument}
         *   1: SpecializationActive {@link AddArgumentNode#addArgument}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private AddArgument0Data addArgument0_cache; private AddArgumentNodeGen(GetTypeNode argType) { super(argType); } @Override void execute(API arg0Value, Object arg1Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] || SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */) { AddArgument0Data s0_ = this.addArgument0_cache; if (s0_ != null) { if ((s0_.sigBuilderLib_.accepts(arg1Value))) { addArgument(arg0Value, arg1Value, s0_.sigBuilderLib_); return; } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */) { this.addArgument1Boundary(state_0, arg0Value, arg1Value); return; } } CompilerDirectives.transferToInterpreterAndInvalidate(); executeAndSpecialize(arg0Value, arg1Value); return; } @SuppressWarnings("static-method") @TruffleBoundary private void addArgument1Boundary(int state_0, API arg0Value, Object arg1Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendSignatureBuilderLibrary sigBuilderLib__ = (N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.getUncached(arg1Value)); addArgument(arg0Value, arg1Value, sigBuilderLib__); return; } } finally { encapsulating_.set(prev_); } } private void executeAndSpecialize(API arg0Value, Object arg1Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */) { while (true) { int count0_ = 0; AddArgument0Data s0_ = ADD_ARGUMENT0_CACHE_UPDATER.getVolatile(this); AddArgument0Data s0_original = s0_; while (s0_ != null) { if ((s0_.sigBuilderLib_.accepts(arg1Value))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.sigBuilderLib_.accepts(arg1Value)); s0_ = this.insert(new AddArgument0Data()); NFIBackendSignatureBuilderLibrary sigBuilderLib__ = s0_.insert((N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.create(arg1Value))); Objects.requireNonNull(sigBuilderLib__, "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."); s0_.sigBuilderLib_ = sigBuilderLib__; if (!ADD_ARGUMENT0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { addArgument(arg0Value, arg1Value, s0_.sigBuilderLib_); return; } break; } } { NFIBackendSignatureBuilderLibrary sigBuilderLib__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { sigBuilderLib__ = (N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.getUncached(arg1Value)); this.addArgument0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.AddArgumentNode.addArgument(API, Object, NFIBackendSignatureBuilderLibrary)] */; this.state_0_ = state_0; addArgument(arg0Value, arg1Value, sigBuilderLib__); return; } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static AddArgumentNode create(GetTypeNode argType) { return new AddArgumentNodeGen(argType); } @GeneratedBy(AddArgumentNode.class) @DenyReplace private static final class AddArgument0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link AddArgumentNode#addArgument}
             *   Parameter: {@link NFIBackendSignatureBuilderLibrary} sigBuilderLib
*/ @Child NFIBackendSignatureBuilderLibrary sigBuilderLib_; AddArgument0Data() { } } } /** * Debug Info:
     *   Specialization {@link MakeVarargs#makeVarargs}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link MakeVarargs#makeVarargs}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(MakeVarargs.class) @SuppressWarnings("javadoc") static final class MakeVarargsNodeGen extends MakeVarargs { static final ReferenceField MAKE_VARARGS0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "makeVarargs0_cache", MakeVarargs0Data.class); /** * State Info:
         *   0: SpecializationActive {@link MakeVarargs#makeVarargs}
         *   1: SpecializationActive {@link MakeVarargs#makeVarargs}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private MakeVarargs0Data makeVarargs0_cache; private MakeVarargsNodeGen() { } @Override void execute(API arg0Value, Object arg1Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] || SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */) { MakeVarargs0Data s0_ = this.makeVarargs0_cache; if (s0_ != null) { if ((s0_.sigBuilderLib_.accepts(arg1Value))) { makeVarargs(arg0Value, arg1Value, s0_.sigBuilderLib_); return; } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */) { this.makeVarargs1Boundary(state_0, arg0Value, arg1Value); return; } } CompilerDirectives.transferToInterpreterAndInvalidate(); executeAndSpecialize(arg0Value, arg1Value); return; } @SuppressWarnings("static-method") @TruffleBoundary private void makeVarargs1Boundary(int state_0, API arg0Value, Object arg1Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendSignatureBuilderLibrary sigBuilderLib__ = (N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.getUncached(arg1Value)); makeVarargs(arg0Value, arg1Value, sigBuilderLib__); return; } } finally { encapsulating_.set(prev_); } } private void executeAndSpecialize(API arg0Value, Object arg1Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */) { while (true) { int count0_ = 0; MakeVarargs0Data s0_ = MAKE_VARARGS0_CACHE_UPDATER.getVolatile(this); MakeVarargs0Data s0_original = s0_; while (s0_ != null) { if ((s0_.sigBuilderLib_.accepts(arg1Value))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.sigBuilderLib_.accepts(arg1Value)); s0_ = this.insert(new MakeVarargs0Data()); NFIBackendSignatureBuilderLibrary sigBuilderLib__ = s0_.insert((N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.create(arg1Value))); Objects.requireNonNull(sigBuilderLib__, "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."); s0_.sigBuilderLib_ = sigBuilderLib__; if (!MAKE_VARARGS0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { makeVarargs(arg0Value, arg1Value, s0_.sigBuilderLib_); return; } break; } } { NFIBackendSignatureBuilderLibrary sigBuilderLib__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { sigBuilderLib__ = (N_F_I_BACKEND_SIGNATURE_BUILDER_LIBRARY_.getUncached(arg1Value)); this.makeVarargs0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.MakeVarargs.makeVarargs(API, Object, NFIBackendSignatureBuilderLibrary)] */; this.state_0_ = state_0; makeVarargs(arg0Value, arg1Value, sigBuilderLib__); return; } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static MakeVarargs create() { return new MakeVarargsNodeGen(); } @GeneratedBy(MakeVarargs.class) @DenyReplace private static final class MakeVarargs0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link MakeVarargs#makeVarargs}
             *   Parameter: {@link NFIBackendSignatureBuilderLibrary} sigBuilderLib
*/ @Child NFIBackendSignatureBuilderLibrary sigBuilderLib_; MakeVarargs0Data() { } } } /** * Debug Info:
     *   Specialization {@link GetSimpleTypeNode#getType}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link GetSimpleTypeNode#getType}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(GetSimpleTypeNode.class) @SuppressWarnings("javadoc") static final class GetSimpleTypeNodeGen extends GetSimpleTypeNode { static final ReferenceField GET_TYPE0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getType0_cache", GetType0Data.class); /** * State Info:
         *   0: SpecializationActive {@link GetSimpleTypeNode#getType}
         *   1: SpecializationActive {@link GetSimpleTypeNode#getType}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private GetType0Data getType0_cache; private GetSimpleTypeNodeGen(NativeSimpleType type) { super(type); } @Override Object execute(API arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] || SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */) { GetType0Data s0_ = this.getType0_cache; if (s0_ != null) { if ((s0_.backendLibrary_.accepts(arg0Value.backend))) { return getType(arg0Value, s0_.backendLibrary_); } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */) { return this.getType1Boundary(state_0, arg0Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object getType1Boundary(int state_0, API arg0Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendLibrary backendLibrary__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); return getType(arg0Value, backendLibrary__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(API arg0Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */) { while (true) { int count0_ = 0; GetType0Data s0_ = GET_TYPE0_CACHE_UPDATER.getVolatile(this); GetType0Data s0_original = s0_; while (s0_ != null) { if ((s0_.backendLibrary_.accepts(arg0Value.backend))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.backendLibrary_.accepts(arg0Value.backend)); s0_ = this.insert(new GetType0Data()); NFIBackendLibrary backendLibrary__ = s0_.insert((N_F_I_BACKEND_LIBRARY_.create(arg0Value.backend))); Objects.requireNonNull(backendLibrary__, "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."); s0_.backendLibrary_ = backendLibrary__; if (!GET_TYPE0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { return getType(arg0Value, s0_.backendLibrary_); } break; } } { NFIBackendLibrary backendLibrary__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { backendLibrary__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); this.getType0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.GetSimpleTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; return getType(arg0Value, backendLibrary__); } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static GetSimpleTypeNode create(NativeSimpleType type) { return new GetSimpleTypeNodeGen(type); } @GeneratedBy(GetSimpleTypeNode.class) @DenyReplace private static final class GetType0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link GetSimpleTypeNode#getType}
             *   Parameter: {@link NFIBackendLibrary} backendLibrary
*/ @Child NFIBackendLibrary backendLibrary_; GetType0Data() { } } } /** * Debug Info:
     *   Specialization {@link GetArrayTypeNode#getType}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link GetArrayTypeNode#getType}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(GetArrayTypeNode.class) @SuppressWarnings("javadoc") static final class GetArrayTypeNodeGen extends GetArrayTypeNode { static final ReferenceField GET_TYPE0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getType0_cache", GetType0Data.class); /** * State Info:
         *   0: SpecializationActive {@link GetArrayTypeNode#getType}
         *   1: SpecializationActive {@link GetArrayTypeNode#getType}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private GetType0Data getType0_cache; private GetArrayTypeNodeGen(NativeSimpleType type) { super(type); } @Override Object execute(API arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] || SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */) { GetType0Data s0_ = this.getType0_cache; if (s0_ != null) { if ((s0_.backendLibrary_.accepts(arg0Value.backend))) { return getType(arg0Value, s0_.backendLibrary_); } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */) { return this.getType1Boundary(state_0, arg0Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object getType1Boundary(int state_0, API arg0Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendLibrary backendLibrary__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); return getType(arg0Value, backendLibrary__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(API arg0Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */) { while (true) { int count0_ = 0; GetType0Data s0_ = GET_TYPE0_CACHE_UPDATER.getVolatile(this); GetType0Data s0_original = s0_; while (s0_ != null) { if ((s0_.backendLibrary_.accepts(arg0Value.backend))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.backendLibrary_.accepts(arg0Value.backend)); s0_ = this.insert(new GetType0Data()); NFIBackendLibrary backendLibrary__ = s0_.insert((N_F_I_BACKEND_LIBRARY_.create(arg0Value.backend))); Objects.requireNonNull(backendLibrary__, "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."); s0_.backendLibrary_ = backendLibrary__; if (!GET_TYPE0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { return getType(arg0Value, s0_.backendLibrary_); } break; } } { NFIBackendLibrary backendLibrary__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { backendLibrary__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); this.getType0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.GetArrayTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; return getType(arg0Value, backendLibrary__); } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static GetArrayTypeNode create(NativeSimpleType type) { return new GetArrayTypeNodeGen(type); } @GeneratedBy(GetArrayTypeNode.class) @DenyReplace private static final class GetType0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link GetArrayTypeNode#getType}
             *   Parameter: {@link NFIBackendLibrary} backendLibrary
*/ @Child NFIBackendLibrary backendLibrary_; GetType0Data() { } } } /** * Debug Info:
     *   Specialization {@link GetEnvTypeNode#getType}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link GetEnvTypeNode#getType}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(GetEnvTypeNode.class) @SuppressWarnings("javadoc") static final class GetEnvTypeNodeGen extends GetEnvTypeNode { static final ReferenceField GET_TYPE0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getType0_cache", GetType0Data.class); /** * State Info:
         *   0: SpecializationActive {@link GetEnvTypeNode#getType}
         *   1: SpecializationActive {@link GetEnvTypeNode#getType}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private GetType0Data getType0_cache; private GetEnvTypeNodeGen() { } @Override Object execute(API arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] || SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */) { GetType0Data s0_ = this.getType0_cache; if (s0_ != null) { if ((s0_.backend_.accepts(arg0Value.backend))) { return getType(arg0Value, s0_.backend_); } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */) { return this.getType1Boundary(state_0, arg0Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object getType1Boundary(int state_0, API arg0Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendLibrary backend__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); return getType(arg0Value, backend__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(API arg0Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */) { while (true) { int count0_ = 0; GetType0Data s0_ = GET_TYPE0_CACHE_UPDATER.getVolatile(this); GetType0Data s0_original = s0_; while (s0_ != null) { if ((s0_.backend_.accepts(arg0Value.backend))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.backend_.accepts(arg0Value.backend)); s0_ = this.insert(new GetType0Data()); NFIBackendLibrary backend__ = s0_.insert((N_F_I_BACKEND_LIBRARY_.create(arg0Value.backend))); Objects.requireNonNull(backend__, "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."); s0_.backend_ = backend__; if (!GET_TYPE0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { return getType(arg0Value, s0_.backend_); } break; } } { NFIBackendLibrary backend__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { backend__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); this.getType0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.GetEnvTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; return getType(arg0Value, backend__); } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static GetEnvTypeNode create() { return new GetEnvTypeNodeGen(); } @GeneratedBy(GetEnvTypeNode.class) @DenyReplace private static final class GetType0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link GetEnvTypeNode#getType}
             *   Parameter: {@link NFIBackendLibrary} backend
*/ @Child NFIBackendLibrary backend_; GetType0Data() { } } } /** * Debug Info:
     *   Specialization {@link GetSignatureTypeNode#getType}
     *     Activation probability: 0.65000
     *     With/without class size: 17/4 bytes
     *   Specialization {@link GetSignatureTypeNode#getType}
     *     Activation probability: 0.35000
     *     With/without class size: 8/0 bytes
     * 
*/ @GeneratedBy(GetSignatureTypeNode.class) @SuppressWarnings("javadoc") static final class GetSignatureTypeNodeGen extends GetSignatureTypeNode { static final ReferenceField GET_TYPE0_CACHE_UPDATER = ReferenceField.create(MethodHandles.lookup(), "getType0_cache", GetType0Data.class); /** * State Info:
         *   0: SpecializationActive {@link GetSignatureTypeNode#getType}
         *   1: SpecializationActive {@link GetSignatureTypeNode#getType}
         * 
*/ @CompilationFinal private int state_0_; @UnsafeAccessedField @Child private GetType0Data getType0_cache; private GetSignatureTypeNodeGen(BuildSignatureNode buildSignature) { super(buildSignature); } @Override Object execute(API arg0Value) { int state_0 = this.state_0_; if (state_0 != 0 /* is SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] || SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */) { if ((state_0 & 0b1) != 0 /* is SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */) { GetType0Data s0_ = this.getType0_cache; if (s0_ != null) { if ((s0_.backend_.accepts(arg0Value.backend))) { return getType(arg0Value, s0_.backend_); } } } if ((state_0 & 0b10) != 0 /* is SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */) { return this.getType1Boundary(state_0, arg0Value); } } CompilerDirectives.transferToInterpreterAndInvalidate(); return executeAndSpecialize(arg0Value); } @SuppressWarnings("static-method") @TruffleBoundary private Object getType1Boundary(int state_0, API arg0Value) { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { { NFIBackendLibrary backend__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); return getType(arg0Value, backend__); } } finally { encapsulating_.set(prev_); } } private Object executeAndSpecialize(API arg0Value) { int state_0 = this.state_0_; if (((state_0 & 0b10)) == 0 /* is-not SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */) { while (true) { int count0_ = 0; GetType0Data s0_ = GET_TYPE0_CACHE_UPDATER.getVolatile(this); GetType0Data s0_original = s0_; while (s0_ != null) { if ((s0_.backend_.accepts(arg0Value.backend))) { break; } count0_++; s0_ = null; break; } if (s0_ == null && count0_ < 1) { // assert (s0_.backend_.accepts(arg0Value.backend)); s0_ = this.insert(new GetType0Data()); NFIBackendLibrary backend__ = s0_.insert((N_F_I_BACKEND_LIBRARY_.create(arg0Value.backend))); Objects.requireNonNull(backend__, "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."); s0_.backend_ = backend__; if (!GET_TYPE0_CACHE_UPDATER.compareAndSet(this, s0_original, s0_)) { continue; } state_0 = state_0 | 0b1 /* add SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; } if (s0_ != null) { return getType(arg0Value, s0_.backend_); } break; } } { NFIBackendLibrary backend__ = null; { EncapsulatingNodeReference encapsulating_ = EncapsulatingNodeReference.getCurrent(); Node prev_ = encapsulating_.set(this); try { backend__ = (N_F_I_BACKEND_LIBRARY_.getUncached(arg0Value.backend)); this.getType0_cache = null; state_0 = state_0 & 0xfffffffe /* remove SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */; state_0 = state_0 | 0b10 /* add SpecializationActive[SignatureRootNode.GetSignatureTypeNode.getType(API, NFIBackendLibrary)] */; this.state_0_ = state_0; return getType(arg0Value, backend__); } finally { encapsulating_.set(prev_); } } } } @NeverDefault public static GetSignatureTypeNode create(BuildSignatureNode buildSignature) { return new GetSignatureTypeNodeGen(buildSignature); } @GeneratedBy(GetSignatureTypeNode.class) @DenyReplace private static final class GetType0Data extends Node implements SpecializationDataNode { /** * Source Info:
             *   Specialization: {@link GetSignatureTypeNode#getType}
             *   Parameter: {@link NFIBackendLibrary} backend
*/ @Child NFIBackendLibrary backend_; GetType0Data() { } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy