Graal: SubstrateVM should be able to analyze Spring functional bean definitions

Created on 10 Jan 2019  路  9Comments  路  Source: oracle/graal

Here is a simple Spring application with beans defined in a programmatic way.

public class App {

    public static void main(String[] args) {
        GenericApplicationContext context = new GenericApplicationContext();
        context.registerBean(Foo.class);
        context.registerBean(Bar.class);
        context.refresh();
        context.getBean(Foo.class);
        context.getBean(Bar.class);
    }
}

This currently requires the following reflection configuration:

[
  {
    "name": "com.sample.Foo",
    "allDeclaredConstructors" : true,
    "allDeclaredMethods": true
  },
  {
    "name": "com.sample.Bar",
    "allDeclaredConstructors" : true,
    "allDeclaredMethods": true
  }
]

SubstrateVM should be able to analyze this kind of programmatic DI to allow running such Spring Framework application without advanced configuration.

Currently during compilation, we get

error: Error encountered while parsing com.oracle.svm.reflect.ClassLoader_findLoadedClass_e808259a373ab881b63621d947f9331965ab1a9e.invoke(java.lang.Object, java.lang.Object[]) 
Parsing context:
        parsing java.lang.reflect.Method.invoke(Method.java:498)
        parsing org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
        parsing org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
        parsing org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607)
        parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1288)
        parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1127)
        parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:974)
        parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:848)
        parsing org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:574)
        parsing org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:602)
        parsing org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838)
        parsing org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
        parsing com.sample.App.main(App.java:12)
        parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:164)
        parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Original error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Unsupported method java.lang.ClassLoader.findLoadedClass(String) is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class

And when running the app without reflection config:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.sample.Foo': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.sample.Foo]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.sample.Foo.<init>() at java.lang.Throwable.<init>(Throwable.java:265) at java.lang.Exception.<init>(Exception.java:66) at java.lang.RuntimeException.<init>(RuntimeException.java:62) at org.springframework.core.NestedRuntimeException.<init>(NestedRuntimeException.java:56) at org.springframework.beans.BeansException.<init>(BeansException.java:40) at org.springframework.beans.FatalBeanException.<init>(FatalBeanException.java:35) at org.springframework.beans.factory.BeanCreationException.<init>(BeanCreationException.java:98) at org.springframework.beans.factory.BeanCreationException.<init>(BeanCreationException.java:114) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1270) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$2c40051508af481f3e2b011afbd5800cdeae9fd3.getObject(Unknown Source) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) at com.sample.App.main(App.java:12) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:164) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.sample.Foo]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.sample.Foo.<init>()

A repro project is available at https://github.com/sdeleuze/graal-issues/tree/master/functional-bean-definition.

feature native-image

Most helpful comment

Is @AutomaticFeature designed to be used by frameworks outside of GraalVM itself?

@sdeleuze see https://github.com/oracle/graal/issues/1005#issuecomment-469488875

All 9 comments

@sdeleuze, kind of interesting result. If I run your classes in gradle with native-image I do get another result with RC10 on Linux sergej-P50 4.18.0-13-generic #14-Ubuntu SMP Wed Dec 5 09:04:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

