From cad65427d39c8ca9849d49d049ca6d263ada938a Mon Sep 17 00:00:00 2001 From: Jeff Hao Date: Thu, 18 Jun 2015 21:16:08 -0700 Subject: Fix StringChange for optimizing compiler. Uses optimizing compiler more and fixes x86_64 invoke codegen. Bug: 21902634 (cherry-picked from commit e0a9a53ec4b4ccbf9b1d67957fb99a45b469ccc2) Change-Id: I56881889bee7092b8401b090af1c0f1004c11667 --- compiler/optimizing/builder.cc | 2 +- compiler/optimizing/code_generator_x86_64.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'compiler') diff --git a/compiler/optimizing/builder.cc b/compiler/optimizing/builder.cc index 946c0602cf..a70fdc6e20 100644 --- a/compiler/optimizing/builder.cc +++ b/compiler/optimizing/builder.cc @@ -661,7 +661,7 @@ bool HGraphBuilder::BuildInvoke(const Instruction& instruction, (target_method.dex_method_index == outer_compilation_unit_->GetDexMethodIndex()) && (target_method.dex_file == outer_compilation_unit_->GetDexFile()); - if (optimized_invoke_type == kStatic) { + if (optimized_invoke_type == kStatic && !is_string_init) { ScopedObjectAccess soa(Thread::Current()); StackHandleScope<4> hs(soa.Self()); Handle dex_cache(hs.NewHandle( diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc index bfc827de1c..757e89f5b7 100644 --- a/compiler/optimizing/code_generator_x86_64.cc +++ b/compiler/optimizing/code_generator_x86_64.cc @@ -373,7 +373,7 @@ void CodeGeneratorX86_64::GenerateStaticOrDirectCall(HInvokeStaticOrDirect* invo if (invoke->IsStringInit()) { CpuRegister reg = temp.AsRegister(); // temp = thread->string_init_entrypoint - __ gs()->movl(reg, Address::Absolute(invoke->GetStringInitOffset())); + __ gs()->movq(reg, Address::Absolute(invoke->GetStringInitOffset(), true)); // (temp + offset_of_quick_compiled_code)() __ call(Address(reg, ArtMethod::EntryPointFromQuickCompiledCodeOffset( kX86_64WordSize).SizeValue())); -- cgit v1.2.3-59-g8ed1b