| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h" | 5 #include "ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "native_client/src/include/checked_cast.h" | 10 #include "native_client/src/include/checked_cast.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 Plugin* plugin, | 122 Plugin* plugin, |
| 123 const nacl::string& pexe_url, | 123 const nacl::string& pexe_url, |
| 124 const PP_PNaClOptions& pnacl_options, | 124 const PP_PNaClOptions& pnacl_options, |
| 125 const pp::CompletionCallback& translate_notify_callback) { | 125 const pp::CompletionCallback& translate_notify_callback) { |
| 126 PLUGIN_PRINTF(("PnaclCoordinator::BitcodeToNative (plugin=%p, pexe=%s)\n", | 126 PLUGIN_PRINTF(("PnaclCoordinator::BitcodeToNative (plugin=%p, pexe=%s)\n", |
| 127 static_cast<void*>(plugin), pexe_url.c_str())); | 127 static_cast<void*>(plugin), pexe_url.c_str())); |
| 128 PnaclCoordinator* coordinator = | 128 PnaclCoordinator* coordinator = |
| 129 new PnaclCoordinator(plugin, pexe_url, | 129 new PnaclCoordinator(plugin, pexe_url, |
| 130 pnacl_options, | 130 pnacl_options, |
| 131 translate_notify_callback); | 131 translate_notify_callback); |
| 132 PLUGIN_PRINTF(("PnaclCoordinator::BitcodeToNative (manifest_id=%d)\n", | |
| 133 coordinator->manifest_id_)); | |
| 134 | 132 |
| 135 coordinator->pnacl_init_time_ = NaClGetTimeOfDayMicroseconds(); | 133 coordinator->pnacl_init_time_ = NaClGetTimeOfDayMicroseconds(); |
| 136 int cpus = plugin->nacl_interface()->GetNumberOfProcessors(); | 134 int cpus = plugin->nacl_interface()->GetNumberOfProcessors(); |
| 137 coordinator->split_module_count_ = std::min(4, std::max(1, cpus)); | 135 coordinator->split_module_count_ = std::min(4, std::max(1, cpus)); |
| 138 | 136 |
| 139 // First start a network request for the pexe, to tickle the component | 137 // First start a network request for the pexe, to tickle the component |
| 140 // updater's On-Demand resource throttler, and to get Last-Modified/ETag | 138 // updater's On-Demand resource throttler, and to get Last-Modified/ETag |
| 141 // cache information. We can cancel the request later if there's | 139 // cache information. We can cancel the request later if there's |
| 142 // a bitcode->nexe cache hit. | 140 // a bitcode->nexe cache hit. |
| 143 coordinator->OpenBitcodeStream(); | 141 coordinator->OpenBitcodeStream(); |
| 144 return coordinator; | 142 return coordinator; |
| 145 } | 143 } |
| 146 | 144 |
| 147 PnaclCoordinator::PnaclCoordinator( | 145 PnaclCoordinator::PnaclCoordinator( |
| 148 Plugin* plugin, | 146 Plugin* plugin, |
| 149 const nacl::string& pexe_url, | 147 const nacl::string& pexe_url, |
| 150 const PP_PNaClOptions& pnacl_options, | 148 const PP_PNaClOptions& pnacl_options, |
| 151 const pp::CompletionCallback& translate_notify_callback) | 149 const pp::CompletionCallback& translate_notify_callback) |
| 152 : translate_finish_error_(PP_OK), | 150 : translate_finish_error_(PP_OK), |
| 153 plugin_(plugin), | 151 plugin_(plugin), |
| 154 translate_notify_callback_(translate_notify_callback), | 152 translate_notify_callback_(translate_notify_callback), |
| 155 translation_finished_reported_(false), | 153 translation_finished_reported_(false), |
| 156 manifest_id_( | |
| 157 GetNaClInterface()->CreatePnaclManifest(plugin->pp_instance())), | |
| 158 pexe_url_(pexe_url), | 154 pexe_url_(pexe_url), |
| 159 pnacl_options_(pnacl_options), | 155 pnacl_options_(pnacl_options), |
| 160 architecture_attributes_(GetArchitectureAttributes(plugin)), | 156 architecture_attributes_(GetArchitectureAttributes(plugin)), |
| 161 split_module_count_(1), | 157 split_module_count_(1), |
| 162 num_object_files_opened_(0), | 158 num_object_files_opened_(0), |
| 163 is_cache_hit_(PP_FALSE), | 159 is_cache_hit_(PP_FALSE), |
| 164 error_already_reported_(false), | 160 error_already_reported_(false), |
| 165 pnacl_init_time_(0), | 161 pnacl_init_time_(0), |
| 166 pexe_size_(0), | 162 pexe_size_(0), |
| 167 pexe_bytes_compiled_(0), | 163 pexe_bytes_compiled_(0), |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 612 void PnaclCoordinator::RunTranslate(int32_t pp_error) { | 608 void PnaclCoordinator::RunTranslate(int32_t pp_error) { |
| 613 PLUGIN_PRINTF(("PnaclCoordinator::RunTranslate (pp_error=%" | 609 PLUGIN_PRINTF(("PnaclCoordinator::RunTranslate (pp_error=%" |
| 614 NACL_PRId32 ")\n", pp_error)); | 610 NACL_PRId32 ")\n", pp_error)); |
| 615 // Invoke llc followed by ld off the main thread. This allows use of | 611 // Invoke llc followed by ld off the main thread. This allows use of |
| 616 // blocking RPCs that would otherwise block the JavaScript main thread. | 612 // blocking RPCs that would otherwise block the JavaScript main thread. |
| 617 pp::CompletionCallback report_translate_finished = | 613 pp::CompletionCallback report_translate_finished = |
| 618 callback_factory_.NewCallback(&PnaclCoordinator::TranslateFinished); | 614 callback_factory_.NewCallback(&PnaclCoordinator::TranslateFinished); |
| 619 | 615 |
| 620 CHECK(translate_thread_ != NULL); | 616 CHECK(translate_thread_ != NULL); |
| 621 translate_thread_->RunTranslate(report_translate_finished, | 617 translate_thread_->RunTranslate(report_translate_finished, |
| 622 manifest_id_, | |
| 623 &obj_files_, | 618 &obj_files_, |
| 624 temp_nexe_file_.get(), | 619 temp_nexe_file_.get(), |
| 625 invalid_desc_wrapper_.get(), | 620 invalid_desc_wrapper_.get(), |
| 626 &error_info_, | 621 &error_info_, |
| 627 resources_.get(), | 622 resources_.get(), |
| 628 &pnacl_options_, | 623 &pnacl_options_, |
| 629 architecture_attributes_, | 624 architecture_attributes_, |
| 630 this, | 625 this, |
| 631 plugin_); | 626 plugin_); |
| 632 } | 627 } |
| 633 | 628 |
| 634 } // namespace plugin | 629 } // namespace plugin |
| OLD | NEW |