Truffle DSL compiler detection

Paul Driver frodwith at gmail.com
Mon Feb 27 17:30:09 UTC 2017


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