OSDN Git Service

Avoid use of std::string where we have const char*.
authorIan Rogers <irogers@google.com>
Tue, 12 Aug 2014 09:30:58 +0000 (02:30 -0700)
committerIan Rogers <irogers@google.com>
Wed, 13 Aug 2014 17:19:45 +0000 (10:19 -0700)
commitcb6b0f31ede2275e79e6199ec391147585a37a2a
tree91eba661ab7dd329463104da33395d85df521399
parent5f1dcee2b3cdaf0f745958ff366a84279940c65e
Avoid use of std::string where we have const char*.

Removing the ClassHelper caused std::string creation for all calls to
Class::GetDescriptor and a significant performance regression. Make the
std::string an out argument so the caller can maintain it and its life time
while allowing GetDescriptor to return the common const char* case.

Don't generate GC maps when compilation is disabled.

Remove other uses of std::string that are occuring on critical paths.
Use the cheaper SkipClass in CompileMethod in CompilerDriver.
Specialize the utf8 as utf16 comparison code for the common shorter byte
encoding.
Force a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing
code), add some LIKELYs.

x86-64 host 1-thread interpret-only of 57 apks:
Before: 29.539s
After: 23.467s

Regular compile:
Before: 1m35.347s
After: 1m20.056s

Bug: 16853450
Change-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad

Conflicts:
runtime/utils.cc
44 files changed:
compiler/common_compiler_test.cc
compiler/dex/frontend.cc
compiler/dex/verification_results.cc
compiler/dex/verification_results.h
compiler/driver/compiler_driver.cc
compiler/driver/compiler_driver.h
compiler/image_test.cc
compiler/image_writer.cc
dex2oat/dex2oat.cc
oatdump/oatdump.cc
runtime/base/mutex-inl.h
runtime/class_linker-inl.h
runtime/class_linker.cc
runtime/class_linker_test.cc
runtime/common_throws.cc
runtime/debugger.cc
runtime/field_helper.cc
runtime/gc/heap.cc
runtime/interpreter/interpreter_common.cc
runtime/interpreter/interpreter_goto_table_impl.cc
runtime/interpreter/interpreter_switch_impl.cc
runtime/jni_internal.cc
runtime/leb128.h
runtime/method_helper-inl.h
runtime/method_helper.cc
runtime/method_helper.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/object_test.cc
runtime/native/java_lang_reflect_Array.cc
runtime/proxy_test.cc
runtime/reflection.cc
runtime/utf-inl.h
runtime/utf.h
runtime/utils.cc
runtime/utils.h
runtime/verifier/method_verifier.cc
runtime/verifier/reg_type.cc
runtime/verifier/reg_type_cache.cc
runtime/verifier/reg_type_cache.h