From: Mingyao Yang Date: Fri, 18 Apr 2014 23:49:39 +0000 (-0700) Subject: Add an option to specify a list of methods for LIR dumping. X-Git-Tag: android-x86-7.1-r1~889^2~4349^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=42d65c52bbf4a354605389a759190e793787f692;p=android-x86%2Fart.git Add an option to specify a list of methods for LIR dumping. An example would be: --runtime-arg -verbose-methods:Array.checkRange32,Array.checkRange64 or "-verbose-methods:void Array.checkRange32,void Array.checkRange64" Change-Id: I61c1eb3b2eb4b24126a9264261c27889d53cc6bd --- diff --git a/compiler/dex/frontend.cc b/compiler/dex/frontend.cc index 1bf5fce98..ed2ecace3 100644 --- a/compiler/dex/frontend.cc +++ b/compiler/dex/frontend.cc @@ -181,6 +181,17 @@ static CompiledMethod* CompileMethod(CompilerDriver& driver, (cu.enable_debug & (1 << kDebugVerbose)); } + if (gVerboseMethods.size() != 0) { + cu.verbose = false; + for (size_t i = 0; i < gVerboseMethods.size(); ++i) { + if (PrettyMethod(method_idx, dex_file).find(gVerboseMethods[i]) + != std::string::npos) { + cu.verbose = true; + break; + } + } + } + /* * TODO: rework handling of optimization and debug flags. Should we split out * MIR and backend flags? Need command-line setting as well. diff --git a/runtime/base/logging.cc b/runtime/base/logging.cc index 46b8ff28f..730a2c2cb 100644 --- a/runtime/base/logging.cc +++ b/runtime/base/logging.cc @@ -26,6 +26,8 @@ namespace art { LogVerbosity gLogVerbosity; +std::vector gVerboseMethods; + unsigned int gAborting = 0; static LogSeverity gMinimumLogSeverity = INFO; diff --git a/runtime/base/logging.h b/runtime/base/logging.h index fcec73386..bd5ae85f5 100644 --- a/runtime/base/logging.h +++ b/runtime/base/logging.h @@ -22,6 +22,7 @@ #include // NOLINT #include #include +#include #include "base/macros.h" #include "log_severity.h" #include "UniquePtr.h" @@ -299,6 +300,8 @@ struct LogVerbosity { extern LogVerbosity gLogVerbosity; +extern std::vector gVerboseMethods; + // Used on fatal exit. Prevents recursive aborts. Allows us to disable // some error checking to ensure fatal shutdown makes forward progress. extern unsigned int gAborting; diff --git a/runtime/parsed_options.cc b/runtime/parsed_options.cc index 57d32bb47..e11435d94 100644 --- a/runtime/parsed_options.cc +++ b/runtime/parsed_options.cc @@ -447,6 +447,9 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni return false; } } + } else if (StartsWith(option, "-verbose-methods:")) { + gLogVerbosity.compiler = false; + Split(option.substr(strlen("-verbose-methods:")), ',', gVerboseMethods); } else if (StartsWith(option, "-Xlockprofthreshold:")) { if (!ParseUnsignedInteger(option, ':', &lock_profiling_threshold_)) { return false;