[ANNOUNCE] Jato v0.1.1 - a JIT-only virtual machine for Java

Pekka Enberg <[email protected]> Sat, 18 Sep 2010 21:28:19 +0300
Newsgroups gmane.comp.java.classpath.devel
Message-ID <[email protected]>
  Hi all!

I'm proud to announce the release 0.1.1 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:

    - Fixes to make Eclipse, Jython, Lusearch, and Xalan in DaCapo 
benchmarks to
      work (Tomek, Pekka)

    - Relaxed locking for monitors to improve performance (Tomek)

    - Fixes to the x86-64 port (Pekka)

    - Initial work to make Jato compile on Darwin (Pekka)

You can download the full source distribution here:

    http://www.kernel.org/pub/software/java/jato/jato-0.1.1.tar.bz2

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.1.0 to v0.1.1:
------------------------------

Arthur HUILLET (1):
       lib/string: fix size computation and str_vprintf

Eduard - Gabriel Munteanu (2):
       vm: quit gracefully when there's nothing to load
       x86-64: fix call to fixup_vtable() from trampolines

Jim Huang (1):
       vm: Update URL to Java online documentation

Pekka Enberg (146):
       runtime: Implement Runtime.availableProcessors()
       runtime: Implement Runtime.freeMemory() and Runtime.totalMemory()
       torture: More DaCapo tests run now
       torture: Enable more DaCapo tests now that we're faster
       torture: Add JRuby to torture suite
       x86: Extract register number encoding to separate file
       x86: Move ModR/M and SIB encoding to encode.h
       x86: Move common atomic ops to atomic.h
       x86-64: Remove 'atomic_t' redefinition
       x86: Fix pointer cmpxchg() on 64-bit
       x86: Generic instruction encoding
       torture: Add script for comparing DaCapo JVM performance
       cafebabe: Remove 'pragma once' from header files
       vm: Remove unused variables from vm/thread.c
       boehmgc: Auto-detect when running under valgrind
       x86: Make called_from_jit_trampoline() more robust
       Merge branches 'boehmgc/valgrind' and 'x86/stackframe'
       vm: Fix PRELOAD_OPTIONAL handling
       vm: Fix Classpath 0.98 support
       Merge branch 'master' of [email protected]:penberg/jato
       Revert "jit: fix vtable fixup"
       x86: Optimize fixup_direct_calls() locking
       x86: Convert INSN_RET to use generic instruction encode
       vm: Introduce a -Xnewgc command line option
       gc: Fix verbose GC handling in gc_alloc()
       x86: Remove volatile from atomic_t definition
       jit: Don't ensure class init if already compiled
       Makefile: Introduce 'tags' target
       Makefile: Fix 'tags' target to append to tags file
       vm: Make struct vm_object smaller
       torture: Enable dacapo xalan and lusearch tests
       torture: Improve dacapo comparison pretty-printing
       torture: Cleanup strach directory after each dacapo test
       torture: Clean up compare-dacapo script some more
       vm: Fix comparison between signed and unsigned
       torture: Fix compare-dacapo for xalan
       vm: Move ->array_length out of struct vm_object
       test: Fix object-stub.c compilation error
       vm: Fix up version number confusion
       Makefile: Remove references to JamVM
       x86-64: Fix REG_EAX references in instruction selector
       Makefile: Remove unused OS variable
       x86-64: Fix 32-bit cross compile on 64-bit
       runtime: Use GNU classpath VMSystem.nanoTime()
       runtime: Use switch statement instead of sparse array
       Revert "vm: fix condition in transform_method_for_call()"
       Revert "vm: implement CallNonvirtualXXXMethod() JNI function family"
       Revert "vm: implement mising requirement for CallXXXMethod() JNI 
function familiy"
       Revert "runtime: make vm_object_to_vm_method() work for 
