From 28a35887033652f3c1344bc3f46f5a1368023996 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Thu, 26 Feb 2015 18:28:07 -0800 Subject: [PATCH] Fix JIT direct call to interpreter bridge FormulaEvaluationActions.EvaluateAndApplyChanges on hammerhead eng: Before: 3550ms After: 2540 Bug: 17950037 Change-Id: If7acaea20d4adb5418d00ef13192e2d4c29032af --- compiler/driver/compiler_driver.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index 15b3d08a3..90e63e967 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(compiler_->GetEntryPointOf(method)))) { + use_dex_cache = true; + } + } if (method_code_in_boot) { *stats_flags |= kFlagDirectCallToBoot | kFlagDirectMethodToBoot; } -- 2.11.0