[llvm-dev] Using VMKit to convert Java Bytecode to LLVM IR
Leslie Zhai via llvm-dev
llvm-dev at lists.llvm.org
Mon Aug 20 18:49:14 PDT 2018
Hi all,
Thanks for discussing JVM topic!
在 2018年08月20日 23:32, Cranmer, Joshua via llvm-dev 写道:
>
> There’s been a lot of code changes from LLVM 3.3 to LLVM 6.0, so
> expecting to just compile vmkit with a newer version of LLVM is not
> going to work.
>
> Translation of pure JVM bytecode to LLVM itself is not particularly
> challenging. You do need a garbage collector, which LLVM does not
> provide, but that does not make the conversion that much harder. The
> difficult part is that any effective project requires an
> implementation of several Java classes that are very closely tied to
> implementation details (particularly things like java.lang.Class or
> java.lang.String). The most obvious source of the Java library
> (OpenJDK) essentially requires you to implement the full and complex
> dynamic class loading interfaces before you can even get a simple
> hello world application running.
>
> VMKit did spend a lot of effort in being able to use the OpenJDK’s
> implementation of the Java library, so while it may be a substantial
> amount of effort to get VMKit to a newer version of LLVM (or OpenJDK,
> for that matter), it is probably easier to do that instead of writing
> your own JVM-to-LLVM converter.
>
What about Falcon[1] It is an optimizing Java JIT base on modern LLVM,
perhaps it is able to learn from it. And I also have the same question:
how to support JDK[2] library?
> *From:*llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of
> *Ratnesh Tiwari via llvm-dev
> *Sent:* Monday, August 20, 2018 7:20
> *To:* llvm-dev <llvm-dev at lists.llvm.org>
> *Subject:* [llvm-dev] Using VMKit to convert Java Bytecode to LLVM IR
>
> Hi,
>
> I wanted to use VMKit project to convert Java Bytecode to LLVM IR
> bitcode. But I do not know how to start, since I came to know that
> VMkit is written for llvm -3.3 version, but I want it for latest LLVM
> version 6.0.1.
>
I love Compiler Principle[3] so I migrated DragonEgg[4] from GCC-4.8 +
LLVM-3.3 to GCC-8 + LLVM-6, you can also migrate VMkit from LLVM-3.3 to
LLVM-8.
> So, could you please suggest me, whether I have to write it whole
> project from scratch to meet my requirement of latest llvm version, or
> can use existing project by building it. Since, I think existing VMKit
> project which is unmaintained might have a lot of bug to meet latest
> llvm version.
>
> Also tell me if I have to write it from scratch to convert from Java
> Bytecode to LLVM IR, what is the basic code flow approach ,how to
> start and related guidance. Please help me by suggesting above queries.
>
Java Bytecode to LLVM IR is not difficult, but there is
graalvm/sulong[5] for transforming LLVM IR to Java Bytecode already :)
> Thanks & Regards
>
> Ratnesh Tiwari
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
1. http://llvm.org/devmtg/2017-10/#talk12
2. http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/
3. https://www.leetcode.cn/2017/12/ilove-compiler-principle.html
4. http://lists.llvm.org/pipermail/llvm-dev/2017-August/116705.html
5. https://github.com/graalvm/sulong
--
Regards,
Leslie Zhai
More information about the llvm-dev
mailing list