Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Unified Diff: components/nacl/renderer/plugin/pnacl_coordinator.cc

Issue 1005173006: Add a switch for using PNaCl Subzero and use it for -O0 translation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix takefileinfo Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/nacl/renderer/plugin/pnacl_coordinator.cc
diff --git a/components/nacl/renderer/plugin/pnacl_coordinator.cc b/components/nacl/renderer/plugin/pnacl_coordinator.cc
index 9d5bca47fb1e427b35d1ea543bf059a9a0ad232b..0ffb53f749e40e55b07344bad62d54798ec5c7c5 100644
--- a/components/nacl/renderer/plugin/pnacl_coordinator.cc
+++ b/components/nacl/renderer/plugin/pnacl_coordinator.cc
@@ -101,8 +101,12 @@ PnaclCoordinator* PnaclCoordinator::BitcodeToNative(
GetNaClInterface()->SetPNaClStartTime(plugin->pp_instance());
int cpus = plugin->nacl_interface()->GetNumberOfProcessors();
- coordinator->split_module_count_ = std::min(4, std::max(1, cpus));
-
+ coordinator->num_threads_ = std::min(4, std::max(1, cpus));
+ if (pnacl_options.use_subzero) {
+ coordinator->split_module_count_ = 1;
+ } else {
+ coordinator->split_module_count_ = coordinator->num_threads_;
+ }
// First start a network request for the pexe, to tickle the component
// updater's On-Demand resource throttler, and to get Last-Modified/ETag
// cache information. We can cancel the request later if there's
@@ -116,18 +120,19 @@ PnaclCoordinator::PnaclCoordinator(
const std::string& pexe_url,
const PP_PNaClOptions& pnacl_options,
const pp::CompletionCallback& translate_notify_callback)
- : translate_finish_error_(PP_OK),
- plugin_(plugin),
- translate_notify_callback_(translate_notify_callback),
- translation_finished_reported_(false),
- pexe_url_(pexe_url),
- pnacl_options_(pnacl_options),
- architecture_attributes_(GetArchitectureAttributes(plugin)),
- split_module_count_(1),
- error_already_reported_(false),
- pexe_size_(0),
- pexe_bytes_compiled_(0),
- expected_pexe_size_(-1) {
+ : translate_finish_error_(PP_OK),
+ plugin_(plugin),
+ translate_notify_callback_(translate_notify_callback),
+ translation_finished_reported_(false),
+ pexe_url_(pexe_url),
+ pnacl_options_(pnacl_options),
+ architecture_attributes_(GetArchitectureAttributes(plugin)),
+ split_module_count_(0),
+ num_threads_(0),
+ error_already_reported_(false),
+ pexe_size_(0),
+ pexe_bytes_compiled_(0),
+ expected_pexe_size_(-1) {
callback_factory_.Initialize(this);
}
@@ -144,8 +149,8 @@ PnaclCoordinator::~PnaclCoordinator() {
translate_thread_->AbortSubprocesses();
if (!translation_finished_reported_) {
plugin_->nacl_interface()->ReportTranslationFinished(
- plugin_->pp_instance(),
- PP_FALSE, 0, 0, 0);
+ plugin_->pp_instance(), PP_FALSE, pnacl_options_.opt_level,
+ pnacl_options_.use_subzero, 0, 0);
}
// Force deleting the translate_thread now. It must be deleted
// before any scoped_* fields hanging off of PnaclCoordinator
@@ -193,8 +198,8 @@ void PnaclCoordinator::ExitWithError() {
error_already_reported_ = true;
translation_finished_reported_ = true;
plugin_->nacl_interface()->ReportTranslationFinished(
- plugin_->pp_instance(),
- PP_FALSE, 0, 0, 0);
+ plugin_->pp_instance(), PP_FALSE, pnacl_options_.opt_level,
+ pnacl_options_.use_subzero, 0, 0);
translate_notify_callback_.Run(PP_ERROR_FAILED);
}
}
@@ -242,7 +247,8 @@ void PnaclCoordinator::TranslateFinished(int32_t pp_error) {
translation_finished_reported_ = true;
plugin_->nacl_interface()->ReportTranslationFinished(
plugin_->pp_instance(), PP_TRUE, pnacl_options_.opt_level,
- pexe_size_, translate_thread_->GetCompileTime());
+ pnacl_options_.use_subzero, pexe_size_,
+ translate_thread_->GetCompileTime());
NexeReadDidOpen(PP_OK);
}
@@ -285,11 +291,9 @@ void PnaclCoordinator::OpenBitcodeStream() {
return;
}
- GetNaClInterface()->StreamPexe(plugin_->pp_instance(),
- pexe_url_.c_str(),
- pnacl_options_.opt_level,
- &kPexeStreamHandler,
- this);
+ GetNaClInterface()->StreamPexe(
+ plugin_->pp_instance(), pexe_url_.c_str(), pnacl_options_.opt_level,
+ pnacl_options_.use_subzero, &kPexeStreamHandler, this);
}
void PnaclCoordinator::BitcodeStreamCacheHit(PP_FileHandle handle) {
@@ -314,7 +318,7 @@ void PnaclCoordinator::BitcodeStreamCacheMiss(int64_t expected_pexe_size,
// The component updater's resource throttles + OnDemand update/install
// should block the URL request until the compiler is present. Now we
// can load the resources (e.g. llc and ld nexes).
- resources_.reset(new PnaclResources(plugin_));
+ resources_.reset(new PnaclResources(plugin_, pnacl_options_.use_subzero));
CHECK(resources_ != NULL);
// The first step of loading resources: read the resource info file.
@@ -441,16 +445,11 @@ void PnaclCoordinator::RunTranslate(int32_t pp_error) {
callback_factory_.NewCallback(&PnaclCoordinator::TranslateFinished);
CHECK(translate_thread_ != NULL);
- translate_thread_->RunTranslate(report_translate_finished,
- &obj_files_,
- temp_nexe_file_.get(),
- invalid_desc_wrapper_.get(),
- &error_info_,
- resources_.get(),
- &pnacl_options_,
- architecture_attributes_,
- this,
- plugin_);
+ translate_thread_->RunTranslate(report_translate_finished, &obj_files_,
+ num_threads_, temp_nexe_file_.get(),
+ invalid_desc_wrapper_.get(), &error_info_,
+ resources_.get(), &pnacl_options_,
+ architecture_attributes_, this, plugin_);
}
} // namespace plugin
« no previous file with comments | « components/nacl/renderer/plugin/pnacl_coordinator.h ('k') | components/nacl/renderer/plugin/pnacl_resources.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698