OSDN Git Service

ART: Don't do pre-linked calls to the interpreter bridge.
authorVladimir Marko <vmarko@google.com>
Mon, 22 Jun 2015 13:35:42 +0000 (14:35 +0100)
committerVladimir Marko <vmarko@google.com>
Mon, 22 Jun 2015 15:54:07 +0000 (16:54 +0100)
Bug: 21897404

(cherry picked from commit c08ab29796eeaa3b5863fbd987cd96fe7538d40c)

Change-Id: I66531379fb4468a8ddee063e664bf6593abbe7d5

compiler/driver/compiler_driver.cc

index e5fa54e..19085cd 100644 (file)
@@ -1410,7 +1410,9 @@ void CompilerDriver::GetCodeAndMethodForDirectCall(InvokeType* type, InvokeType
       is_in_image = IsImageClass(method->GetDeclaringClassDescriptor());
     } else {
       is_in_image = instruction_set_ != kX86 && instruction_set_ != kX86_64 &&
-                    heap->FindSpaceFromObject(method->GetDeclaringClass(), false)->IsImageSpace();
+                    heap->FindSpaceFromObject(method->GetDeclaringClass(), false)->IsImageSpace() &&
+                    !cl->IsQuickToInterpreterBridge(
+                        reinterpret_cast<const void*>(compiler_->GetEntryPointOf(method)));
     }
     if (!is_in_image) {
       // We can only branch directly to Methods that are resolved in the DexCache.