summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2015-06-22 14:35:42 +0100
committerVladimir Marko <vmarko@google.com>2015-06-22 16:54:07 +0100
commit421e495c9bc53649605639dd738b8da8669147f1 (patch)
tree071a7c7c13c26c70a4ea6a364f8f50d3cc8c17b3 /compiler
parenta6efe5e813457a1c7946a1e6c62646b7bd1150df (diff)
downloadart-421e495c9bc53649605639dd738b8da8669147f1.zip
art-421e495c9bc53649605639dd738b8da8669147f1.tar.gz
art-421e495c9bc53649605639dd738b8da8669147f1.tar.bz2
ART: Don't do pre-linked calls to the interpreter bridge.
Bug: 21897404 (cherry picked from commit c08ab29796eeaa3b5863fbd987cd96fe7538d40c) Change-Id: I66531379fb4468a8ddee063e664bf6593abbe7d5
Diffstat (limited to 'compiler')
-rw-r--r--compiler/driver/compiler_driver.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc
index e5fa54e..19085cd 100644
--- a/compiler/driver/compiler_driver.cc
+++ b/compiler/driver/compiler_driver.cc
@@ -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.