diff options
author | Andreas Gampe <agampe@google.com> | 2015-03-04 21:12:27 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-03-04 21:12:27 +0000 |
commit | c670efd6ba9dbd1166bfd8c805bb6b2df7d4313a (patch) | |
tree | d112f34d4926e9b6fc3adf9504303fdddb22b7d3 | |
parent | 029113f1013e2ce9027ea241a68f93072ce1bfe9 (diff) | |
parent | 7b2f09eb6b5c74ffc38bd70f0aa74b8f8112e394 (diff) | |
download | android_art-c670efd6ba9dbd1166bfd8c805bb6b2df7d4313a.tar.gz android_art-c670efd6ba9dbd1166bfd8c805bb6b2df7d4313a.tar.bz2 android_art-c670efd6ba9dbd1166bfd8c805bb6b2df7d4313a.zip |
Merge "ART: Add debuggable compiler flag"
-rw-r--r-- | compiler/driver/compiler_options.cc | 3 | ||||
-rw-r--r-- | compiler/driver/compiler_options.h | 6 | ||||
-rw-r--r-- | compiler/jit/jit_compiler.cc | 1 | ||||
-rw-r--r-- | dex2oat/dex2oat.cc | 8 | ||||
-rw-r--r-- | runtime/runtime.cc | 4 |
5 files changed, 22 insertions, 0 deletions
diff --git a/compiler/driver/compiler_options.cc b/compiler/driver/compiler_options.cc index 09ec9a2973..067e1bd7d6 100644 --- a/compiler/driver/compiler_options.cc +++ b/compiler/driver/compiler_options.cc @@ -30,6 +30,7 @@ CompilerOptions::CompilerOptions() generate_gdb_information_(false), include_patch_information_(kDefaultIncludePatchInformation), top_k_profile_threshold_(kDefaultTopKProfileThreshold), + debuggable_(false), include_debug_symbols_(kDefaultIncludeDebugSymbols), implicit_null_checks_(true), implicit_so_checks_(true), @@ -49,6 +50,7 @@ CompilerOptions::CompilerOptions(CompilerFilter compiler_filter, bool generate_gdb_information, bool include_patch_information, double top_k_profile_threshold, + bool debuggable, bool include_debug_symbols, bool implicit_null_checks, bool implicit_so_checks, @@ -67,6 +69,7 @@ CompilerOptions::CompilerOptions(CompilerFilter compiler_filter, generate_gdb_information_(generate_gdb_information), include_patch_information_(include_patch_information), top_k_profile_threshold_(top_k_profile_threshold), + debuggable_(debuggable), include_debug_symbols_(include_debug_symbols), implicit_null_checks_(implicit_null_checks), implicit_so_checks_(implicit_so_checks), diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h index 0683d185e6..fecc600d64 100644 --- a/compiler/driver/compiler_options.h +++ b/compiler/driver/compiler_options.h @@ -62,6 +62,7 @@ class CompilerOptions FINAL { bool generate_gdb_information, bool include_patch_information, double top_k_profile_threshold, + bool debuggable, bool include_debug_symbols, bool implicit_null_checks, bool implicit_so_checks, @@ -128,6 +129,10 @@ class CompilerOptions FINAL { return top_k_profile_threshold_; } + bool GetDebuggable() const { + return debuggable_; + } + bool GetIncludeDebugSymbols() const { return include_debug_symbols_; } @@ -189,6 +194,7 @@ class CompilerOptions FINAL { const bool include_patch_information_; // When using a profile file only the top K% of the profiled samples will be compiled. const double top_k_profile_threshold_; + const bool debuggable_; const bool include_debug_symbols_; const bool implicit_null_checks_; const bool implicit_so_checks_; diff --git a/compiler/jit/jit_compiler.cc b/compiler/jit/jit_compiler.cc index 0283791e28..ff98d4af23 100644 --- a/compiler/jit/jit_compiler.cc +++ b/compiler/jit/jit_compiler.cc @@ -72,6 +72,7 @@ JitCompiler::JitCompiler() : total_time_(0) { false, false, CompilerOptions::kDefaultTopKProfileThreshold, + false, // TODO: Think about debuggability of JIT-compiled code. false, false, false, diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index df7bb57f24..c080453dea 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -487,6 +487,7 @@ class Dex2Oat FINAL { // Profile file to use double top_k_profile_threshold = CompilerOptions::kDefaultTopKProfileThreshold; + bool debuggable = false; bool include_patch_information = CompilerOptions::kDefaultIncludePatchInformation; bool include_debug_symbols = kIsDebugBuild; bool watch_dog_enabled = true; @@ -675,6 +676,8 @@ class Dex2Oat FINAL { } else if (option == "--no-include-debug-symbols" || option == "--strip-symbols") { include_debug_symbols = false; generate_gdb_information = false; // Depends on debug symbols, see above. + } else if (option == "--debuggable") { + debuggable = true; } else if (option.starts_with("--profile-file=")) { profile_file_ = option.substr(strlen("--profile-file=")).data(); VLOG(compiler) << "dex2oat: profile file is " << profile_file_; @@ -915,6 +918,10 @@ class Dex2Oat FINAL { break; } + if (debuggable) { + // TODO: Consider adding CFI info and symbols here. + } + compiler_options_.reset(new CompilerOptions(compiler_filter, huge_method_threshold, large_method_threshold, @@ -924,6 +931,7 @@ class Dex2Oat FINAL { generate_gdb_information, include_patch_information, top_k_profile_threshold, + debuggable, include_debug_symbols, implicit_null_checks, implicit_so_checks, diff --git a/runtime/runtime.cc b/runtime/runtime.cc index 383308cf9e..6d9f20e147 100644 --- a/runtime/runtime.cc +++ b/runtime/runtime.cc @@ -1674,6 +1674,10 @@ void Runtime::AddCurrentRuntimeFeaturesAsDex2OatArguments(std::vector<std::strin std::string feature_string("--instruction-set-features="); feature_string += features->GetFeatureString(); argv->push_back(feature_string); + + if (Dbg::IsJdwpConfigured()) { + argv->push_back("--debuggable"); + } } void Runtime::UpdateProfilerState(int state) { |