Truffle DSL compiler detection

Gilles Duboscq gilles.m.duboscq at oracle.com
Mon Feb 27 17:43:42 UTC 2017


Hi Paul,

Most compilations with the mx tool are also done in a similar way (using javac as a libarary [1]). So there should not be any fundamental problem with this in the Truffle DSL annotation processor.

What are the arguments you pass to JavacTool.run?

 Gilles

[1]: https://github.com/graalvm/mx/blob/master/java/com.oracle.mxtool.compilerserver/src/com/oracle/mxtool/compilerserver/JavacDaemon.java

On 27/02/17 18:30, Paul Driver wrote:
> I'm trying build some truffle code with leiningen (a clojure build
> tool). It has a "lein javac" task which invokes the java compiler.
> Under the covers, this calls the ant "javac" task. The compiler being
> used is in fact oracle javac (as you can see in attached stacktrace)
> but isn't being invoked by the javac executable, but rather being
> called as a library.
> 
> My truffle code compiles when I invoke the javac tool from the command
> line and under eclipse. My suspicion is that the Class.forName (in
> https://github.com/graalvm/truffle/blob/master/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JavaCCompiler.java)
> is not working as a way to detect javac when it is invoked the way
> leiningen is invoking it.
> 
> A relevant piece of stacktrace is pasted below. Any help is appreciated.
> 
> /home/pdriver/code/jaque/src/java/jaque/truffle/NockNode.java:15:
> error: Uncaught error in AnnotationProcessor while processing
> jaque.truffle.NockNode : Parsing of Node jaque.truffle.NockNode
> failed.
> public abstract class NockNode extends Node {
>                 ^
>   java.lang.RuntimeException: Parsing of Node jaque.truffle.NockNode failed.
>   at com.oracle.truffle.dsl.processor.parser.NodeParser.parseRootType(NodeParser.java:162)
>   at com.oracle.truffle.dsl.processor.parser.NodeParser.parse(NodeParser.java:111)
>   at com.oracle.truffle.dsl.processor.parser.NodeParser.parse(NodeParser.java:101)
>   at com.oracle.truffle.dsl.processor.parser.AbstractParser.parse(AbstractParser.java:72)
>   at com.oracle.truffle.dsl.processor.AnnotationProcessor.process(AnnotationProcessor.java:80)
>   at com.oracle.truffle.dsl.processor.TruffleProcessor.processElement(TruffleProcessor.java:98)
>   at com.oracle.truffle.dsl.processor.TruffleProcessor.processImpl(TruffleProcessor.java:86)
>   at com.oracle.truffle.dsl.processor.TruffleProcessor.process(TruffleProcessor.java:60)
>   at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
>   at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
>   at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
>   at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
>   at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
>   at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
>   at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
>   at com.sun.tools.javac.main.Main.compile(Main.java:523)
>   at com.sun.tools.javac.main.Main.compile(Main.java:381)
>   at com.sun.tools.javac.main.Main.compile(Main.java:370)
>   at com.sun.tools.javac.main.Main.compile(Main.java:361)
>   at com.sun.tools.javac.Main.compile(Main.java:74)
>   at com.sun.tools.javac.api.JavacTool.run(JavacTool.java:237)
>   at user$eval3.invokeStatic(form-init7367735244504712043.clj:1)
>   at user$eval3.invoke(form-init7367735244504712043.clj:1)
>   at clojure.lang.Compiler.eval(Compiler.java:6927)
>   at clojure.lang.Compiler.load(Compiler.java:7379)
>   at clojure.lang.Compiler.loadFile(Compiler.java:7317)
>   at clojure.main$load_script.invokeStatic(main.clj:275)
>   at clojure.main$init_opt.invokeStatic(main.clj:277)
>   at clojure.main$init_opt.invoke(main.clj:277)
>   at clojure.main$initialize.invokeStatic(main.clj:308)
>   at clojure.main$null_opt.invokeStatic(main.clj:342)
>   at clojure.main$null_opt.invoke(main.clj:339)
>   at clojure.main$main.invokeStatic(main.clj:421)
>   at clojure.main$main.doInvoke(main.clj:384)
>   at clojure.lang.RestFn.invoke(RestFn.java:421)
>   at clojure.lang.Var.invoke(Var.java:383)
>   at clojure.lang.AFn.applyToHelper(AFn.java:156)
>   at clojure.lang.Var.applyTo(Var.java:700)
>   at clojure.main.main(main.java:37)
>   Suppressed: java.lang.UnsupportedOperationException: Unsupported
> compiler for element com.sun.tools.javac.code.Symbol$ClassSymbol.
>   at com.oracle.truffle.dsl.processor.java.compiler.CompilerFactory.getCompiler(CompilerFactory.java:44)
>   at com.oracle.truffle.dsl.processor.parser.NodeParser.loadMembers(NodeParser.java:318)
>   at com.oracle.truffle.dsl.processor.parser.NodeParser.parseNode(NodeParser.java:192)
>   at com.oracle.truffle.dsl.processor.parser.NodeParser.parseRootType(NodeParser.java:158)
>   ... 38 more
> 


More information about the graal-dev mailing list