> Task :oracleIssue:nativeImage
Executing [
/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/bin/java \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-XX:-UseJVMCICompiler \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-d64 \
-noverify \
-XX:-UseJVMCIClassLoader \
-Xss10m \
-Xms1g \
-Xmx12931425888 \
-Duser.country=US \
-Duser.language=en \
-Dgraalvm.version=1.0.0-rc10 \
-Dorg.graalvm.version=1.0.0-rc10 \
-Dcom.oracle.graalvm.isaot=true \
-Djvmci.class.path.append=/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal.jar \
-Xbootclasspath/a:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graal-sdk.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graaljs-scriptengine.jar \
-cp \
/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/objectfile.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/pointsto.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/svm.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-hotspot.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal-management.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-api.jar \
com.oracle.svm.hosted.NativeImageGeneratorRunner \
-watchpid \
28121 \
-H:Name=hello-world \
-H:+ReportUnsupportedElementsAtRuntime \
-H:DelayClassInitialization=org.springframework.core.io.VfsUtils \
-H:+AllowIncompleteClasspath \
-H:CLibraryPath=/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/clibraries/linux-amd64 \
-H:Path=/home/sergej/Development/GitHub/GraalVMTest/oracleIssue/build/graal \
-H:Class=App \
-imagecp \
/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graal-sdk.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graaljs-scriptengine.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/objectfile.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/pointsto.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/svm.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-hotspot.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal-management.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-api.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/library-support.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.graalvm.compiler/compiler/1.0.0-rc10/348252f37a155aba52e3ee9da9fbe483589d5d6e/compiler-1.0.0-rc10.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/com.oracle.substratevm/svm/1.0.0-rc10/58e31195b7330226169b4b9ede13d1314171a4f0/svm-1.0.0-rc10.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.graalvm.sdk/graal-sdk/1.0.0-rc10/12900d233d14f6382dd15c6481763777c56bf183/graal-sdk-1.0.0-rc10.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/5.1.4.RELEASE/2be9e8da66d32fb4eaf29a46bdcdbfe155f1f87a/spring-context-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.11.1/592a48674c926b01a9a747c7831bcd82a9e6d6e4/log4j-core-2.11.1.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/5.1.4.RELEASE/57a8c4ab2ff3233095da24c58c30aa75a7a82069/spring-aop-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/5.1.4.RELEASE/507c9391e0b786704929453e7fd3a74cfba46534/spring-beans-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/5.1.4.RELEASE/1abbfd04a7d472811582bb3780ea4d871442d49c/spring-expression-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.1.4.RELEASE/e7d2ad03a50ebff117a6efe2e0e3f15946d0768a/spring-core-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.11.1/268f0fe4df3eefe052b57c87ec48517d64fb2a10/log4j-api-2.11.1.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/5.1.4.RELEASE/f5a25caae583905203959abf35fdd1ab7a8f2c37/spring-jcl-5.1.4.RELEASE.jar:/home/sergej/Development/GitHub/GraalVMTest/oracleIssue/build/libs/oracleIssue.jar
]
[hello-world:28125]    classlist:   2,086.58 ms
[hello-world:28125]        (cap):   1,163.30 ms
[hello-world:28125]        setup:   2,384.48 ms
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
Warning: class initialization of class org.apache.logging.log4j.core.pattern.JAnsiTextRenderer failed with exception java.lang.NoSuchFieldError: WHITE. This class will be initialized at run time because either option --report-unsupported-elements-at-runtime or option --allow-incomplete-classpath is used for image building. Use the option --delay-class-initialization-to-runtime=org.apache.logging.log4j.core.pattern.JAnsiTextRenderer to explicitly request delayed initialization of this class.
[hello-world:28125]     analysis:  43,817.67 ms
error: unsupported features in 16 methods
Detailed message:
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandle.asType(MethodType)
Trace: 
        at parsing java.lang.invoke.CallSite.makeUninitializedCallSite(CallSite.java:241)
Call path from entry point to java.lang.invoke.CallSite.makeUninitializedCallSite(MethodType): 
        at java.lang.invoke.CallSite.makeUninitializedCallSite(CallSite.java:238)
        at java.lang.invoke.CallSite.<init>(CallSite.java:105)
        at java.lang.invoke.MutableCallSite.<init>(MutableCallSite.java:100)
        at jdk.internal.dynalink.support.AbstractRelinkableCallSite.<init>(AbstractRelinkableCallSite.java:104)
        at jdk.internal.dynalink.ChainedCallSite.<init>(ChainedCallSite.java:135)
        at jdk.nashorn.internal.runtime.linker.LinkerCallSite.<init>(LinkerCallSite.java:72)
        at jdk.nashorn.internal.runtime.linker.LinkerCallSite.newLinkerCallSite(LinkerCallSite.java:124)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
        at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
        at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
        at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
        at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
        at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
        at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
        at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
        at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
        at java.lang.Thread.interrupt(Thread.java:922)
        at java.io.PrintStream.newLine(PrintStream.java:552)
        at java.io.PrintStream.println(PrintStream.java:807)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandle.bindArgumentL(int, Object)
Trace: 
        at parsing java.lang.invoke.CallSite.makeDynamicInvoker(CallSite.java:214)
Call path from entry point to java.lang.invoke.CallSite.makeDynamicInvoker(): 
        at java.lang.invoke.CallSite.makeDynamicInvoker(CallSite.java:214)
        at java.lang.invoke.MutableCallSite.dynamicInvoker(MutableCallSite.java:162)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
        at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
        at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
        at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
        at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
        at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
        at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
        at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
        at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
        at java.lang.Thread.interrupt(Thread.java:922)
        at java.io.PrintStream.newLine(PrintStream.java:552)
        at java.io.PrintStream.println(PrintStream.java:807)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandle.bindTo(Object)
Trace: 
        at parsing java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:221)