java.lang.reflect.Constructor"
       x86: Convert some SSE instructions to use insn_encode
       torture: Enable 'eclipse' dacapo benchmark
       test: Fix 'make check'
       x86: Fix typo in encode.c
       x86: Convert more SSE instructions to use insn_encode()
       jit: Fail lazily for missing methods
       x86-64: Fix backtrace register names
       x86-64: Fix '-Xtrace:invoke' on 64-bit
       runtime: Use throw_oom_error()
       x86-64: Kill 64-bit emitter alias macros
       x86: Extract fixup code in a separate file
       x86-64: Fix method tracing register clobber
       x86-64: Don't clobber XMM registers in signal bottom halfs
       x86: Use abort() for crash dumps
       x86-64: Fix interface method invocation
       test: Fix compilation error
       x86: Add register to register instruction encoding
       x86: Use insn_encode() for more register to register insns
       x86: Immediate to register instruction encoding
       x86: Convert more immediate to register insns
       x86: Enable encode tests on 64-bit
       x86-64: REX prefix encoding
       x86: Merge 32-bit and 64-bit emitter tables
       x86: Inline GENERIC_X86_EMITTERS to emitter table
       x86: Unify INSN_ADD_IMM_REG instruction
       x86-64: Improve REX prefix encoding
       x86: Fix 32-bit build breakage
       x86: Encoding for indirect calls
       x86-64: Fix indirect call encoding
       x86: Fix 32-bit build breakage
       x86: Don't use struct insn operand array
       x86: Use ->operand for single operand insns
       x86-64: Kill DST_NONE encoding magic
       x86: Use 64 bits for encoding table entries
       x86: push and pop register encoding
       x86-64: Unify push and pop register encoding
       x86: INSN_CLTD_REG_REG encoding
       x86: INSN_NEG_REG encoding
       x86-64: Unify INSN_CLTD encoding
       x86-64: Unify INSN_NEG_REG encoding
       x86: Better diagnostic for missing emitters
       x86: Convert shift instruction encoding
       Merge branch 'master' of github.com:penberg/jato
       x86-64: Add shift instruction encoding to 64-bit
       x86: Fix compilation with clang
       jit: Fix compilation with clang
       vm: Remove vm_array_fields() wrapper
       vm, x86: Cleanup array element offsetting
       vm, x86: Cleanup struct vm_object ->fields offsetting
       boehmhc: Fix compilation on Darwin
       Add valgrind header file to the tree
       x86: Add encoding for INSN_PUSH_MEMLOCAL
       x86-64: Wire INSN_PUSH_MEMLOCAL for 64-bit
       x86: Encoding for INSN_POP_MEMLOCAL
       x86-64, test: Fix encoding test breakage
       x86-64: wire INSN_POP_MEMLOCAL for 64-bit
       regression: Fix warning in MethodTest
       regression: Fix warnings in BranchTest
       jit, lib, vm: Include stdlib.h for malloc()
       Add list of open projects in TODO file
       x86: movsx and movsz encoding
       x86: Remove unused emit_pop_memlocal() function
       x86-64: Unify INSN_MOVZX_16_REG_REG encoding
       x86-64: Wire INSN_MOVSX encoding on 64-bit
       jni: Add GetDirectBufferAddress JNI function
       Fix .mailmap to exclude bogus email addresses
       Makefile: Use -MD to generate dependencies and objects
       Makefile: Be quiet about entering to directories
       Makefile: Sanitize "make clean" output
       x86: Fix CALL_REG LIR tracing
       jit: Optimize nr_bblock() function
       jit: Dominance frontier computation for SSA form
       Makefile: Cleanup object file declarations
       boehmgc: Fix GCC build options
       Makefile: Use Jato to run Jasmin
       Kill obsolete regression testing script
       Drop valgrind installation requirement
       Update README file
       Add COPYING file and update GPLv2 URL in LICENSE
       Jato v0.1.1
       torture: Fix Dacapo URL
       torture: Fix JUnit URL
       x86: Format do_native_call() inline assembly
       x86: Use symbolic operands for inline assembly
       x86: Extract native call argument marshaling
       x86: Use C code to call vm_enter_vm_native()
       x86: Add helper macros for do_native_call()
       x86: Implement native_call() for J_FLOAT and J_DOUBLE
       vm: Improve GNU Classpath discovery error reporting
       reflection: Add stub for VMClassLoader#resolveClass()
       vm: Parse InnerClasses attribute of classes
       reflection: Implement VMClass#getDeclaringClass()
       vm: Parse Exceptions attribute of methods
       reflection: Implement getExceptionTypes() methods
       Merge branches 'x86/call', 'runtime/reflection' and 
'runtime/classloader'
       torture: Enable Jython in DaCapo benchmarks
       Makefile: Don't use Jato for Jasmin on x86-64

Tomek Grabiec (88):
       vm: use vm_free() to free memory allocated with vm_alloc()
       boehmgc: fix boehmgc under valgrind
       vm: disable registration of finalizers for now
       x86: add support for some atomic operations and memory barrier 
operations
       runtime: add missing vm_class_ensure_object()
       vm: implement relaxed-lock protocol for monitors
       runtime: fix native_vmclass_get_declared_constructors()
       runtime: fix off-by-one error in 
