OSDN Git Service

Implement on-stack replacement for arm/arm64/x86/x86_64.
authorNicolas Geoffray <ngeoffray@google.com>
Fri, 29 Jan 2016 12:40:13 +0000 (12:40 +0000)
committerNicolas Geoffray <ngeoffray@google.com>
Fri, 5 Feb 2016 11:48:04 +0000 (11:48 +0000)
commit891bc286963892ed96134ca1adb7822737af9710
tree596055109b4eed1a41ae61dbec76ad9d5a1d78df
parent586996afc905518ed926e4680aab67bedabec9b7
Implement on-stack replacement for arm/arm64/x86/x86_64.

High-level overview:
- osr_method_threshold is used to know when to compile a method
  in osr mode (-> treat all loops as irreducible).
- branch instructions in the compiler query whether they can
  jump to an osr method.
- An osr entry point is found through the stack maps: if a stack
  map is duplicated in the CodeInfo, it is an osr entry point.

Change-Id: Ifb39338cd281e2c7eccce67f4e18d46428be71e4
38 files changed:
compiler/compiler.h
compiler/jit/jit_compiler.cc
compiler/jit/jit_compiler.h
compiler/optimizing/builder.cc
compiler/optimizing/builder.h
compiler/optimizing/code_generator.cc
compiler/optimizing/code_generator.h
compiler/optimizing/inliner.cc
compiler/optimizing/nodes.cc
compiler/optimizing/nodes.h
compiler/optimizing/optimizing_compiler.cc
runtime/arch/arm/quick_entrypoints_arm.S
runtime/arch/arm64/quick_entrypoints_arm64.S
runtime/arch/x86/quick_entrypoints_x86.S
runtime/arch/x86_64/quick_entrypoints_x86_64.S
runtime/art_method.cc
runtime/entrypoints/entrypoint_utils.cc
runtime/interpreter/interpreter_goto_table_impl.cc
runtime/interpreter/interpreter_switch_impl.cc
runtime/jit/jit.cc
runtime/jit/jit.h
runtime/jit/jit_code_cache.cc
runtime/jit/jit_code_cache.h
runtime/jit/jit_instrumentation.cc
runtime/jit/jit_instrumentation.h
runtime/oat_quick_method_header.h
runtime/runtime.cc
runtime/stack.cc
runtime/stack_map.h
runtime/thread.cc
runtime/thread.h
test/570-checker-osr/expected.txt [new file with mode: 0644]
test/570-checker-osr/info.txt [new file with mode: 0644]
test/570-checker-osr/osr.cc [new file with mode: 0644]
test/570-checker-osr/smali/Osr.smali [new file with mode: 0644]
test/570-checker-osr/src/DeoptimizationController.java [new file with mode: 0644]
test/570-checker-osr/src/Main.java [new file with mode: 0644]
test/Android.libarttest.mk