summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-10-08 19:39:35 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-10-08 19:39:35 +0000
commit2930074ccac12dc6b742782c7f942d997dc66e5b (patch)
treedd9fb993f3d725d5822043c8cec0013ca4d61f23
parenteb051222d818f22d4b3910953cde6906a0cea9fa (diff)
parentebaef4c5ee3c7cbf92ace656c5a935bc1daaaf1f (diff)
downloadandroid_art-2930074ccac12dc6b742782c7f942d997dc66e5b.tar.gz
android_art-2930074ccac12dc6b742782c7f942d997dc66e5b.tar.bz2
android_art-2930074ccac12dc6b742782c7f942d997dc66e5b.zip
am ebaef4c5: am 39795fc5: Merge "ART: Clean up less in dex2oat" into mnc-dr-dev
* commit 'ebaef4c5ee3c7cbf92ace656c5a935bc1daaaf1f': ART: Clean up less in dex2oat
-rw-r--r--dex2oat/dex2oat.cc57
1 files changed, 34 insertions, 23 deletions
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index c51c31769e..9d7e68a730 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -504,6 +504,7 @@ class Dex2Oat FINAL {
compiler_kind_(kUseOptimizingCompiler ? Compiler::kOptimizing : Compiler::kQuick),
instruction_set_(kRuntimeISA),
// Take the default set of instruction features from the build.
+ verification_results_(nullptr),
method_inliner_map_(),
runtime_(nullptr),
thread_count_(sysconf(_SC_NPROCESSORS_CONF)),
@@ -519,6 +520,7 @@ class Dex2Oat FINAL {
compiled_methods_filename_(nullptr),
image_(false),
is_host_(false),
+ driver_(nullptr),
dump_stats_(false),
dump_passes_(false),
dump_timing_(false),
@@ -538,6 +540,8 @@ class Dex2Oat FINAL {
if (kIsDebugBuild || (RUNNING_ON_VALGRIND != 0)) {
delete runtime_; // See field declaration for why this is manual.
+ delete driver_;
+ delete verification_results_;
}
}
@@ -1169,9 +1173,9 @@ class Dex2Oat FINAL {
runtime_options.push_back(std::make_pair(runtime_args_[i], nullptr));
}
- verification_results_.reset(new VerificationResults(compiler_options_.get()));
+ verification_results_ = new VerificationResults(compiler_options_.get());
callbacks_.reset(new QuickCompilerCallbacks(
- verification_results_.get(),
+ verification_results_,
&method_inliner_map_,
image_ ?
CompilerCallbacks::CallbackMode::kCompileBootImage :
@@ -1383,23 +1387,23 @@ class Dex2Oat FINAL {
class_loader = class_linker->CreatePathClassLoader(self, class_path_files);
}
- driver_.reset(new CompilerDriver(compiler_options_.get(),
- verification_results_.get(),
- &method_inliner_map_,
- compiler_kind_,
- instruction_set_,
- instruction_set_features_.get(),
- image_,
- image_classes_.release(),
- compiled_classes_.release(),
- nullptr,
- thread_count_,
- dump_stats_,
- dump_passes_,
- dump_cfg_file_name_,
- compiler_phases_timings_.get(),
- swap_fd_,
- profile_file_));
+ driver_ = new CompilerDriver(compiler_options_.get(),
+ verification_results_,
+ &method_inliner_map_,
+ compiler_kind_,
+ instruction_set_,
+ instruction_set_features_.get(),
+ image_,
+ image_classes_.release(),
+ compiled_classes_.release(),
+ nullptr,
+ thread_count_,
+ dump_stats_,
+ dump_passes_,
+ dump_cfg_file_name_,
+ compiler_phases_timings_.get(),
+ swap_fd_,
+ profile_file_);
driver_->CompileAll(class_loader, dex_files_, timings_);
}
@@ -1501,7 +1505,7 @@ class Dex2Oat FINAL {
oat_writer.reset(new OatWriter(dex_files_, image_file_location_oat_checksum,
image_file_location_oat_data_begin,
image_patch_delta,
- driver_.get(),
+ driver_,
image_writer_.get(),
timings_,
key_value_store_.get()));
@@ -1841,7 +1845,7 @@ class Dex2Oat FINAL {
// Note: driver creation can fail when loading an invalid dex file.
LOG(INFO) << "dex2oat took " << PrettyDuration(NanoTime() - start_ns_)
<< " (threads: " << thread_count_ << ") "
- << ((Runtime::Current() != nullptr && driver_.get() != nullptr) ?
+ << ((Runtime::Current() != nullptr && driver_ != nullptr) ?
driver_->GetMemoryUsageString(kIsDebugBuild || VLOG_IS_ON(compiler)) :
"");
}
@@ -1854,7 +1858,10 @@ class Dex2Oat FINAL {
std::unique_ptr<SafeMap<std::string, std::string> > key_value_store_;
- std::unique_ptr<VerificationResults> verification_results_;
+ // Not a unique_ptr as we want to just exit on non-debug builds, not bringing the compiler down
+ // in an orderly fashion. The destructor takes care of deleting this.
+ VerificationResults* verification_results_;
+
DexFileToMethodInlinerMap method_inliner_map_;
std::unique_ptr<QuickCompilerCallbacks> callbacks_;
@@ -1897,7 +1904,11 @@ class Dex2Oat FINAL {
std::string android_root_;
std::vector<const DexFile*> dex_files_;
std::vector<std::unique_ptr<const DexFile>> opened_dex_files_;
- std::unique_ptr<CompilerDriver> driver_;
+
+ // Not a unique_ptr as we want to just exit on non-debug builds, not bringing the driver down
+ // in an orderly fashion. The destructor takes care of deleting this.
+ CompilerDriver* driver_;
+
std::vector<std::string> verbose_methods_;
bool dump_stats_;
bool dump_passes_;