native_vmstackwalker_getclasscontext()
       runtime: implement sun.misc.Unsafe.putObject()
       runtime: implement sun.misc.Unsafe.park() and unpark()
       runtime: fix bug in native_unsafe_park()
       jit: fix vtable fixup
       vm: remove unnecessary memory barriers in relaxed-lock
       vm: speed up -Xtrace:method
       vm: fix argument parsing
       vm: cleanup in jit/exception.c
       jit: exception trace should not be filtered
       vm: introduce helpers for exception throwing
       vm: introduce vm_object_alloc_array_of() helper
       vm: use appropriate class loaders for super classes and 
implemented interfaces
       vm: convert class name to dot form before calling external 
classloader
       vm: fix is_primitive_array() and vm_class_get_array_class()
       vm: add stub for VMThread.nativeSetPriority()
       runtime: implement java.lang.reflect.VMArray.createObjectArray()
       runtime: implement VMRuntime.maxMemory()
       vm: fix bug in vm_object_check_array()
       vm: remove busy waiting in vm_thread_interrupt()
       jit: remove fixup_static() call from jit_magic_trampoline()
       vm: introduce -Xtrace:gate <regex>
       jit: make signal_new_*() functions take printf-like arguments for 
message construction.
       jit: test whether object is throwable and throw error if it is not.
       jit: cleanup exception throwing
       vm: move exception_holder to struct vm_exec_env.
       jit: move new_exception() to jit/exception.c
       vm: remove unnecessary memory barriers.
       vm: fix bug in assuring .object of struct vm_class
       vm: fix bug in unwrap()
       runtime: implement VMConstructor.getModifiersInternal()
       jit: use light weight locking in trampoline
       jit: fixup vtable entry for the class of this when in invokevirtual
       test: fix make check breakage
       vm: use compile lock in class initialization
       vm: Introduce -bootclasspath which allows to explicitly set the 
boot classpath
       vm: implement JNI functions: GetPrimitiveArrayCritical and 
ReleasePrimitiveArrayCritical
       vm: define native for VMMethod.getReturnType()
       vm: optimize stack trace filling
       vm: introduce vm_call_method_this() helper
       vm, lib: add missing list node initializers
       vm: add missing include in preload.h
       vm: preliminary support for weak, soft and phantom references
       vm: Make hash-map allocate GC-neutral entries and use strong 
references for interned strings.
       vm: free memory of thread specific structures on collection of 
VMThread
       vm: create posix thread in detached state
       vm: throw error if native thread creation fails
       vm: document memory allocate functions
       vm: define default value for java.home property
       vm: add missing memory barrier in vm_object_unlock()
       vm: print stack trace for each thread in respond to SIGQUIT
       vm: move slas_to_dots() and dots_to_slash() to vm/utf8.c
       vm: fix class names for arrays in vm/preload.c
       vm: use offsetof() instead of sizeof()
       vm: use bootstrap classloader to load bootstrap classes only
       vm: fix array class loading
       vm: fix primitive class names
       vm: implement JNI function AllocObject
       vm: implement JNI function FromReflectedMethod
       runtime: make vm_object_to_vm_method() work for 
java.lang.reflect.Constructor
       vm: implement mising requirement for CallXXXMethod() JNI function 
familiy
       vm: implement CallNonvirtualXXXMethod() JNI function family
       vm: fix condition in transform_method_for_call()
       runtime: make vm_object_to_vm_method() work for 
java.lang.reflect.Constructor
       vm: implement mising requirement for CallXXXMethod() JNI function 
familiy
       vm: implement CallNonvirtualXXXMethod() JNI function family
       jit: fix copy_exception_handler()
       jit: throw error if trampoline called for method for which 
compilation failed
       jit: allow compilation unit recompilation in jit_magic_trampoline
       vm: Call java.lang.Class constructor in 
native_vmclassloader_defineclass()
       vm: use vm_class_get_field_recursive() in 
vm_jni_common_get_field_id()
       jit: cleanup in jit_magic_trampoline()
       vm: implement CallXXXMethodV JNI function family
       vm: implement isSameObject() JNI function
       vm: implement GetStringLength() JNI function
       vm: implement java.lang.reflect.Field.getInt()
       vm: handle case when java.lang.ref.Reference is resurected in GC 
cycle
       vm: fix vm_call_method_this_a() when method comes from interface 
class
       jit: throw exceptions occurred during compilation
       vm: declare native handler for java.lang.reflect.VMField.getInt()
       vm: fix memory leak in classloader_load()

Vegard Nossum (1):
       x86: Fix bottom half FPU state clobbering