GitXplorerGitXplorer
p

hornet

public
53 stars
5 forks
19 issues

Commits

List of commits on branch master.
Unverified
1cb54380d12eb35a0ef1fefe14aec11bf3b7b426

java/inter: Improve FFI symbol lookup error handling

ppenberg committed 9 years ago
Unverified
ea47a627eacd9327ebc33c9923bfc576c0cb475b

java: Move value conversion helpers to vm.hh

ppenberg committed 9 years ago
Unverified
f7e071817d6573f91a65b22053eb7b43880f92da

java/interp: Fix args handling for invokevirtual and invokespecial

ppenberg committed 10 years ago
Unverified
ded088dcd0758693d2dc4729562a33a6156fab6f

java/translator: Fix inverted invokespecial check

ppenberg committed 10 years ago
Unverified
efd70216daddc7413e0a15c121fec0db3f453759

java/interp: Fix newarray and anewarray ostack handling

ppenberg committed 10 years ago
Unverified
25cd6887602f4bda4b8f42bf32a632d9fae10c99

java/inter: Add asserts to putfield and getfield

ppenberg committed 10 years ago

README

The README file for this repository.

Hornet

Build Status

Hornet is an implementation of the Java virtual machine with emphasis on predictable execution for applications that have low-latency requirements. Planned features include pauseless garbage collection, ahead-of-time compilation, off-heap memory management, FFI, object layout control, and observability APIs for analyzing and optimizing low-latency applications.

Features

Hornet is in pre-alpha state so the features are still very much work-in-progress.

  • MPS based incremental GC with very low pause times.
  • Execution engines:
    • Fast interpreter
    • Baseline DynASM-based compiler
    • Optimizing LLVM-based compiler
  • OpenJDK classlib
  • Supports Linux and Darwin
  • Written in C++11

Design

  • Launcher is the java-like front-end.
  • Translator is a bytecode translator that is shared by the fast interpreter and both compilers.
  • Fast interpreter is a portable interpreter that translates bytecode into an internal format that is faster to interpret.
  • Baseline compiler is based on Dynasm framework that is used by LuaJIT, for example.
  • Optimizing compiler is based on LLVM.
  • GC is based on MPS.

Installation

Prerequisites:

Fedora

$ yum install java-1.7.0-openjdk-devel

If you want to enable the DynASM backend, install LuaJIT:

$ yum install luajit

If you want to enable the LLVM backend, install the library:

$ yum install llvm-dev

OS X

export JAVA_HOME=$(/usr/libexec/java_home)

Build and install Hornet:

$ make install

The command installs an executable hornet to $HOME/bin.

Usage

Hornet works like java:

$ hornet
usage: hornet [-options] class [args...]

License

Hornet is:

Copyright © 2013-2014 Pekka Enberg and contributors

Hornet is distributed under the 2-clause BSD license.

Memory Pool System is:

Copyright © 2001–2013 Ravenbrook Limited. All rights reserved.

MPS is distributed under the Sleepycat License.