[W.I.P] A Just-In-Time Java Virtual Machine written in Haskell
Code for Functional Bytecode Interpreter (Proof-of-Concept) has been moved here: https://github.com/LouisJenkinsCS/Functional-JVM-Bytecode-Interpreter
LLVM-JVM is an attempt at creating a Java Virtual Machine with Just-In-Time compilation
that uses LLVM as the backend, similar to Azul System’s.
This project, however, is an educational one and likely will never be production-ready.
This project has been funded by Bloomsburg University’s Professional Experience Grant (PEG).
Warning: The code is a complete and utter mess! You’ve been warned!
LLVM-JVM uses a ripped and modified version of MateVM‘s runtime, while
supplying its own frontend to LLVM. As such, everything contained in the ‘MateVMRuntime’
folder is code that belongs to the original authors, and I do not take credit for anything
other than the modest changes I make, if any.
The MateVM project has been inactive for ~5 years, and considering that I would need to
strip a lot of it away, such as Hoopl and Harpy, I would just take the best parts of
them and give proper attribution. This not only saves me considerable time, which
is something I have very little of, but also allows me to have access to the issue-tracker
as well as other things.
Note: the criteria for progress is bars minimum, such as basic integer arithmetic and if-else statements. If it is checked it does not mean support for all of it, just that the ground work is done and can easily be extended on.
Requirements:
To build, run ‘cabal install’ and ‘ghc Main.hs -o Main.exe’, then ‘java -jar GUI/llvm-jvm-frontend.jar’
if you desire the GUI.