diff options
Diffstat (limited to 'runtime/interpreter/interpreter.cc')
| -rw-r--r-- | runtime/interpreter/interpreter.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc index 4fd3c78f44..a595d33f04 100644 --- a/runtime/interpreter/interpreter.cc +++ b/runtime/interpreter/interpreter.cc @@ -320,12 +320,13 @@ static inline JValue Execute(Thread* self, const DexFile::CodeItem* code_item, // No Mterp variant - just use the switch interpreter. return ExecuteSwitchImpl<false, true>(self, code_item, shadow_frame, result_register, false); + } else if (UNLIKELY(!Runtime::Current()->IsStarted())) { + return ExecuteSwitchImpl<false, false>(self, code_item, shadow_frame, result_register, + false); } else { - const instrumentation::Instrumentation* const instrumentation = - Runtime::Current()->GetInstrumentation(); while (true) { - if (instrumentation->IsActive() || !Runtime::Current()->IsStarted()) { - // TODO: allow JIT profiling instrumentation. Now, just punt on all instrumentation. + // Mterp does not support all instrumentation/debugging. + if (MterpShouldSwitchInterpreters()) { #if !defined(__clang__) return ExecuteGotoImpl<false, false>(self, code_item, shadow_frame, result_register); #else |