diff options
Diffstat (limited to 'runtime/instrumentation.cc')
-rw-r--r-- | runtime/instrumentation.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/runtime/instrumentation.cc b/runtime/instrumentation.cc index 9d05169..01ad46d 100644 --- a/runtime/instrumentation.cc +++ b/runtime/instrumentation.cc @@ -80,9 +80,19 @@ static void UpdateEntrypoints(mirror::ArtMethod* method, const void* quick_code, method->ClearIsPortableCompiled(); } if (!method->IsResolutionMethod()) { - if (quick_code == GetQuickToInterpreterBridge()) { - DCHECK(portable_code == GetPortableToInterpreterBridge()); + if (quick_code == GetQuickToInterpreterBridge() || + (quick_code == GetQuickResolutionTrampoline(Runtime::Current()->GetClassLinker()) && + Runtime::Current()->GetInstrumentation()->IsForcedInterpretOnly() + && !method->IsNative() && !method->IsProxyMethod())) { + if (kIsDebugBuild) { + if (quick_code == GetQuickToInterpreterBridge()) { + DCHECK(portable_code == GetPortableToInterpreterBridge()); + } else if (quick_code == GetQuickResolutionTrampoline(Runtime::Current()->GetClassLinker())) { + DCHECK(portable_code == GetPortableResolutionTrampoline(Runtime::Current()->GetClassLinker())); + } + } DCHECK(!method->IsNative()) << PrettyMethod(method); + DCHECK(!method->IsProxyMethod()) << PrettyMethod(method); method->SetEntryPointFromInterpreter(art::interpreter::artInterpreterToInterpreterBridge); } else { method->SetEntryPointFromInterpreter(art::artInterpreterToCompiledCodeBridge); |