diff options
author | Andreas Gampe <agampe@google.com> | 2015-10-08 19:39:35 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-10-08 19:39:35 +0000 |
commit | 2930074ccac12dc6b742782c7f942d997dc66e5b (patch) | |
tree | dd9fb993f3d725d5822043c8cec0013ca4d61f23 | |
parent | eb051222d818f22d4b3910953cde6906a0cea9fa (diff) | |
parent | ebaef4c5ee3c7cbf92ace656c5a935bc1daaaf1f (diff) | |
download | android_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.cc | 57 |
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_; |