OSDN Git Service

Improve performance of invokevirtual/invokeinterface with embedded imt/vtable
authorMingyao Yang <mingyao@google.com>
Fri, 16 May 2014 00:02:16 +0000 (17:02 -0700)
committerIan Rogers <irogers@google.com>
Sat, 12 Jul 2014 00:17:10 +0000 (17:17 -0700)
commit98d1cc8033251c93786e2fa8c59a2e555a9493be
treef0a76b8fff060ee484af09028da65a8339d57057
parentaebf3cda094f34cf846d19a7724bdc8005267c95
Improve performance of invokevirtual/invokeinterface with embedded imt/vtable

Add an embedded version of imt/vtable into class object. Both tables start at
fixed offset within class object so method/entry point can be loaded directly
from class object for invokeinterface/invokevirtual.

Bug: 8142917
Change-Id: I4240d58cfbe9250107c95c0708c036854c455968
78 files changed:
compiler/compiled_class.h [moved from runtime/compiled_class.h with 88% similarity]
compiler/compilers.cc
compiler/dex/quick/gen_invoke.cc
compiler/dex/quick/x86/int_x86.cc
compiler/driver/compiler_driver-inl.h
compiler/driver/compiler_driver.cc
compiler/driver/compiler_driver.h
compiler/image_writer.cc
compiler/image_writer.h
compiler/jni/quick/jni_compiler.cc
compiler/oat_writer.cc
oatdump/oatdump.cc
runtime/arch/arm/entrypoints_init_arm.cc
runtime/arch/arm64/entrypoints_init_arm64.cc
runtime/arch/mips/entrypoints_init_mips.cc
runtime/arch/stub_test.cc
runtime/arch/x86/entrypoints_init_x86.cc
runtime/arch/x86_64/entrypoints_init_x86_64.cc
runtime/class_linker.cc
runtime/class_linker.h
runtime/class_linker_test.cc
runtime/entrypoints/entrypoint_utils-inl.h [new file with mode: 0644]
runtime/entrypoints/entrypoint_utils.cc
runtime/entrypoints/entrypoint_utils.h
runtime/entrypoints/math_entrypoints.cc
runtime/entrypoints/portable/portable_alloc_entrypoints.cc
runtime/entrypoints/portable/portable_cast_entrypoints.cc
runtime/entrypoints/portable/portable_dexcache_entrypoints.cc
runtime/entrypoints/portable/portable_field_entrypoints.cc
runtime/entrypoints/portable/portable_fillarray_entrypoints.cc
runtime/entrypoints/portable/portable_invoke_entrypoints.cc
runtime/entrypoints/portable/portable_jni_entrypoints.cc
runtime/entrypoints/portable/portable_lock_entrypoints.cc
runtime/entrypoints/portable/portable_thread_entrypoints.cc
runtime/entrypoints/portable/portable_throw_entrypoints.cc
runtime/entrypoints/portable/portable_trampoline_entrypoints.cc
runtime/entrypoints/quick/quick_alloc_entrypoints.cc
runtime/entrypoints/quick/quick_dexcache_entrypoints.cc
runtime/entrypoints/quick/quick_field_entrypoints.cc
runtime/entrypoints/quick/quick_instrumentation_entrypoints.cc
runtime/entrypoints/quick/quick_jni_entrypoints.cc
runtime/entrypoints/quick/quick_thread_entrypoints.cc
runtime/entrypoints/quick/quick_throw_entrypoints.cc
runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
runtime/instrumentation.cc
runtime/interpreter/interpreter_common.h
runtime/mirror/array-inl.h
runtime/mirror/array.h
runtime/mirror/art_field-inl.h
runtime/mirror/art_field.h
runtime/mirror/art_method-inl.h
runtime/mirror/art_method.cc
runtime/mirror/art_method.h
runtime/mirror/class-inl.h
runtime/mirror/class.cc
runtime/mirror/class.h
runtime/mirror/class_loader.h
runtime/mirror/dex_cache-inl.h
runtime/mirror/dex_cache.h
runtime/mirror/iftable.h
runtime/mirror/object-inl.h
runtime/mirror/object.h
runtime/mirror/object_array.h
runtime/mirror/object_test.cc
runtime/mirror/proxy.h
runtime/mirror/stack_trace_element.h
runtime/mirror/string-inl.h
runtime/mirror/string.h
runtime/native/java_lang_Class.cc
runtime/native/java_lang_reflect_Method.cc
runtime/oat_file.h
runtime/object_callbacks.h
runtime/object_utils.h
runtime/quick_exception_handler.cc
runtime/runtime.cc
runtime/thread.h
runtime/utils.h
runtime/verifier/method_verifier_test.cc