diff options
author | Mathieu Chartier <mathieuc@google.com> | 2015-02-27 02:58:48 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-02-27 02:58:48 +0000 |
commit | 242026e246a8b9efe098a0cce008fd525e011e5b (patch) | |
tree | 07a9c0f0fe6a3193933f1b3cc7623e7ca82b0023 | |
parent | 0a575f25c56c8fff485a1dd497ed1efb1b5d3ea9 (diff) | |
parent | 28a35887033652f3c1344bc3f46f5a1368023996 (diff) | |
download | art-242026e246a8b9efe098a0cce008fd525e011e5b.zip art-242026e246a8b9efe098a0cce008fd525e011e5b.tar.gz art-242026e246a8b9efe098a0cce008fd525e011e5b.tar.bz2 |
Merge "Fix JIT direct call to interpreter bridge"
-rw-r--r-- | compiler/driver/compiler_driver.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index 15b3d08..90e63e9 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -1316,6 +1316,14 @@ void CompilerDriver::GetCodeAndMethodForDirectCall(InvokeType* type, InvokeType } } } + if (runtime->UseJit()) { + // If we are the JIT, then don't allow a direct call to the interpreter bridge since this will + // never be updated even after we compile the method. + if (runtime->GetClassLinker()->IsQuickToInterpreterBridge( + reinterpret_cast<const void*>(compiler_->GetEntryPointOf(method)))) { + use_dex_cache = true; + } + } if (method_code_in_boot) { *stats_flags |= kFlagDirectCallToBoot | kFlagDirectMethodToBoot; } |