The latest release Jato 0.3 is now available. The release tarball can be found here: http://www.kernel.org/pub/software/java/jato/jato-0.3.tar.bz2 The Git repository can be found here: https://github.com/penberg/jato About Jato ========== 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 such as JRuby, Clojure, and Eclipse on 32-bit x86 Linux machines. Ports to x86-64, ARM, and PPC32 CPUs and Darwin OS are currently under development. Release Notes ============= Applications ------------ * JRuby and Jython are now supported. - GNU Classpath CVS HEAD is required. [ See below for details how to download and install it. ] Performance ----------- * VM startup speed has improved by 25%. * DaCapo benchmark results have improved across the board. - See the following URL for DaCapo results: http://i.imgur.com/eorgM.png JIT --- * The JIT compiler is now able to optimize code before execution. - Transformation of the IR to SSA form and out of SSA form. [ SSA form is not enabled by default. Use '-Xssa' command line option to enable it. ] - Dead code elimination optimization (requires SSA). - Array bounds check elimination (requires SSA). - Inline caching optimization is used on i386 architecture. * The JIT compiler has limited support for ARM and PPC32 architectures. - Don't expect to run real applications on them, though. * The JIT compiler support on the x86-64 architecture has improved significantly. - Not as mature as i386 architecture. VM -- * The VM has a classfile verifier. - It is able to detect classfile corruption and many semantic problems in bytecode. * The VM supports most of the JNI API. GNU Classpath ============= Please use GNU Classpath CVS HEAD with Jato 0.3 for best performance and compatibility. You can use the following Git mirror to fetch the sources: git://icedtea.classpath.org/mirror/git/classpath/classpath See the README file in Jato's source tree for details on how to install GNU Classpath on your machine. Support ======= 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/ --- Changes from v0.2 to v0.3 ========================= The following changes since commit 08c53b4aab143072eb77c505ad90a3dcdf501b9c: Jato 0.2 (2011-05-24 23:06:27 +0300) are available in the git repository at: git@xxxxxxxxxx:penberg/jato.git master Ana Farcasi (51): Fix differently spelled name jit: Fix convert_tableswitch and convert_lookupswitch test/unit: Add test for switch-bc jit: Make sure entry basic block is accounted in compute_dfns() x86: Added INSN_PHI jit: Add SSA optimization infrastructure jit: Fix bugs in ssa.c jit: Added renaming of variables for exception handler basic blocks jit: Fix bug for insn_use_def in ssa.c jit: Fix bug in ssa.c jit: Fix bug in insert_empty_bb jit: Initialize vregs before inserting phi insns jit: Fix bb successors list for tableswitch jit: Fix init of J_DOUBLE and J_FLOAT in SSA jit: Cumulate fixed virtual regesiters in SSA jit: Add support for switch instructions in SSA jit: All virtual regs are defined before they are used jit: Fix bug in resolve data flow x86: Replace if statement with switch in ssa functions jit: Fix exception handler basic block renaming jit: Delete extra empty line in ssa.c jit: Implement insn_add_ons with hash_map test/unit: Add new test for tableswitch jit: Add dead code elimination optimization x86: Fix push_memlocal and pop_memlocal print x86: Fix bug in insert_copy_slot_64_insns jit: Fix bytecode offset of new basic blocks in ssa jit: Optimize resolve_data_flow jit: Replace minimal SSA with pruned SSA jit: Fix bug in control flow graph jit: Add copy folding for SSA form test/unit: Add test in cfg-analyzer-test.c jit: Delete useless computations in ssa jit: Remove useless flags jit: Free worklist jit: Reposition ssa main functions jit: Reduce number of new basic blocks in ssa jit: Improve traversal of a bitset test/unit: Add test for bitset_ffs_from Makefile: Link tcmalloc if present in the system jit: Add imm_copy_propagation jit: Replace doubly-linked lists with simply-linked lists in ssa jit: Fix bb successors list for lookupswitch jit: Resolve warning in SSA test/jit: Fix bug in switch-bc-test test/jit: Add test for lookupswitch jit: Add abc-removal jit: Fix bug in insert_list jit: Compute natural loops jit: Enable SSA only when abc elimination needed Documentation: Add SSA documentation Ankit Laddha (38): arm: Add stub methods so 'make check' links arm: Fix unit tests on ARM arm: Add stubs required for IC and SSA projects arm: Framework so arm porting can start arm: conversion of EXPR_VALUE to LIR arm: Stubs required for SSA project arm: Convert EXPR_LOCAL to LIR arm: Encoding of reg_imm_insn and reg_memlocal_insn arm: Framework so that bytecode-test run on arm arm: fix the broken unit test arm: Add stubs required for SSA project arm: Fix encoding of reg_memlocal_insn arm: Convert STMT_RETURN and VOID_RETURN to LIR arm: Fix the flow of process of encoding insns arm: Encode INSN_MOV_REG_REG arm: Encode INSN_UNCOND_BRANCH arm: Change memory read function arm: Emit the prolog of a function arm: Emit epilog of a function arm: Implement functions for liveness analysis arm: Emission of trampoline started arm: Funtion implementation for register allocation arm: Configured IC calls for ARM arm: set the text alignment in the execution pages arm: Full trampoline support emitted arm: Fix bug in trampoline emission arm: Initial support for bytecode tests arm: Some more bytecode-tests running successfully arm: change one LIR instruction arm: LIR conversion for STMT_STORE arm: Emit INSN_STORE_MEMLOCAL_REG arm: fixup instruction mnemonics arm: Support for negative integers arm: Add support for addition of integers arm: Add more rules to insn selector arm: Support for subtraction arm: Pass more bytecode tests test, integration: reordering the test cases Balagopal (10): jit: Support for multiple entry points to methods. x86: Inline cache with clean and monomorphic states for INVOKEVIRTUAL. x86: Inline cache cleanups x86: Fix compile errors on x86_64 x86: Megamorphic inline cache on x86_32 test/functional: Modify invokevirtual test for better coverage. x86: Add dummy ic_vcall_stub for x86_64 Makefile: Framework to generate asm-offsets test: Added microbenchmark for measuring Inline cache performance. jit: Added -Xnoic to disable inline caching Joonas Reynders (4): vm: Convert classloader trace level to use pthread API vm, gc: Convert gc safepoint flag to use pthread API Converts trace_buffer from __thread to pthread API Convert signal register_state variable from __thread to pthread API Nikhil Sarda (5): reflection: Fix parameter annotation test jit: Make check was failing with a SIGSEGV. test/integration: Added some more bytecode tests. test/integration: Added bytecode tests for istore, lstore, fstore and dstore. vm, gc: Improved error handling. Pekka Enberg (219): vm: Fix VM launcher help text test/functional: Fix broken IsInstanceOf JNI test case test/functional: Disable parameter annotation tests Makefile: Fix 'tags' target to include sys directory arm: Fix 'make check' error caused by missing target test/integration: Fix printf format string error vm: Fix current_exec_env_key definition lib: Add arena memory allocator jit: Use arena allocator for struct var_info and friends x86: Fix do_native_call() miscompilation with '-O3' Makefile: Use GCC '-O3' optimization level Makefile: Use -fno-tree-vectorize on x86-64 jit: Optimize interval_expire_ranges_before() and interval_range_at() vm: Optimize vm_class_is_assignable_from() vm: Make subtype checking faster test, unit: Fix compilation error Revert "vm: Make subtype checking faster" Makefile: Revert back to -Os for 32-bit vm: Add '-XX:+PrintCompilation' command line option test/functional: Rename FieldTest to FieldAccessorsTest runtime: Fix VMClass accessor method compatibility issues test/functional: Enable more test cases in FieldAccessorsTest runtime: Use java_lang_reflect_VMField prefix for native functions vm, runtime: Move VMField functions to runtime/java_lang_reflect_VMField.c reflection: Fix VMField.get() from superclasses jit: Fix uninitialized variable use in analyze_control_flow() vm: Merge 'enum thread_state' to 'enum vm_thread_state' jit: Cleanup jit/compilation-unit.c vm: Add interpreter for OPC_NOP and OPC_RETURN x86: Fix printf format on 64-bit x86-64: Kill broken OP_CMP rule from insn selector x86-64: Fix EXPR_FLOAT_CLASS_FIELD args on stack x86: Fix asm-offsets.c x86-64: Fix STMT_STORE args on stack x86-64: Fix STMT_ARRAY_STORE_CHECK args on stack x86-64: Enable ArrayExceptionsTest Revert "x86-64: Enable ArrayExceptionsTest" x86-64: Fix IntegerAritmethicTest x86-64: Enable PutfieldTest test/functional: Don't use static fields in FloatArithmeticTest test/functional: Don't use static fields in DoubleArithmeticTest x86-64: Kill unused shift_reg_local function x86-64: Fix floating point static field accesses x86-64: Enable more test cases Makefile: Fix unit tests on ARM test/functional: Run EntryTest wíth SSA enabled arm: Fix includes in arch/arm/constant_pool.c arm: Extract insert_to_literal_pool() function arm: Cleanup arch/arm/constant_pool.c a bit arm: Cleanup arch/arm/encode.c ppc: Fix gcc-arch.sh and add missing Makefile ppc: Fix compile error in disassemble.c ppc: Add some architecture specific headers Fix .gitignore for asm-offsets.h ppc, linux: Add stubs for backtrace.c ppc: Kill unused backtrace.c ppc: Add definition for NR_FIXED_REGISTERS ppc: Add more headers and stubs arm: Kill unnecessary 'extern' modifier x86, arm, ppc: Use generic GCC builtins for cmpxchg arm, jit: Move constant-pool.c to generic code x86: Fix alignment link warning in tests test/integration: Fix broken OPC_IFNONNULL test case test/integration: Add more test cases to bytecode-test test/integration: Add i2b and i2c to bytecode-test ppc: Add arch/init.h ppc: Makefile cleanup ppc: Fix config to define CONFIG_32_BIT ppc: Fix register definitions ppc: Add arch/text.h ppc: Implement reg_name() function ppc: Fix up struct jit_stack_frame ppc: Fix signal support compilation errors ppc: Add arch/itable.h vm: Add missing include to method.c ppc: Fix struct native_stack_frame ppc: Define ARCH_NAME ppc: Fix unit test Makefile ppc: Add more stubs to make things compile ppc, linux: Add signal stubs ppc: Implement arch-specific cmpxchg.h Makefile: Let arch/*/include/arch override arch/include x86-64: Fix return value tracing ppc: Implement trampoline support ppc: Add empty rules for instruction selector ppc: Cleanup emit-code.c lib, ppc: Clean up code emission to buffer libharness: Improve assertion messages arm: Fix link error caused by cmpxchg.h test, integration: Disable machine code tracing ppc: Encoding for the 'lis' instruction ppc: Encoding for the 'ori' instruction ppc: Encoding for 'blr' instruction ppc: Implement insn() function ppc: Implement use-def for instructions ppc: Implement instruction helper functions ppc: Implement inline caching stubs properly ppc: Fix some emitter functions x86: User arch-specific cmpxchg jit: Shrink struct var_info on 64-bit x86: Reuse space in 'struct insn' for mach_offset and lir_offset lib: Optimize arena_block_new() x86: Fix switch statement formatting in instruction.c jit, ssa: Reduce imm_copy_propagation() nesting jit: Reduce the size of 'struct insn' ppc: Fix build breakage jit: Lindent jit/dce.c x86: Simplify insn_vreg_{use,def}() arm: Fix build breakage test, integration: Fix Makefile dependencies x86, peephole: Eliminate redundant register stores x86-32: Enable SSA by default lib: Optimize append_buffer() lib: Use bitset_ffs_from() for bitset_ffs() lib: Optimize bitset_ffs_from() Documentation: Add initial version of internals manual x86: Optimize insn_is_call() x86: Make some insn helper functions inline lib: Optimize bitset_copy_to() x86-64: Disable peephole optimizations Makefile: Enable -O3 GCC optimization level again Add Travis CI control file jit: Fix x86-ism in jit/abc-removal.c jit: Fix abc-removal.c x86-isms for good ppc: Save and restore LR in trampoline ppc: STMT_RETURN(reg) instruction selection cafebabe, annotations: Don't call calloc() with zero 'nmemb' test, integration: Fix bytecode test ordering Documentation: Add explanation of resolution blocks Update TODO Documentation: Update section on intermediate representations Documentation: Fix internals.txt formatting Documentation: Explain what BC2IR algorithm means x86, ic: Fix crash in ic_supports_method() vm, preload: Simplify preload code vm, preload: Use macro magic to reduce code duplication vm: Fix "-Xtrace:jit" crash on missing methods x86: Fix invokevirtual and invokeinterface for missing methods cafebabe: Add missing access and property flags x86: Fix invokevirtual and invokeinterface some more vm: Use vm_zalloc() for allocatin struct vm_class vm: Fix alloc_exec_env() to initialize all fields vm: Make sure ->monitor_record is initialized to NULL vm: Fix do_gc_alloc() to zero allocated objects vm, gc: Fix newgc signal handlers vm, gc: Fix newgc signal handling vm, gc: Kill NOT_IMPLEMENTED test, functional: Execute EntryTest with -Xnewgc vm, gc: Add assertion to enter_safepoint() vm, gc: Add assertion to do_exit_safepoint() test, functional: Improve GC torture test jit: Add assertion to jit_text_reserve() vm, gc: Kill dead signal setup code x86-64: Fix instruction encoding rex.w prefixes x86-64: Fix R12 instruction encoding issues x86-64: Fix floating point instruction selection issues x86-64: Partial revert of commit 8ae25fe2f513 x86-64: Fix INSN_SUB_REG_REG 'rex.w' encoding vm: Remove duplicate code in method preload vm, annotations: Fix struct vm_allocation allocation issue vm: Implement fast subtype checking jit: Kill "compile lock" locking primitive Revert "jit: Kill "compile lock" locking primitive" jit: Kill compile lock from 'struct compilation_unit' jit: Kill COMPILATION_STATE_ERROR Document build dependencies for Fedora x86-64: Convert STMT_RETURN(freg) to use MOVSS and MOVSD x86-64: Convert return value tracing to use MOVSS and MOVSD x86-64: Fix EXPR_FLOAT_LOCAL instruction selection x86-64: Enable passing functional tests x86-64: Convert more insn selector rules to use MOVSS and MOVSD x86-64: Use MOVSS and MOVSD in setup_caller_saved_regs() x86-64: Drop XMM support from emit_mov_reg_reg() x86-64: Use insn_encode() for INSN_MOV_REG_REG jit: Use snprintf() in class_name_to_array_name() vm: Add assertions to vm_properties_set_property() x86-64: Fail if type is not supported by retur value tracing x86-64: Fix STMT_STORE instruction selector rule x86: Remove unused variables from instruction selector jit: Add missing stdio.h include Revert "Makefile: Enable -O3 GCC optimization level again" jit: Fix emulate_fcmpl() and emulate_fcmpg() runtime: Add stub for VMThreadMXBeanImpl.getThreadInfoForId() vm: Make vm_class_resolve_and_type() failures less noisy Bump up required GNU Classpath version in README Add documentation on how to profile Jato heap jit: Reduce array bytecode detection memory footprint jit: Introduce and use CU_FLAG_REGALLOC_DONE lib: Simplify 'struct arena' vm, verifier: Dead code removal lib: Remove duplication from arena_alloc() jit: Introduce and use arena_free() lib: Fix 'struct arena_block' linked list x86-64: Fix J_REFERENCE code generation runtime: Move java/lang/VMString code under runtime lib: Fix string.h include guards vm: Remove unused get_classpath() function lib: Introduce and string_from_cstr() API lib, vm: Fix string hash calculation lib: Improve hash_map_get() performance vm: Require slash format class name in classloader_load() lib: Introduce byte swap helper functions lib: Implement new ZIP handling for bootstrap classloader vm: Replace libzip with faster implementation Revert "x86-32: Enable SSA by default" jit: Fix resolution block memory leak jit: Fix memory leaks in jit/subroutine.c vm: Unload classes on VM exit lib: Fix memory leaks in zip.c jit: Avoid allocation in interval_add_range() vm, gc: Don't scan primitive arrays for references vm: Fix use after free in vm_class_resolve_class() Use -fno-omit-frame-pointer GCC optimization flag x86: Simplify do_native_call() and do_native_call_xmm() on 32-bit x86-32: Simplify native_call() x86-32: Use -O3 GCC optimization level Sync before each DaCapo benchmark Revert "x86-32: Simplify native_call()" Jato 0.3 Theo Dzierzbicki (11): vm: Add simple verifier vm: Implemented & tested the verifier state structures. vm, verifier: Almost completely implementing the first verification pass. vm, verifier: Allow modification of blocks by verifier CFG functions. vm, verifier: Reintroduced the verify_* CFG analysis functions. vm, verifier: starting CFG analysis, proper tracing vm, verifier: fixing exception raising. vm, verifier: added corrupted tests to check-functional cafebabe, vm: Added support for the StackMapTable attribute. AUTHORS: added an entry. vm, verifier: added verifications on method overriding and access flags. Tomek Grabiec (1): x86: fix lir printing of pop <reg> insn .gitignore | 2 + .mailmap | 1 + .travis.yml | 2 + AUTHORS | 4 + Documentation/heap-profiling.txt | 17 + Documentation/internals.txt | 199 +++ Makefile | 88 ++- README | 9 +- TODO | 32 - arch/arm/Makefile | 4 + arch/arm/emit-code.c | 169 ++- arch/arm/encode.c | 390 ++++++ arch/arm/include/arch/atomic.h | 12 +- arch/arm/include/arch/byteorder.h | 1 + arch/arm/include/arch/cmpxchg.h | 8 +- arch/arm/include/arch/encode.h | 29 + arch/arm/include/arch/instruction.h | 111 ++- arch/arm/include/arch/memory.h | 12 +- arch/arm/include/arch/registers.h | 44 +- arch/arm/include/arch/text.h | 2 +- arch/arm/include/arch/thread.h | 6 + arch/arm/insn-selector.brg | 441 +++++++ arch/arm/instruction.c | 249 ++++- arch/arm/registers.c | 58 + arch/arm/stack-frame.c | 55 +- arch/arm/stubs_to_compile.c | 119 ++ arch/mmix/include/arch/registers.h | 3 + arch/ppc/Makefile_32 | 19 +- arch/ppc/disassemble.c | 6 +- arch/ppc/emit-code.c | 156 ++- arch/ppc/encode.c | 86 ++ arch/ppc/exception.c | 2 +- arch/ppc/include/arch/atomic.h | 43 + arch/ppc/include/arch/byteorder.h | 1 + arch/ppc/include/arch/cmpxchg.h | 22 + arch/ppc/include/arch/config_32.h | 5 +- arch/ppc/include/arch/encode.h | 152 +++ arch/ppc/include/arch/init.h | 6 + arch/ppc/include/arch/instruction.h | 109 +- arch/ppc/include/arch/itable.h | 9 + arch/ppc/include/arch/memory.h | 25 + arch/ppc/include/arch/registers.h | 127 ++- arch/ppc/include/arch/signal.h | 10 - arch/ppc/include/arch/stack-frame.h | 10 +- arch/ppc/include/arch/text.h | 7 + arch/ppc/init.c | 5 + arch/ppc/insn-selector.brg | 252 ---- arch/ppc/insn-selector_32.brg | 650 +++++++++- arch/ppc/instruction.c | 132 ++ arch/ppc/registers_32.c | 63 + arch/ppc/stubs_to_compile.c | 119 ++ arch/x86/Makefile_32 | 3 + arch/x86/Makefile_64 | 3 + arch/x86/asm-offsets.c | 8 + arch/x86/call.c | 66 +- arch/x86/emit-code.c | 107 +- arch/x86/encode.c | 122 ++- arch/x86/ic_lowlevel_32.S | 26 + arch/x86/ic_lowlevel_64.S | 18 + arch/x86/include/arch/byteorder.h | 1 + arch/x86/include/arch/inline-cache.h | 26 + arch/x86/include/arch/instruction.h | 64 +- arch/x86/include/arch/peephole.h | 8 + arch/x86/include/arch/registers_32.h | 2 +- arch/x86/inline-cache.c | 234 ++++ arch/x86/insn-selector_32.brg | 106 +- arch/x86/insn-selector_64.brg | 591 ++++----- arch/x86/instruction.c | 317 +++++- arch/x86/lir-printer.c | 32 +- arch/x86/peephole.c | 30 + arch/x86/registers_32.c | 2 +- cafebabe/annotations_attribute.c | 10 +- cafebabe/error.c | 2 + cafebabe/stack_map_table_attribute.c | 233 ++++ include/arch/peephole.h | 11 + include/cafebabe/error.h | 1 + include/cafebabe/method_info.h | 7 + include/cafebabe/stack_map_table_attribute.h | 128 ++ include/jit/basic-block.h | 58 +- include/jit/compilation-unit.h | 90 ++- include/jit/compiler.h | 8 + include/jit/constant-pool.h | 21 + include/jit/emit-code.h | 7 +- include/jit/emulate.h | 5 + include/jit/inline-cache.h | 18 + include/jit/instruction.h | 8 + include/jit/ssa.h | 52 + include/jit/use-position.h | 1 + include/jit/vars.h | 16 +- include/lib/arena.h | 53 + include/lib/big-endian.h | 13 + include/lib/bitset.h | 18 +- include/lib/buffer.h | 39 +- include/lib/hash-map.h | 12 +- include/lib/little-endian.h | 13 + include/lib/string.h | 11 +- include/lib/swab.h | 21 + include/lib/zip.h | 43 + .../gnu_java_lang_management_VMThreadMXBeanImpl.h | 8 + include/runtime/java_lang_VMString.h | 8 + include/runtime/java_lang_reflect_VMField.h | 12 + include/vm/boxing.h | 3 + include/vm/bytecode-def.h | 118 +- include/vm/bytecode.h | 8 + include/vm/class.h | 27 +- include/vm/classloader.h | 3 +- include/vm/gc.h | 22 +- include/vm/interp.h | 23 + include/vm/method.h | 31 +- include/vm/object.h | 3 +- include/vm/opcodes.h | 2 + include/vm/preload-classes.h | 71 + include/vm/preload-methods.h | 50 + include/vm/preload.h | 131 +-- include/vm/reflection.h | 12 - include/vm/thread.h | 24 +- include/vm/types.h | 9 + include/vm/verifier.h | 284 +++++ jit/abc-removal.c | 132 ++ jit/basic-block.c | 186 +++- jit/bytecode-to-ir.c | 17 +- jit/cfg-analyzer.c | 17 +- jit/compilation-unit.c | 124 ++- jit/compiler.c | 48 +- jit/constant-pool.c | 80 ++ jit/dce.c | 144 +++ jit/dominance.c | 2 + jit/emit.c | 60 +- jit/emulate.c | 39 +- jit/inline-cache.c | 30 + jit/interval.c | 61 +- jit/linear-scan.c | 40 +- jit/liveness.c | 17 +- jit/object-bc.c | 24 +- jit/spill-reload.c | 34 +- jit/ssa.c | 1335 ++++++++++++++++++++ jit/subroutine.c | 5 + jit/switch-bc.c | 6 +- jit/text.c | 3 + jit/trace-jit.c | 30 +- jit/trampoline.c | 43 +- lib/arena.c | 76 ++ lib/bitset.c | 64 +- lib/hash-map.c | 43 +- lib/string.c | 91 ++- lib/zip.c | 390 ++++++ .../gnu_java_lang_management_VMThreadMXBeanImpl.c | 14 +- runtime/java_lang_VMClass.c | 2 +- runtime/java_lang_VMClassLoader.c | 2 +- arch/ppc/signal.c => runtime/java_lang_VMString.c | 10 +- runtime/java_lang_reflect_VMField.c | 489 +++++++ runtime/reflection.c | 494 +------- scripts/gcc-arch.sh | 3 + scripts/gcc-has-lib.sh | 11 + sys/linux-arm/backtrace.c | 5 + sys/linux-ppc/Makefile | 3 + sys/linux-ppc/backtrace.c | 13 + sys/linux-ppc/exception.c | 10 + sys/linux-ppc/include/sys/signal.h | 22 + sys/linux-ppc/signal.c | 20 + .../CorruptedExceptionTableEndsAfterCode.class | Bin 0 -> 393 bytes .../CorruptedExceptionTableInvalidHandlerPC.class | Bin 0 -> 396 bytes .../CorruptedExceptionTableInvertedBorns.class | Bin 0 -> 393 bytes test/functional/corrupt/CorruptedFallingOff.class | Bin 0 -> 227 bytes .../corrupt/CorruptedIncompleteInsn.class | Bin 0 -> 230 bytes .../corrupt/CorruptedInvalidBranchNeg.class | Bin 0 -> 237 bytes .../corrupt/CorruptedInvalidBranchNotOnInsn.class | Bin 0 -> 243 bytes .../corrupt/CorruptedInvalidBranchOut.class | Bin 0 -> 237 bytes .../corrupt/CorruptedInvalidOpcode.class | Bin 0 -> 230 bytes .../corrupt/CorruptedLoadConstantDouble.class | Bin 0 -> 281 bytes .../corrupt/CorruptedLoadConstantIndex.class | Bin 0 -> 280 bytes .../corrupt/CorruptedLoadConstantSimple.class | Bin 0 -> 281 bytes test/functional/corrupt/CorruptedMaxLocalVar.class | Bin 0 -> 229 bytes test/functional/corrupt/README | 10 + test/functional/java/lang/JNITest.java | 10 +- test/functional/jni/jnitest.c | 2 +- test/functional/jvm/DoubleArithmeticTest.java | 6 +- test/functional/jvm/FloatArithmeticTest.java | 6 +- test/functional/jvm/GcTortureTest.java | 14 +- test/functional/jvm/MethodInvokeVirtualTest.java | 14 +- test/functional/jvm/MethodOverridingFinal.j | 15 + test/functional/jvm/NoSuchMethodErrorTest.j | 18 +- test/functional/jvm/lang/reflect/FieldTest.java | 938 -------------- .../test/java/lang/reflect/FieldAccessorsTest.java | 970 ++++++++++++++ .../test/java/lang/reflect/MethodTest.java | 28 +- test/integration/Makefile | 2 + test/integration/bytecode-test.c | 227 +++- test/perf/ICTime.java | 1095 ++++++++++++++++ test/unit/arch-arm/Makefile | 39 +- test/unit/arch-arm/compilation-unit-stub.c | 61 + test/unit/arch-arm/encode-test.c | 222 ++++ test/unit/arch-arm/insn-selector-test.c | 164 +++ test/unit/arch-ppc/Makefile | 22 + test/unit/arch-ppc/encode-test.c | 101 ++ test/unit/arch-ppc_32/Makefile | 1 - test/unit/arch-x86/Makefile | 1 + test/unit/arch-x86/encode-test.c | 129 ++- test/unit/jit/Makefile | 4 + test/unit/jit/arithmetic-bc-test.c | 2 +- test/unit/jit/cfg-analyzer-test.c | 41 + test/unit/jit/exception-stub.c | 6 + test/unit/jit/linear-scan-test.c | 12 +- test/unit/jit/live-range-test.c | 2 + test/unit/jit/switch-bc-test.c | 241 ++++ test/unit/jit/trace-stub.c | 12 +- test/unit/libharness/libharness.c | 3 +- test/unit/vm/Makefile | 7 + test/unit/vm/bitset-test.c | 25 + test/unit/vm/class-stub.c | 3 +- test/unit/vm/method-stub.c | 10 + test/unit/vm/object-stub.c | 3 +- test/unit/vm/preload-stub.c | 1 + test/unit/vm/thread-stub.c | 4 + test/unit/vm/verifier-test.c | 325 +++++ tools/test.py | 38 +- torture/dacapo/compare-dacapo | 1 + vm/annotation.c | 4 +- vm/boehm-gc.c | 34 +- vm/bytecode.c | 151 +++ vm/class.c | 89 +- vm/classloader.c | 206 ++-- vm/gc.c | 62 +- vm/interp.c | 267 ++++ vm/jar.c | 54 +- vm/jato.c | 155 ++- vm/jni-interface.c | 2 +- vm/method.c | 40 +- vm/object.c | 35 +- vm/preload.c | 519 +-------- vm/signal.c | 9 +- vm/string.c | 2 +- vm/thread.c | 15 +- vm/trace.c | 16 +- vm/verifier.c | 990 +++++++++++++++ vm/verify-functions.c | 1121 ++++++++++++++++ 235 files changed, 16644 insertions(+), 3798 deletions(-) create mode 100644 .travis.yml create mode 100644 Documentation/heap-profiling.txt create mode 100644 Documentation/internals.txt create mode 100644 arch/arm/encode.c create mode 100644 arch/arm/include/arch/byteorder.h create mode 100644 arch/arm/include/arch/encode.h create mode 100644 arch/arm/include/arch/inline-cache.h create mode 100644 arch/arm/include/arch/thread.h create mode 100644 arch/arm/insn-selector.brg create mode 100644 arch/arm/registers.c create mode 100644 arch/arm/stubs_to_compile.c create mode 100644 arch/ppc/encode.c create mode 100644 arch/ppc/include/arch/atomic.h create mode 100644 arch/ppc/include/arch/byteorder.h create mode 100644 arch/ppc/include/arch/cmpxchg.h create mode 100644 arch/ppc/include/arch/encode.h create mode 100644 arch/ppc/include/arch/init.h create mode 100644 arch/ppc/include/arch/inline-cache.h create mode 100644 arch/ppc/include/arch/itable.h create mode 100644 arch/ppc/include/arch/memory.h delete mode 100644 arch/ppc/include/arch/signal.h create mode 100644 arch/ppc/include/arch/text.h create mode 100644 arch/ppc/init.c delete mode 100644 arch/ppc/insn-selector.brg create mode 100644 arch/ppc/registers_32.c create mode 100644 arch/ppc/stubs_to_compile.c create mode 100644 arch/x86/asm-offsets.c create mode 100644 arch/x86/ic_lowlevel_32.S create mode 100644 arch/x86/ic_lowlevel_64.S create mode 100644 arch/x86/include/arch/byteorder.h create mode 100644 arch/x86/include/arch/inline-cache.h create mode 100644 arch/x86/include/arch/peephole.h create mode 100644 arch/x86/inline-cache.c create mode 100644 arch/x86/peephole.c create mode 100644 cafebabe/stack_map_table_attribute.c create mode 100644 include/arch/peephole.h create mode 100644 include/cafebabe/stack_map_table_attribute.h create mode 100644 include/jit/constant-pool.h create mode 100644 include/jit/inline-cache.h create mode 100644 include/jit/ssa.h create mode 100644 include/lib/arena.h create mode 100644 include/lib/big-endian.h create mode 100644 include/lib/little-endian.h create mode 100644 include/lib/swab.h create mode 100644 include/lib/zip.h create mode 100644 include/runtime/gnu_java_lang_management_VMThreadMXBeanImpl.h create mode 100644 include/runtime/java_lang_VMString.h create mode 100644 include/vm/interp.h create mode 100644 include/vm/preload-classes.h create mode 100644 include/vm/preload-methods.h create mode 100644 include/vm/verifier.h create mode 100644 jit/abc-removal.c create mode 100644 jit/constant-pool.c create mode 100644 jit/dce.c create mode 100644 jit/inline-cache.c create mode 100644 jit/ssa.c create mode 100644 lib/arena.c create mode 100644 lib/zip.c rename arch/ppc/backtrace.c => runtime/gnu_java_lang_management_VMThreadMXBeanImpl.c (83%) rename arch/ppc/signal.c => runtime/java_lang_VMString.c (87%) create mode 100755 scripts/gcc-has-lib.sh create mode 100644 sys/linux-ppc/Makefile create mode 100644 sys/linux-ppc/backtrace.c create mode 100644 sys/linux-ppc/exception.c create mode 100644 sys/linux-ppc/include/sys/signal.h create mode 100644 sys/linux-ppc/signal.c create mode 100644 test/functional/corrupt/CorruptedExceptionTableEndsAfterCode.class create mode 100644 test/functional/corrupt/CorruptedExceptionTableInvalidHandlerPC.class create mode 100644 test/functional/corrupt/CorruptedExceptionTableInvertedBorns.class create mode 100644 test/functional/corrupt/CorruptedFallingOff.class create mode 100644 test/functional/corrupt/CorruptedIncompleteInsn.class create mode 100644 test/functional/corrupt/CorruptedInvalidBranchNeg.class create mode 100644 test/functional/corrupt/CorruptedInvalidBranchNotOnInsn.class create mode 100644 test/functional/corrupt/CorruptedInvalidBranchOut.class create mode 100644 test/functional/corrupt/CorruptedInvalidOpcode.class create mode 100644 test/functional/corrupt/CorruptedLoadConstantDouble.class create mode 100644 test/functional/corrupt/CorruptedLoadConstantIndex.class create mode 100644 test/functional/corrupt/CorruptedLoadConstantSimple.class create mode 100644 test/functional/corrupt/CorruptedMaxLocalVar.class create mode 100644 test/functional/corrupt/README create mode 100644 test/functional/jvm/MethodOverridingFinal.j delete mode 100644 test/functional/jvm/lang/reflect/FieldTest.java create mode 100644 test/functional/test/java/lang/reflect/FieldAccessorsTest.java create mode 100644 test/perf/ICTime.java create mode 100644 test/unit/arch-arm/compilation-unit-stub.c create mode 100644 test/unit/arch-arm/encode-test.c create mode 100644 test/unit/arch-arm/insn-selector-test.c create mode 100644 test/unit/arch-ppc/Makefile create mode 100644 test/unit/arch-ppc/encode-test.c delete mode 100644 test/unit/arch-ppc_32/Makefile create mode 100644 test/unit/jit/exception-stub.c create mode 100644 test/unit/jit/switch-bc-test.c create mode 100644 test/unit/vm/method-stub.c create mode 100644 test/unit/vm/verifier-test.c create mode 100644 vm/interp.c create mode 100644 vm/verifier.c create mode 100644 vm/verify-functions.c