LWN.net Logo

Jato v0.1.0 released

From:  Pekka J Enberg <penberg-AT-cs.helsinki.fi>
To:  classpath-AT-gnu.org, jatovm-AT-googlegroups.com
Subject:  [ANNOUNCE] Jato v0.1.0 - a JIT-only virtual machine for Java Options
Date:  Sat, 8 May 2010 17:07:39 +0300 (EEST)
Message-ID:  <alpine.DEB.2.00.1005081706570.21293@melkki.cs.helsinki.fi>
Cc:  lwn-AT-lwn.net
Archive-link:  Article, Thread

Hi all!

I'm happy to announce the release 0.1.0 of Jato!

Jato is an open source, JIT-only virtual machine for Java that aims to support
the JVM specification version 2 including 1.5 amendments. It is not complete
but you can run some Java applications with it on 32-bit x86 Linux machines.
Jato uses Boehm GC as its garbage collector and GNU Classpath to provide
essential Java run-time libraries. A port to the x86-64 architecture is
currently ongoing.

Highlights of this release:

   - Boehm GC integrated to the VM (Tomek, Pekka)

   - Fixes to make Eclipse Java compiler (ECJ) work (Tomek)

   - Lots of fixes to the x86-64 port (Eduard-Gabriel)

You can download the full source distribution here:

   http://www.kernel.org/pub/software/java/jato/jato-0.1.0.t...

or fetch the latest sources from the git repository:

   git clone git://git.kernel.org/pub/scm/java/jato/jato.git

If you have questions, comments, or suggestions, feel free to drop by at #jato
on irc.freenode.net or send an email to our mailing list at:

   http://groups.google.com/group/jatovm?hl=en

For more information, please check out the Jato home page at:

   http://www.jatovm.org/

 			Pekka
---

Changes from v0.0.2 to v0.1.0: 
------------------------------

Eduard - Gabriel Munteanu (46):
       x86-64: use 2 slots for J_LONG and J_DOUBLE
       x86-64: add lopc variants of membase emitters
       x86-64: implement INSN_MOV_MEMLOCAL_REG for XMM registers
       vm: true conversion of double to uint64_t
       x86-64: implement EXPR_FVALUE
       x86-64: handle float/double distinction in is_64bit_reg()
       x86-64: implement INSN_MOV_REG_MEMBASE for XMM registers
       x86-64: proper handling of float args in insn selector
       x86-64: implement FP conversions
       x86-64: implement float/double comparison
       x86-64: can't push 64-bit imm
       jit: assign correct vm_types to FP fixed registers
       x86-64: fix float temporary store
       x86-64: fix EXPR_LOCAL store
       x86-64: implement float instance field store
       x86-64: ifdef l2d/d2l conversion constants
       x86-64: implement float and integer register multiplication
       x86-64: reverse argument passing order in EXPR_NEWARRAY
       x86-64: refactor and fix memindex emitters
       x86: use offsetof() instead of sizeof() in array_deref
       Preliminary GDB support
       x86-64: save and change %rbp before saving other registers
       Provide annotations for asm functions.
       x86-64: fix throw_from_trampoline()
       x86-64: fix native_call_gp() according to args map changes
       x86-64: save and restore XMM registers
       x86-64: REX comes after legacy prefixes
       x86: move lopc helpers into x86-64 code
       x86-64: fix operands order for XMM movs
       Add myself to AUTHORS
       x86-64: add FIXME concerning the changes to the stack frame
       x86-64: ifdef encode_reg()
       x86-64: implement INSN_DIV_REG_REG
       x86-64: implement INSN_NEG_REG
       x86-64: make EXPR_LOCAL stores work on register arguments
       x86-64: remove obsolete fields from stack frame
       jit: don't allocate space in stack frame for register arguments
       x86-64: handle %r13 correctly in memindex emitters
       x86-64: correct handling of instance field expressions
       x86-64: don't set reg2 in insn-selector where it isn't needed
       x86-64: implement STMT_CHECKCAST
       x86-64: implement array_deref stores
       x86-64: fix operand order in conversion emitters
       x86-64: implement EXPR_INSTANCEOF
       x86-64: implement INSN_MOVZX_16_REG_REG
       Fix CFLAGS in BoehmGC makefile