Call path from entry point to java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandle, MethodType, boolean, boolean): 
        at java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:207)
        at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:194)
        at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:380)
        at java.lang.invoke.MethodHandle.asTypeUncached(MethodHandle.java:776)
        at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761)
        at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.asType(MethodHandleFactory.java:419)
        at jdk.nashorn.internal.runtime.AccessorProperty.initGetterSetter(AccessorProperty.java:271)
        at jdk.nashorn.internal.runtime.AccessorProperty.<init>(AccessorProperty.java:255)
        at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2509)
        at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
        at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl$BindCaller.prepareForInvoker(MethodHandle)
Trace: 
        at parsing java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1166)
Call path from entry point to java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(Class): 
        at java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1141)
        at java.lang.invoke.MethodHandleImpl$BindCaller.access$300(MethodHandleImpl.java:1122)
        at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1175)
        at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1173)
        at com.oracle.svm.core.jdk.Target_java_lang_ClassValue.get(JavaLangSubstitutions.java:515)
        at jdk.nashorn.internal.runtime.linker.NashornBeansLinker.getFunctionalInterfaceMethodName(NashornBeansLinker.java:211)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.isFunctionalInterfaceObject(Bootstrap.java:194)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.isCallable(Bootstrap.java:145)
        at jdk.nashorn.internal.objects.Global.getDefaultValue(Global.java:1219)
        at jdk.nashorn.internal.runtime.ScriptObject.getDefaultValue(ScriptObject.java:1429)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$35.call(ScriptObjectMirror.java:904)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl.buildVarargsArray(MethodHandle, MethodHandle, int)
Trace: 
        at parsing java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1634)
Call path from entry point to java.lang.invoke.MethodHandleImpl.varargsArray(Class, int): 
        at java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1611)
        at java.lang.invoke.MethodHandleImpl$IntrinsicMethodHandle.asCollector(MethodHandleImpl.java:1363)
        at java.lang.invoke.MethodHandleImpl$AsVarargsCollector.asTypeUncached(MethodHandleImpl.java:502)
        at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761)
        at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.asType(MethodHandleFactory.java:419)
        at jdk.nashorn.internal.runtime.AccessorProperty.initGetterSetter(AccessorProperty.java:271)
        at jdk.nashorn.internal.runtime.AccessorProperty.<init>(AccessorProperty.java:255)
        at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2509)
        at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
        at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandles.insertArguments(MethodHandle, int, Object[])
Trace: 
        at parsing jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(DynamicLinker.java:224)
Call path from entry point to jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(RelinkableCallSite, int): 
        at jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(DynamicLinker.java:224)
        at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
        at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
        at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
        at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
        at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
        at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
        at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
        at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
        at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
        at java.lang.Thread.interrupt(Thread.java:922)
        at java.io.PrintStream.newLine(PrintStream.java:552)
        at java.io.PrintStream.println(PrintStream.java:807)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandles.insertArguments(MethodHandle, int, Object[])
Trace: 
        at parsing jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(MethodHandleFactory.java:287)
Call path from entry point to jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(DebugLogger, Level, MethodHandle, int, boolean, Object): 
        at jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(MethodHandleFactory.java:277)
        at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.debug(MethodHandleFactory.java:376)
        at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandleFactory.java:402)
        at jdk.nashorn.internal.runtime.AccessorProperty.initGetterSetter(AccessorProperty.java:271)
        at jdk.nashorn.internal.runtime.AccessorProperty.<init>(AccessorProperty.java:255)
        at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2509)
        at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
        at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MutableCallSite.<init>(MethodHandle)
Trace: 
        at parsing java.lang.invoke.SwitchPoint.<init>(SwitchPoint.java:124)
Call path from entry point to java.lang.invoke.SwitchPoint.<init>(): 
        at java.lang.invoke.SwitchPoint.<init>(SwitchPoint.java:123)
        at jdk.nashorn.internal.runtime.CompiledFunction$OptimismInfo.newOptimisticAssumptions(CompiledFunction.java:919)
        at jdk.nashorn.internal.runtime.CompiledFunction$OptimismInfo.<init>(CompiledFunction.java:915)
        at jdk.nashorn.internal.runtime.CompiledFunction.<init>(CompiledFunction.java:128)
        at jdk.nashorn.internal.runtime.RecompilableScriptFunctionData.addCode(RecompilableScriptFunctionData.java:830)
        at jdk.nashorn.internal.runtime.RecompilableScriptFunctionData.initializeCode(RecompilableScriptFunctionData.java:825)
        at jdk.nashorn.internal.runtime.StoredScript.installScript(StoredScript.java:138)
        at jdk.nashorn.internal.runtime.Context.compile(Context.java:1325)
        at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:651)
        at jdk.nashorn.api.scripting.NashornScriptEngine.asCompiledScript(NashornScriptEngine.java:493)
        at jdk.nashorn.api.scripting.NashornScriptEngine.compile(NashornScriptEngine.java:182)
        at org.apache.logging.log4j.core.script.ScriptManager$MainScriptRunner$1.run(ScriptManager.java:207)
        at org.apache.logging.log4j.core.script.ScriptManager$MainScriptRunner$1.run(ScriptManager.java:203)
        at com.oracle.svm.core.jdk.Target_java_security_AccessController.doPrivileged(SecuritySubstitutions.java:62)
        at java.io.PrintWriter.<init>(PrintWriter.java:116)
        at java.io.PrintWriter.<init>(PrintWriter.java:148)
        at javax.xml.transform.TransformerException.printStackTrace(TransformerException.java:282)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:753)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.bindTo(MethodHandle, Object)
