NPE in PolyglotLanguageContext.toHostValue

Adam Kövári kovariadam at gmail.com
Tue Jul 24 14:42:28 UTC 2018


Hi Christian,

Thank you for such a prompt response. That was exactly the problem!

I didn’t know about gitter, thanks, I’ll join it.


Thanks again,
Adam

Od: Christian Humer
Odoslané: utorok 24. júla 2018 15:01
Komu: Adam Kövári
Kópia: graal-dev at openjdk.java.net
Predmet: Re: NPE in PolyglotLanguageContext.toHostValue

Hi Adam,

First, welcome! Thanks for giving Truffle a go.

The NPE you are seeing comes from the fact that the CallTarget that you are returning in SmolLanguage#parse returns itself a Java null value when called.
A CallTarget is never expected to return null. Instead we typically use singleton values that represent null. We have some documentation here[1] why we do this.
So to fix this make sure your RootNodes always return a value.

That being said, the NPE is not a good error for this. We will fix that in RC5.

Hope this helps.
Feel free to also checkout our Gitter channel for further questions: https://gitter.im/graalvm/graal-core

Good luck!

- Christian Humer


[1] https://github.com/graalvm/simplelanguage/blob/master/language/src/main/java/com/oracle/truffle/sl/runtime/SLNull.java#L54






On Tue, Jul 24, 2018 at 1:06 PM Adam Kövári <kovariadam at gmail.com> wrote:
Hello,

I am very interested in learning the Truffle API, I find it really amazing so far.

I am trying to implement a simple expression language [1], based on SimpleLanguage project, but I got stuck and I am not really sure where the problem might be.

Perhaps someone understands what this means?

org.graalvm.polyglot.PolyglotException: java.lang.NullPointerException
        at com.oracle.truffle.api.vm.PolyglotLanguageContext.toHostValue(PolyglotLanguageContext.java:585)
        at com.oracle.truffle.api.vm.PolyglotContextImpl.eval(PolyglotContextImpl.java:789)
        at org.graalvm.polyglot.Context.eval(Context.java:313)
        at org.graalvm.polyglot.Context.eval(Context.java:338)
        at smol.SmolSimpleExpressionTest.unitValueTest(SmolSimpleExpressionTest.java:74)
…


This can be easily reproduced by running:

$ mvn tests

My java version:

$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
GraalVM 1.0.0-rc3 (build 25.71-b01-internal-jvmci-0.45, mixed mode)


Would someone be able to advice, any ideas or pointers are most welcome.


Thanks,
Adam

[1] https://github.com/akovari/smol



More information about the graal-dev mailing list