All Projects â†’ LouisJenkinsCS â†’ LLVM-JVM

LouisJenkinsCS / LLVM-JVM

Licence: BSD-3-Clause license
[W.I.P] A Just-In-Time Java Virtual Machine written in Haskell

Programming Languages

haskell
3896 projects
java
68154 projects - #9 most used programming language
LLVM
166 projects

Projects that are alternatives of or similar to LLVM-JVM

openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,973 (+13413.64%)
Mutual labels:  interpreter, jvm, virtual-machine
Kivm
🌟This is a pure C++ implementation of Java Virtual Machine (only Java 8 is supported). Inspired by Hotspot In Action.
Stars: ✭ 137 (+522.73%)
Mutual labels:  interpreter, jvm, virtual-machine
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+12636.36%)
Mutual labels:  interpreter, jvm, virtual-machine
Libforth
libforth: A small Forth interpreter that can be used as a library written in c99
Stars: ✭ 107 (+386.36%)
Mutual labels:  interpreter, virtual-machine
Seax
A VM-based runtime environment for functional programming languages
Stars: ✭ 36 (+63.64%)
Mutual labels:  interpreter, virtual-machine
Cymbal
Yet another Rust implementation of the Monkey language from "Writing an Interpreter in Go" and "Writing a Compiler in Go"
Stars: ✭ 49 (+122.73%)
Mutual labels:  interpreter, virtual-machine
Neko
The Neko Virtual Machine
Stars: ✭ 447 (+1931.82%)
Mutual labels:  interpreter, virtual-machine
Lice
A multi-paradigm programming language running on JVM
Stars: ✭ 120 (+445.45%)
Mutual labels:  interpreter, jvm
Quickjs
The official repo is at bellard/quickjs.
Stars: ✭ 1,429 (+6395.45%)
Mutual labels:  interpreter, virtual-machine
clox
A virtual machine and a tree-walk interpreter for the Lox programming language in C89 🌀
Stars: ✭ 38 (+72.73%)
Mutual labels:  interpreter, virtual-machine
Go.vm
A simple virtual machine - compiler & interpreter - written in golang
Stars: ✭ 178 (+709.09%)
Mutual labels:  interpreter, virtual-machine
Esta
Interpreted language and bytecode VM of my own design written in Rust [Unmaintained]
Stars: ✭ 28 (+27.27%)
Mutual labels:  interpreter, virtual-machine
Mini Jvm
使用 JDK8 实现 JVM(Java Virtual Machine)
Stars: ✭ 568 (+2481.82%)
Mutual labels:  interpreter, jvm
Tagha
Minimal, low-level, fast, and self-contained register-based bytecode virtual machine/runtime environment.
Stars: ✭ 79 (+259.09%)
Mutual labels:  interpreter, virtual-machine
Hashlink
A virtual machine for Haxe
Stars: ✭ 523 (+2277.27%)
Mutual labels:  interpreter, virtual-machine
Simple
The Simple Intelligent and Modular Programming Language and Environment
Stars: ✭ 120 (+445.45%)
Mutual labels:  interpreter, virtual-machine
Lioness
The Lioness Programming Language
Stars: ✭ 155 (+604.55%)
Mutual labels:  interpreter, virtual-machine
Cub
The Cub Programming Language
Stars: ✭ 198 (+800%)
Mutual labels:  interpreter, virtual-machine
Gravity
Gravity Programming Language
Stars: ✭ 3,968 (+17936.36%)
Mutual labels:  interpreter, virtual-machine
Ph7
An Embedded Implementation of PHP (C Library)
Stars: ✭ 422 (+1818.18%)
Mutual labels:  interpreter, virtual-machine

LLVM-JVM

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).

Note

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.

Why not just fork the MateVM project?

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.

Progress

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.

  • Basic Arithmetic
    • Integer
    • Float
    • Double
    • Long
  • Basic Control Flow
    • Loops
    • Conditionals
  • LLVM optimization passes
  • Global Variables
    • Static Fields
    • Instance Fields
  • Dynamic ClassLoading
    • JIT at Runtime
  • Garbage Collection
    • Boehms

Building

Requirements:

  1. LLVM w/ llvm-config
  2. Haskell
  3. Java7+ (for GUI)

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].