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

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

Hi all!

Jato 0.2 release is now available!

Jato is an open source, JIT-only virtual machine for Java that aims to support
the latest JVM specification. It can currently run many Java applications on
32-bit x86 Linux machines such as Eclipse.

What's new in this release:

  - Jython and JRuby start up under the VM (requires GNU Classpath CVS HEAD)

  - Annotation support (Pekka Enberg, Nikhil Sarda)

  - More missing JNI APIs implemented (Joonas Reynders, Nikhil Sarda)

  - More missing reflection APIs implemented (Nikhil Sarda)

  - Linux/x86-64 port fixes (Eduard - Gabriel Munteanu, Sergey Mashkov, Pekka Enberg)

  - Linux/i386 bug fixes (Tomek Grabiec, Vegard Nossum)

  - SSA form bug fixes (Ana-Maria Farcasi)

  - Darwin port fixes (Michael Tremel)

NOTE NOTE NOTE! You're strongly encouraged to use GNU Classpath CVS HEAD
because it has important Jython and JRuby compatibility fixes that are not part
of any release.

There's a Github mirrof the GNU Classpath here for people who don't want to use


The source code for Jato is available for download here:


You can also get 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:


You can also report problems on Github:


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



Changes from v0.1.1 to v0.2: 

Ana Farcasi (3):
      jit: fix initialization of a compilation unit
      test/unit: Added test for dominance frontier sets
      arch/x86: Fix print_jmp_memindex

Ankit Laddha (1):
      arm: Add dummy functions to make Jato link on ARM

Balagopal (1):
      vm: Add option -Xtrace:vtable for tracing all vtables

Eduard - Gabriel Munteanu (9):
      x86-64: fix unwind emitter
      Add DEBUG option to the build system.
      New section on GDB support in Documentation/debugging.txt
      Discover GNU Classpath 0.98 on Gentoo
      x86-64: handle 32-bit imm movs
      x86-64: set the vm_type in args_map_assign()
      x86-64: fix regparm allocation for JNI arguments
      x86-64: fix float / double returns
      x86-64: fix invoke result propagation for float / double

Farcasi Ana-Maria (4):
      jit: Fix crash in do_compute_dfns()
      vm: Fix -Xssa command line option parsing
      jit: Add tracing for SSA data structures
      x86: fix print_jmp_membase

Joonas Reynders (36):
      runtime: Implement VMRuntime#traceMethodCalls
      tests: Introduce JNI test case
      Added JNI roundtrip tests for basic types. Float and double fail
      jni,test: Add basic instance roundtrip test to JNITest
      jni,test: Add JNI array types and roundtrip tests
      jni: Convert part of the JNI API to correspond the JNI spec
      JNI refactoring, jnienv methods 26-34
      JNI CallXxxMethod-function names refactored to spec
      JNI CallNonvirtualXxxMethod-function names refactored to spec
      jni get and set field method names refactored according to spec
      JNI call static method function names refactored according to spec
      jni: JNI_{Get|Set}Static*Field API refactoring
      JNI function names 164-175 refactored according to spec
      Refactor the remaining JNI 1.1 function names
      JNI 1.2 and forward function names refactored according to spec
      Final refactoring of JNI functions, jvalue and const fixes
      jni: Refactor java_vm to JavaVM as per JNI specification
      Functional test for JNI GetVersion
      vm,jni: Moved Java and JNI version constants to java-version.h
      Remove unused JNI guard page mechanism
      vm: Fix defaultJNIEnv initialization and add test
      vm,jni: JNI_DefineClass implementation and test
      test/functional: Fixed java formatting
      test/functional: Add JNI FindClass tests
      Add a simple functional test for broken class files
      vm: Add debug printing functions
      runtime: java.lang.reflect.Method support for ToReflectedMethod and FromReflectedMethod
      runtime: java.lang.reflect.Field support for JNI ToReflectedField and FromReflectedField
      vm: java.lang.Object support for debug printing
      runtime: Move struct vm_method helpers to reflection.c
      runtime: Refactor vm_field to java.lang.reflect.Field wrapping
      jni: JNI GetSuperclass implementation and tests
      test/functional: Add tests for JNI isAssignableFrom
      test/functional: Add tests for JNI Throw function
      test/functional: Add tests for JNI ThrowNew function
      test/functional: Add tests for JNI ExceptionOccurred and ExceptionClear functions

Karim Osman (1):
      Update README file

Michael Tremel (2):
      vm: Use pthread_{get|set}specific() for vm_get_exec_env()
      x86: Make backtrace.c system-dependent

Nikhil Sarda (26):
      runtime: Implement field annotations
      jit: Replaced list with hashmap for bytecode subroutine lookup
      vm: Debug printing supports fields.
      vm: Refactored out tests for reflection API for fields from MethodTest.java into FieldTest.java
      test/integration: Completed dsub, dmul, ddiv tests.
      test/integration: Added tests for bytecodes frem, fneg, drem and dneg.
      test/integration: Add test cases for fadd, fsub, fmul and fdiv bytecode instructions.
      test/integration: Added tests for the bytecodes aconst_null, bipush and sipush.
      test/integration: Added tests for bytecodes ireturn, freturn, dreturn, lreturn and areturn.
      test/integration: Added test for bytecode goto_w.
      test/integration: Added tests for bytecodes ifnull and ifnotnull.
      vm: Added getShort() method for java.lang.reflect.Field
      test/integration: Implemented tests for bytecodes fconst_0, fconst_1, fconst_2 and dconst_0, dconst_1.
      test/integration: Added test for bytecode lcmp
      test/integration: Added tests for bytecode fcmpl, fcmpg, dcmpl and dcmpg.
      test/integration: Added tests for bytecodes if_icmpeq, if_icmpne, if_icmplt, if_icmpge, if_icmpge, if_icmpgt, if_icmple.
      test/integration: Implemented test for bytecode swap.
      test/integration: Implemented tests for bytecodes i2d, i2l, i2f, i2s, l2i, l2f, l2d, f2i, f2l, f2d, d2i, d2l, d2f.
      vm/reflection: Added getFloat, getDouble, getByte and getChar methods for java.lang.reflect.Field
      vm/reflection: Added getBoolean method for java.lang.reflect.Field
      vm/reflection: Added getDeclaredAnnotations() for Method.
      vm/reflection: Implemented getDeclaredAnnotations() for Field.
      vm/reflection: Added parameter annotations.
      jni: Added isInstanceOf implementation and tests.
      reflection/annotations: Field annotations are lazily initialized.
      reflection/annotations: Method annotations are lazily initialized.

Pekka Enberg (279):
      jni: Add support for weak references
      x86: Fix clobber list in arch/x86/call.c
      x86: Cleanup duplicate code in emit_jni_trampoline()
      x86: Fix clobber list in do_native_call()
      cafebabe: Cleanup inner classes attribute parsing
      regression: Fix type safety problem in MethodTest
      vm: Use ZIP_FL_NOCASE to locate manifest
      Revert "vm: Use ZIP_FL_NOCASE to locate manifest"
      vm: Improve error message if "jato -jar" fails
      jit: Fix up JNI arguments in HIR
      x86, jni: Cleanup JNI trampolines
      x86-64: Fix args map for JNI methods
      x86-64: Remove unused vm_native_call() function
      x86, vm: Don't use gregset_t in core code
      x86: Cleanup signal header file
      x86: Move save_signal_registers to signal_{32,64}.h
      x86, sys: Move Linux specific code under sys/linux-x86
      darwin, x86: Fix build error due to missing Makefile
      Makefile: Define _XOPEN_SOURCE for Darwin
      x86-64: Fix broken build
      x86-64: Fix XMM register corruption in signal-bh.S
      x86-64: Valgrind workaround for EXPR_CLASS_FIELD
      x86-64: Fix 64-bit register push and pop codegen
      x86-64, jni: Add support for JNI trampolines
      x86: Fix broken build on 32-bit
      x86-64: Cleanup JNI trampolines
      x86-64: Fix typos in jni.S
      x86: Fix push and pop REX_B prefix
      x86: Unify __emit_push_reg() and __emit_pop_reg()
      x86: Unify __emit_push_imm() helper
      x86-64: Fix JNI trampoline stack offsets
      x86-64: Fix 64-bit JNI trampolines
      vm: Fix ->args_map for interface methods
      x86-64: Wire INSN_AND_REG_REG encoding
      x86-64: Wire INSN_OR_REG_REG encoding
      x86: Convert INSN_SAR_IMM_REG to use insn_encode
      x86-64: Wire INSN_IMM_REG encoding
      Documentation/debugging.txt updates
      runtime: Implement VMRuntime#traceInstructions()
      vm: Fix arraycopy() error handling
      runtime: Extract java.lang.VMSystem code
      runtime: Use JNI types for VMSystem APIs
      runtime: Fix VMSystem function naming convention
      runtime: Extract VMThread code
      jni: Implement NewDirectByteBuffer function
      jni: Implement JNI_ExceptionCheck function
      tools: Expression generator tool
      x86-64: Don't use REX_W prefix for PUSH/POP
      x86: Unify EXPR_CLASS_FIELD on 32-bit and 64-bit
      x86: Remove duplicate EXPR_CLASS_FIELD rule
      x86: Use J_NATIVE_PTR for get_var()
      x86-64: Fix EXPR_INSTANCE_FIELD for java.lang.ref.Reference
      x86-64: Fix PUSH and POP insn_encode()
      Makefile: Use GCC for determining ARCH
      Makefile: Fix gcc-arch.sh on Darwin
      x86-64: Reformat inline asm in arch/x86/call.c
      x86-64: Use inline asm symbolic operands in call.c
      x86: Kill unused fixed reg in EXPR_FVALUE
      vm: Cleanup unnecessary <vm/thread.h> includes
      vm: Introduce -Xnosystemclassloader option
      jit: Fix missing include in jit/gdb.c
      x86: Implement INSN_JMP_MEMBASE using insn_encode()
      x86: Implement INSN_JMP_MEMINDEX using insn_encode()
      x86-64: Fix high registers for insn_encode()
      x86-64: Fix operand_is_reg high()
      jit: Fix get_stack_args_count()
      Revert "jit: Fix get_stack_args_count()"
      jit: Fix get_stack_args_count() for JNI methods
      test: Fix JIT unit test breakage
      x86-64: Fix some eax/edx pairs on 64-bit
      jit: Make insert_arg() static
      jit: Fix args map indexing
      vm: Fix return value if classloading fails
      vm: Fix Jato exit status if killed by unhandled exception
      x86-64: Use insn_encode() for INSN_SUB_IMM_REG
      x86-64: Use insn_encode() for INSN_SUB_REG_REG
      x86: INSN_MOV_XMM_MEMLOCAL encoding
      x86-64: Use insn_encode for INSN_MOV_XMM_MEMLOCAL
      x86: Cleanup insn_encode()
      x86: Encode displacement first in x86_insn_encode
      x86: Use int32_t for disp and imm in struct x86_insn
      x86: Fix emitter function types
      x86: Cleanup struct initialization in insn_encode
      x86: Fix INSN_MOVSS and INSN_MOVSD names
      x86: Sort encode_table table in arch/x86/encode.c
      x86: Kill unused insn_need_disp() arg
      x86: Cleanup insn_encode() displacement encoding
      Add GNU Classpath build instructions to README
      Update GNU Classpath installation instructions
      x86: Use insn_encode() for INSN_XOR_XMM_REG_REG
      x86: Use insn_encode() for INSN_XOR_64_XMM_REG_REG
      x86: Fix XORPS and XORPS constant names
      x86: Use insn_encode for INSN_MOVSD_XMM_XMM
      x86: Use insn_encode for INSN_MOVSS_XMM_XMM
      x86: Kill unused function emit_mov_64_xmm_xmm()
      x86: Unify __emit_cmp_imm_reg() for 32-bit and 64-bit
      runtime: Refactor native VMClass code
      runtime: Move VMClass code to one file
      vm: Don't store inner classes attribute in struct vm_class
      Fix "make tags" target to include runtime directory
      jit: Fix all_exception_handlers_have_bb()
      runtime: Implement VMClass#getDeclaredAnnotations
      jit: Optimize struct live_interval size
      Revert "jit: Fix all_exception_handlers_have_bb()"
      jit: Split exception handler basic blocks
      Revert "jit: Optimize struct live_interval size"
      x86-64: Fix EXPR_TEMPORARY and J_LONG
      jit: Fix new_exception() constructor lookup
      jit: Fix assign_temporary for 32-bit
      x86: Don't use CONFIG_32_BIT in instruction selector
      x86: Use JNI trampoline to pass JNI env pointer
      vm: Use vmc->nr_interfaces in itable_add_entries()
      Makefile: Add cafebabe directory to "make tags"
      runtime: Implement Class#isLocalClass
      runtime: Implement Class#isMemberClass
      runtime: Fix Class#getModifiers for inner classes
      vm: Cleanup duplicate get_system_class_loader() function
      x86: Improve vtable lookup code
      linux,x86: Dump code on SIGSEGV
      x86, jit: Move x86 specific disassembler to arch/x86
      arm: Fix scripts/gcc-arch.sh for arm
      arm: Empty architecture Makefiles
      arm: Dummy architecture headers
      tools: New regression test suite runner
      test: Improve test runner to use -Xnosystemclassloader
      x86-64: Enable some regression tests
      x86-64: Enable all passing tests
      x86: Enable x86-64 marked regression tests on 32-bit
      x86: Enable rest of the regression tests on 32-bit
      Makefile: Use tools/test.py for regression tests
      test: Fix MMIX register names
      Update Ubuntu build instructions
      x86: Use insn_encode() for INSN_MOVSS_MEMLOCAL_XMM
      x86: Use insn_encode() for INSN_MOVSD_MEMLOCAL_XMM
      x86: Use insn_encode() for INSN_MOVSD_XMM_MEMLOCAL
      x86-64: Encoding for some MOVSS and MOVSD instructions
      vm: Improve command line compatibility
      vm: Implement "-Xbootclasspath/a" command line
      regression: Add invokevirtual test case
      regression: Improve MethodInvokeVirtualTest
      jit: Allocate fixed vars lazily
      jit: Fix caller-saved register intervals
      jit: Use "uint8_t" for ->reg in struct live_interval
      regression: Add progress indicator to tools/test.py
      Makefile: Fix "make -j" build
      regression: Run tests in parallel
      Makefile: Use Jato with ECJ when compiling functional tests
      test/functional: Move regression tests to new directory
      Makefile: Fix "make check" errors
      test/unit: Move unit tests to new directory
      jit: Fix fixed var lazy allocation
      Fix and cleanup .gitignore
      vm: Introduce boxing/unboxing helper functions
      vm: Fix annotation element values for primitives
      functional/jni: Fix Makefile 'clean' target
      jni: Fix JNI floating point tests
      vm: Annotation array value support
      runtime: Rename runtime.c to java_lang_VMRuntime.c
      runtime: Implement VMRuntime.runFinalization
      vm: Preload primitive array classes
      runtime: Implement Class.getEnclosingMethod
      vm: Fix annotation array element parsing
      vm: Fix NOT_IMPLEMENTED error paths in vm/classloader.c
      cafebabe: Fix multiple element value pair parsing
      vm: Fix annotation string array element value parsing
      x86-64: Fix 'make check' target
      vm,jni: Fix jvalue use in API functions
      runtime: VMMethod.getAnnotation() stub
      runtime: Implement sun.misc.Unsafe API methods
      runtime: Rename unsafe.c to sun_misc_Unsafe.c
      test/function: Class.getAnnotation tests
      runtime: Cleanup sun_misc_Unsafe.c
      test,function: Enable more annotation tests
      vm: Fix annotation string array element value parsing
      vm: Fix more annotation array element value parsing     Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxx>
      x86-64: UnsafeTest is broken on 64-bit
      x86: Separate 32-bit and 64-bit instruction selectors
      x86-64: Cleanup 64-bit instruction selector
      tools/test.py: Fix progress bar test count
      x86-64: EXPR_VALUE instruction selector rule fix
      x86-32: Cleanup 32-bit instruction selector
      vm: Fix load_class_from_file() error handling
      x86,linux: Fix backtrace if IP is zero
      x86-64: Fix JNI trampoline return value corruption
      x86-64: Enable more functional tests
      x86-64: INSN_MOVSD_MEMDISP_XMM instruction encoding
      x86: Fix INSN_MOVSD_MEMDISP_XMM encoding
      x86: Fix INSN_MOVSD_MEMDISP_XMM on 64-bit
      x86-64: Fix JNI method vtable fixup
      x86-64: Enable passing functional test
      x86-64: INSN_MOVSD_XMM_MEMDISP encoding
      x86: Use insn_encode() for INSN_MOVSD_XMM_MEMDISP on 32-bit
      x86: Cleanup insn_need_sib() function
      Cleanup README
      x86-64: MOVSS memdisp instruction encoding
      x86: Use MOVSS memdisp instruction encoding on 32-bit
      arm: Add missing include to arch/cmpxchg.h
      x86: Fix XMM instruction type names
      x86: SSE instruction encoding for insn_encode()
      x86-64: Wire up SSE instruction encoding
      tools/test.py: Remove duplicate test runs
      tools/test.py: Enable ExceptionHandlerTest on 64-bit
      Makefile: Introduce LIB_OBJS
      Makefile: Generate libjvm.a static library
      Makefile: Extract architecture detection to separate file
      test/integration: JIT compiler integration test
      test/integration: Add bytecode markers
      test/integration: pop bytecode test case
      test/integration: add .gitignore file
      jit: Fix pop2 bytecode parsing
      test/integration: goto bytecode test case
      test/integration: Integer arithmetic test cases
      test/integration: lconst bytecode integration tests
      test/integration: Improve goto bytecode test case
      test/integration: Long arithmetic test cases
      x86-64: INSN_XOR encoding on 64-bit
      x86-64: Use assert() to stub missing rules
      x86-64: Fix FinallyTest on x86-64
      tools/test.py: Enable LongArithmeticTest on x86-64
      runtime: Implement VMClass.getDeclaredClasses
      test/integration: if<cond> bytecode test cases
      x86-64: Fix OP_DREM and OP_FREM instruction selection
      vm: Fix long and double annotation array element values
      vm: Support for annotation element class values
      vm: Fix class array annotation element values
      vm: Preload java/lang/Enum.valueOf()
      vm: Support for annotation enum element values
      vm,cafebabe: Annotation element value type support
      vm: Support for annotation array element values
      vm: Fix vm_object_alloc_array_raw() return value
      vm: Fix compile error in vm/object.c
      arm,linux: Add stub sys/signal.h header
      arm: Add more stub functions
      vm: Fix Java and JNI version mismatch
      vm, jni: Cleanup defaultJNIEnv and defaultJNIInvokeInterface tables
      vm,jni: Use JNI_NOT_IMPLEMENTED in JNI_GetDirectBufferCapacity
      test/functional: Kill VMClassTest
      x86-64: Fix EXPR_MULTIANEWARRAY call instruction
      x86: insn_encode() for FSTP and FSTP_64
      Update README
      x86-64: Wire FSTP AND FST_64 instructions
      vm: Fix CamelCase name
      Fix common misspellings
      x86: Use double-precision rounding mode
      Makefile: Fix implicit dependency to $(PROGRAM)
      Makefile: Fix build on x86-64
      x86-64: Enable MethodInvokeVirtualTest
      x86: Fix unwind on 32-bit
      x86,jit: Fix floating point conversion issues
      tools/gen: Latest version from Vegard
      cafebabe: Fix cafebabe_class_init() error handling path
      test/functional: Improve lcmp test cases
      vm,runtime: Add support for method annotations
      vm: Lindent vm/debug.c
      vm: Don't call is_primitive_array() if loader is NULL
      test/integration: Add test case for dadd bytecode instruction
      Makefile: Don't run ECJ under Jato
      runtime: Fix vm_object_to_vm_field() with GNU Classpath 0.97
      jit: Kill asserts from interval_{start,end} functions
      x86: Optimize reg_supports_type()
      jit: Optimize alloc_interva()
      jit: Optimize interval_start()
      jit: Make struct live_range smaller on 64-bit
      vm: Initialize super_vtable to shut up GCC
      x86: insn_encode() for INSN_FLD_MEMLOCAL and INSN_FLD_64_MEMLOCAL
      x86-64: wire up INSN_FLD_MEMLOCAL and INSN_FLD_64_MEMLOCAL
      x86-64: Wire up more insns
      x86-64: Fix OP_DREM and OP_FREM code generation
      x86-64: Fix OP_FNEG code generation
      x86-64: OP_DNEG code generation
      x86-64: Fix EXPR_MULTIARRAY_SIZE_CHECK code generation
      x86-64: Fix EXPR_VALUE code generation for 64-bit immediates
      x86-64: Cleanup EXPR_VALUE code
      x86-64: Fix STMT_STORE code generation
      runtime: Fix missing include
      test/functional: Enable ClassTest.testGetEnclosingClass
      runtime: Rename classloader.c to java_lang_VMClassLoader.c
      runtime: Rename VMClassLoader native method implementations
      Jato 0.2

Sergey Mashkov (1):
      x86-64: Fix Reference.referent field access

Tomek Grabiec (11):
      jato: fix UnsatisfiedLinkError on getExceptionTypes with gnu-classpath 0.97.2
      jit: fix SIGSEGV on -Xtrace:invoke-verbose
      remove junk code
      vm: set VMThread.vmdata for main thread
      Fix do_native_call() with -O0
      vm: fix relaxed-locking implementation
      lib: fix free_hash_map()
      lib: do not use vm_free to free records allocated by malloc()
      lib: cleanup defining operations on key in hash map
      lib: hash-map table size auto adjusting
      jit: use safe iteration when freeing list nodes

Vegard Nossum (4):
      cafebabe: Fix loop variable in cafebabe_attribute_info_init()
      jit: Fix bug in emulate_lcmp()
      Fix erroneous initialisation of static final double fields
      x86: tell valgrind that we changed the JITed code

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

  Powered by Linux