Trace: 
        at parsing jdk.nashorn.internal.runtime.linker.LinkerCallSite$ProfilingLinkerCallSite.setTarget(LinkerCallSite.java:243)
Call path from entry point to jdk.nashorn.internal.runtime.linker.LinkerCallSite$ProfilingLinkerCallSite.setTarget(MethodHandle): 
        at jdk.nashorn.internal.runtime.linker.LinkerCallSite$ProfilingLinkerCallSite.setTarget(LinkerCallSite.java:239)
        at jdk.internal.dynalink.support.AbstractRelinkableCallSite.initialize(AbstractRelinkableCallSite.java:115)
        at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
        at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
        at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
        at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
        at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
        at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
        at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
        at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
        at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
        at java.lang.Thread.interrupt(Thread.java:922)
        at java.io.PrintStream.newLine(PrintStream.java:552)
        at java.io.PrintStream.println(PrintStream.java:807)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace: 
        at parsing jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetterInner(ObjectClassGenerator.java:566)
Call path from entry point to jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetterInner(Class, Class, MethodHandle, MethodHandle, List, int): 
        at jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetterInner(ObjectClassGenerator.java:548)
        at jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetter(ObjectClassGenerator.java:682)
        at jdk.nashorn.internal.runtime.AccessorProperty.getGetter(AccessorProperty.java:516)
        at jdk.nashorn.internal.runtime.AccessorProperty.getObjectValue(AccessorProperty.java:415)
        at jdk.nashorn.internal.runtime.FindProperty.getObjectValue(FindProperty.java:229)
        at jdk.nashorn.internal.runtime.ScriptObject.get(ScriptObject.java:2842)
        at jdk.nashorn.internal.runtime.ScriptObject.get(ScriptObject.java:2877)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$3.call(ScriptObjectMirror.java:223)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace: 
        at parsing jdk.nashorn.internal.runtime.AccessorProperty.getSetter(AccessorProperty.java:627)
Call path from entry point to jdk.nashorn.internal.runtime.AccessorProperty.getSetter(Class, PropertyMap): 
        at jdk.nashorn.internal.runtime.AccessorProperty.getSetter(AccessorProperty.java:604)
        at jdk.nashorn.internal.runtime.AccessorProperty.invokeSetter(AccessorProperty.java:460)
        at jdk.nashorn.internal.runtime.AccessorProperty.setValue(AccessorProperty.java:483)
        at jdk.nashorn.internal.runtime.FindProperty.setValue(FindProperty.java:259)
        at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3038)
        at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace: 
        at parsing jdk.nashorn.internal.runtime.SpillProperty$Accessors.<init>(SpillProperty.java:65)
Call path from entry point to jdk.nashorn.internal.runtime.SpillProperty$Accessors.<init>(int): 
        at jdk.nashorn.internal.runtime.SpillProperty$Accessors.<init>(SpillProperty.java:62)
        at jdk.nashorn.internal.runtime.SpillProperty$Accessors.getCached(SpillProperty.java:85)
        at jdk.nashorn.internal.runtime.SpillProperty.primitiveSetter(SpillProperty.java:145)
        at jdk.nashorn.internal.runtime.SpillProperty.<init>(SpillProperty.java:162)
        at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2513)
        at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
        at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
        at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
        at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace: 
        at parsing jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.getFallbackLoggingRelink(LinkerCallSite.java:397)
Call path from entry point to jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.getFallbackLoggingRelink(MethodHandle): 
        at jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.getFallbackLoggingRelink(LinkerCallSite.java:392)
        at jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.initialize(LinkerCallSite.java:378)
        at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
        at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
        at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
        at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
        at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
        at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
        at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
        at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
        at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
        at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
        at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
        at java.lang.Thread.interrupt(Thread.java:922)
        at java.io.PrintStream.newLine(PrintStream.java:552)
        at java.io.PrintStream.println(PrintStream.java:807)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.runtime.ScriptFunction.createBuiltin(String, MethodHandle, Specialization[], int)
