Truffle DSL compiler detection

Paul Driver frodwith at gmail.com
Mon Feb 27 18:12:39 UTC 2017


That's unfortunately not trivial to discover (it's being called by
leiningen and i'm struggling to find a good way to debug it), but it's
good to know that I was barking up the wrong tree. Thanks Gilles.

On Mon, Feb 27, 2017 at 9:43 AM, Gilles Duboscq
<gilles.m.duboscq at oracle.com> wrote:
> 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