GitXplorerGitXplorer
p

hornet

public
53 stars
5 forks
19 issues

Commits

List of commits on branch master.
Unverified
1e899c16fef0bb42765778b75f801448cb9861aa

java/interp: Fix putfield and getfield class init

ppenberg committed 10 years ago
Unverified
5a3849b6b58fd6472634242e364438ea948ce2e2

vm/klass: Lookup <clinit> only from this class

ppenberg committed 10 years ago
Unverified
dc8a967c602d0fb3cc109d79f632de290ac1bb95

java/loader: Fix class cache lookup for array types

ppenberg committed 10 years ago
Unverified
3eff6978c5b0ef9986673ed3baf407e3a5dc8747

vm/object: Fix field vector size

ppenberg committed 10 years ago
Unverified
9e430b73e8b8ba975f9627a6aabb943c82ed782f

vm/klass: Add nr_object_fields() helper function

ppenberg committed 10 years ago
Unverified
f356883cffca00ff18fd207392920f2888fb40be

vm/klass: Initialize super to nullptr

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.