Trace: 
        at parsing jdk.nashorn.internal.objects.Global.init(Global.java:2270)
Call path from entry point to jdk.nashorn.internal.objects.Global.init(ScriptEngine): 
        at jdk.nashorn.internal.objects.Global.init(Global.java:2259)
        at jdk.nashorn.internal.objects.Global.initBuiltinObjects(Global.java:1094)
        at jdk.nashorn.internal.runtime.Context.initGlobal(Context.java:1150)
        at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:360)
        at jdk.nashorn.api.scripting.NashornScriptEngine.<init>(NashornScriptEngine.java:143)
        at jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:148)
        at org.apache.logging.log4j.core.script.ScriptManager.<init>(ScriptManager.java:99)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:216)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
        at org.apache.logging.log4j.core.LoggerContext.onChange(LoggerContext.java:670)
        at org.apache.logging.log4j.core.config.ConfiguratonFileWatcher$ReconfigurationRunnable.run(ConfiguratonFileWatcher.java:68)
        at java.lang.Thread.run(Thread.java:748)
        at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:480)
        at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:198)
        at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0)
Error: type is not available in this platform: org.graalvm.nativeimage.Feature$BeforeAnalysisAccess
Trace:  object java.lang.Class[]
        object java.lang.invoke.MethodType
        object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry
        object java.util.concurrent.ConcurrentHashMap$Node
        object java.util.concurrent.ConcurrentHashMap$Node[]
        object java.util.concurrent.ConcurrentHashMap
        object java.lang.invoke.MethodType$ConcurrentWeakInternSet
        method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean)
Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): 
        at java.lang.invoke.MethodType.makeImpl(MethodType.java:301)
        at java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1071)
        at java.lang.invoke.BoundMethodHandle$Factory.makeCbmhCtor(BoundMethodHandle.java:818)
        at java.lang.invoke.BoundMethodHandle$Factory.makeCtors(BoundMethodHandle.java:763)
        at java.lang.invoke.BoundMethodHandle$SpeciesData.<init>(BoundMethodHandle.java:349)
        at java.lang.invoke.BoundMethodHandle$SpeciesData$1.apply(BoundMethodHandle.java:389)
        at java.lang.invoke.BoundMethodHandle$SpeciesData$1.apply(BoundMethodHandle.java:383)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.stream.SpinedBuffer.forEach(SpinedBuffer.java:246)
        at java.util.stream.SpinedBuffer.toString(SpinedBuffer.java:269)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
        at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
        at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: type is not available in this platform: org.graalvm.nativeimage.impl.ImageSingletonsSupport

Error: Image building with exit status 1

Regarding your issue with:

GenericApplicationContext context = new GenericApplicationContext();
        context.registerBean(Foo.class);

It is quite easy to write a NodePlugin, which will react on every method invocation of registerBean and gets the argument. Or you could use an @AutomaticFeature like the guys from Graal-Team do, to register callbacks, when some specific method has been called.

In my opinion it is not SubstrateVMs task to support every framework. Like I said, it is quite easy to dynamically register classes via static code analysis.

@SergejIsbrecht Where can I find documentation and samples to write such NodePlugin?

@cstancu I will be happy to close that issue and implement it myself on Spring Fu side, I just need a little bit of guidance. Is @AutomaticFeature designed to be used by frameworks outside of GraalVM itself? If so in witch dependency is this annotation and related dependencies available? Is there an example project somewhere?

Is @AutomaticFeature designed to be used by frameworks outside of GraalVM itself?

@sdeleuze see https://github.com/oracle/graal/issues/1005#issuecomment-469488875

@sdeleuze Would this new agent that records reflection usage help? Prototype is described at "https://github.com/oracle/graal/blob/master/substratevm/CONFIGURE.md". Do applications typically have tests that would exercise that reflection?

@thomaswue I will give it a try tomorrow.

@sdeleuze I will close this issue as not-a-bug. As you mentioned above the automatic reflection registration should be implemented on Spring Fu side via a Feature.

@sdeleuze we currently don't have a tutorial for Feature but you can look at JavaFXFeature, ServiceLoaderFeature or SecurityServicesFeature for some relatively simple examples of features that perform automatic reflection registration. As it was mentioned above: @AutomaticFeature is meant for internal use. Instead, you should list the feature class explicitly using the --features=... option.

Thanks for the guidance @cstancu.

Was this page helpful?
0 / 5 - 0 ratings