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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 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 git@xxxxxxxxxx: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




[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux