- Subject: [ANNOUNCE] Jato v0.2 - a JIT-only virtual machine for Java
- From: Pekka Enberg <penberg@xxxxxxxxxx>
- Date: Tue, 24 May 2011 23:54:49 +0300
- Cc: lwn@xxxxxxx
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
CVS:
https://github.com/penberg/classpath
The source code for Jato is available for download here:
http://www.kernel.org/pub/software/java/jato/jato-0.2.tar.bz2
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:
http://groups.google.com/group/jatovm?hl=en
You can also report problems on Github:
https://github.com/penberg/jato/issues
For more information, please check out the Jato home page:
http://www.jatovm.org/
Pekka
---
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
[Linux Kernel]
[Linux Cryptography]
[Fedora]
[Fedora Directory]
[Red Hat Development]