diff options
| -rw-r--r-- | cmdline/cmdline_types.h | 2 | ||||
| -rw-r--r-- | runtime/base/logging.h | 1 | ||||
| -rw-r--r-- | runtime/entrypoints/quick/quick_deoptimization_entrypoints.cc | 7 |
3 files changed, 10 insertions, 0 deletions
diff --git a/cmdline/cmdline_types.h b/cmdline/cmdline_types.h index 03165ed5a6..e02fe4b6a0 100644 --- a/cmdline/cmdline_types.h +++ b/cmdline/cmdline_types.h @@ -579,6 +579,8 @@ struct CmdlineType<LogVerbosity> : CmdlineTypeParser<LogVerbosity> { log_verbosity.class_linker = true; } else if (verbose_options[j] == "compiler") { log_verbosity.compiler = true; + } else if (verbose_options[j] == "deopt") { + log_verbosity.deopt = true; } else if (verbose_options[j] == "gc") { log_verbosity.gc = true; } else if (verbose_options[j] == "heap") { diff --git a/runtime/base/logging.h b/runtime/base/logging.h index 8b34374560..35b50d1e45 100644 --- a/runtime/base/logging.h +++ b/runtime/base/logging.h @@ -39,6 +39,7 @@ enum LogSeverity { struct LogVerbosity { bool class_linker; // Enabled with "-verbose:class". bool compiler; + bool deopt; bool gc; bool heap; bool jdwp; diff --git a/runtime/entrypoints/quick/quick_deoptimization_entrypoints.cc b/runtime/entrypoints/quick/quick_deoptimization_entrypoints.cc index 6a8aaf2610..1b1ef66c76 100644 --- a/runtime/entrypoints/quick/quick_deoptimization_entrypoints.cc +++ b/runtime/entrypoints/quick/quick_deoptimization_entrypoints.cc @@ -14,6 +14,7 @@ * limitations under the License. */ +#include "base/logging.h" #include "callee_save_frame.h" #include "dex_file-inl.h" #include "interpreter/interpreter.h" @@ -29,6 +30,12 @@ namespace art { extern "C" NO_RETURN void artDeoptimize(Thread* self) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { ScopedQuickEntrypointChecks sqec(self); + + if (VLOG_IS_ON(deopt)) { + LOG(INFO) << "Deopting:"; + self->Dump(LOG(INFO)); + } + self->SetException(Thread::GetDeoptimizationException()); self->QuickDeliverException(); } |