diff options
author | Andreas Gampe <agampe@google.com> | 2015-10-08 18:09:23 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-08 18:09:23 +0000 |
commit | 39795fc590d835bfb95ed5a5bb8ac488dfd1b82c (patch) | |
tree | 8505213e961cbfe1c36811a684e85518d4fd67ab | |
parent | 39becb96f0c2ba1823ca0cf046e9f12344f9f3bd (diff) | |
parent | cc07760776c3d2fb2ebc90858b6c20c48c78d783 (diff) | |
download | art-39795fc590d835bfb95ed5a5bb8ac488dfd1b82c.zip art-39795fc590d835bfb95ed5a5bb8ac488dfd1b82c.tar.gz art-39795fc590d835bfb95ed5a5bb8ac488dfd1b82c.tar.bz2 |
Merge "ART: Clean up less in dex2oat" into mnc-dr-dev
-rw-r--r-- | dex2oat/dex2oat.cc | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index e913c20..466f5e6 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -502,6 +502,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)), @@ -517,6 +518,7 @@ class Dex2Oat FINAL { compiled_methods_filename_(nullptr), image_(false), is_host_(false), + driver_(nullptr), dump_stats_(false), dump_passes_(false), dump_timing_(false), @@ -536,6 +538,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_; } } @@ -1167,9 +1171,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 : @@ -1381,23 +1385,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_); } @@ -1499,7 +1503,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())); @@ -1839,7 +1843,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)) : ""); } @@ -1852,7 +1856,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_; @@ -1895,7 +1902,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_; |