Pekka Enberg (90):
       x86: Pass insn to operand emitters
       x86: Pass insn to single operand emitters
       x86: Pass insn to two operand emitters
       x86: Unify NO_OPERANDS, SINGLE_OPERAND, and TWO_OPERAND emission
       x86: Move emitter data types to emit-code.c
       x86: Unify BRANCH instruction emission
       regression: Fix DupTest on HotSpot
       regression: Partial fix for SubroutineTest on HotSpot
       regression: Fix WideTest on HotSpot
       regression: Fix InvokeTest on HotSpot
       regression: Fix PopTest on HotSpot
       x86: Don't pass "regs" to gc_start()
       gc: Unify gc_jit_safepoint() and gc_signal_safepoint()
       gc: Look up compilation unit for root set scanning
       gc: Add copyright banner to vm/gc.c
       vm: Remove use of NOT_IMPLEMENTED from vm/method.c
       gc: Simplify gc_scan_rootset()
       regression: Run tests that verify VM startup first
       x86-64: Fix emit-code.c build breakage
       Makefile: Fix monoburg directory for "clean" target
       x86-64: Fix count_java_arguments() parameter in pack_args()
       vm: Fix assertion in stack_trace_elem_type_name()
       vm: Remove JamVM compat macros
       x86-64: ifdef unused code in emit-code.c
       vm: Fix test breakage
       x86-64: Fix test breakage caused by uninitialized ->args_map
       x86-64: Fix liveness-test.c
       x86-64: Fix "make test"
       Fix up .gitignore
       x86-64: Fix args.h breakage
       vm: Introduce "-Xmaps" command line options
       jit: Shrink basic blocks in shrink_compilation_unit()
       jit: Fix memory leak in inline_subroutines()
       jit: Fix memory leak in allocate_registers()
       jit: Don't use "struct insn" for fixups
       jit: Free LIR data structures in shrink_basic_block()
       jit: NOT_IMPLEMENTED removal from load-store-bc.c
       Fix "job server not available" error for -jN builds
       Add Clojure to torture tests
       Add Scimark to torture tests
       Add JUnit to torture tests
       vm: NOT_IMPLEMENTED removal from class.c
       monoburg: Make makefile more distcc friendly
       vm: Remove unused resolve.c
       vm: Remove NOT_IMPLEMENTED from jni.c
       vm: Use warn() instead of NOT_IMPLEMENTED in preload.c
       runtime: Throw OutOfMemoryError instead of using NOT_IMPLEMENTED
       vm: Introduce VM error helper functions
       vm: Convert class.c to use VM error helpers
       cafebabe: Add missing include to header file
       vm: Convert classloader.c to use VM error helpers
       vm: Convert string.c to use VM error helpers
       runtime: Convert reflection.c to use VM error helpers
       regression: Use @SuppressWarnings to silence unnecessary warnings
       regression: Paramterize Class type to reduce build noise
       vm: Code cleanups to vm/object.c
       x86: Fix native call clobber lists
       x86: Unify native_call_eax() and native_call_long()
       x86: Clean up do_native_call()
       x86-64: Fix native_call_gp() return value
       jit: Improve compile error message
       gc: Import Boehm GC sources to the tree
       vm: Wire up Boehm GC to our GC infrastructure
       boehmgc: Remove unused Makefiles
       boehmgc: Use separate Makefile for boehmgc
       runtime: Implement VMRuntime.gc()
       vm: Print out better error message for unrecognized commands
       Makefile: Only build program for 'make'
       vm: '-XmxSIZE' command line option for maximum heap size
       runtime: Fix Field.get() et al for instance fields
       regression: Replace assertObjectEquals() with assertEquals()
       regression: Fix compilation warnings in some of the tests
       runtime: Implement VMRuntime.availableProcessors()
       scripts: Add script to run ECJ under Jato
       vm: Introduce -Xnogc command line option
       vm: Add signal handler for SIGILL
       vm: Bump up default heap size to 128 MB
       gc: Flush stderr immediately for GC debug printouts
       vm: Enable GC by default
       Makefile: Add 'make torture' target
       vm: Merge bytecodes.c to bytecode.c
       test/x86: Remove useless tests
       test/jit: Remove unused test cases
       Revert "gc: Flush stderr immediately for GC debug printouts"
       vm: Make get_vmtype_size() a static inline function
       jit: Fix typo in jit/trampoline.c
       jit: Convert compilation unit mutex to spinlock
       Revert "jit: Convert compilation unit mutex to spinlock"
       jit: Use optimistic checking for ->is_compiled
       jit: Clean up jit/trampoline.c

Tomek Grabiec (16):
       x86: improve backtrace printing
       vm: fix boehmgc integration with jato
       vm: check for exception after calling getSystemClassLoader()
       runtime: fix native_vmclass_get_declared_methods()
       jit: fix tableswitch/lookupswitch support in subroutine inlining
       vm: do not print native symbol for JIT stack trace elements
       vm: implement JNI handler for CallVoidMethodA()
       vm: fix main thread creation
       runtime: implement VMThread.yield()
       jit: print PC of failing instruction during conversion
       x86: use error() rather than die()
       jit: do not push expressions of type byte, char and short onto mimic stack
       jit: mark EXPR_*_INSTANCE_FIELD as not always pure.
       jit: remove explicit type checking in convert_array_load()
       jit: remove unnecessary locking on fixup_site
       vm: use vm_free() to free bucket's fields


(Log in to post comments)

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds