| 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 pp::Var attrs_var(pp::PASS_REF, | 56 pp::Var attrs_var(pp::PASS_REF, |
| 57 plugin->nacl_interface()->GetCpuFeatureAttrs()); | 57 plugin->nacl_interface()->GetCpuFeatureAttrs()); |
| 58 return attrs_var.AsString(); | 58 return attrs_var.AsString(); |
| 59 } | 59 } |
| 60 | 60 |
| 61 void DidCacheHit(void* user_data, PP_FileHandle nexe_file_handle) { | 61 void DidCacheHit(void* user_data, PP_FileHandle nexe_file_handle) { |
| 62 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); | 62 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); |
| 63 coordinator->BitcodeStreamCacheHit(nexe_file_handle); | 63 coordinator->BitcodeStreamCacheHit(nexe_file_handle); |
| 64 } | 64 } |
| 65 | 65 |
| 66 void DidCacheMiss(void* user_data, int64_t expected_pexe_size) { | 66 void DidCacheMiss(void* user_data, int64_t expected_pexe_size, |
| 67 PP_FileHandle temp_nexe_file) { |
| 67 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); | 68 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); |
| 68 coordinator->BitcodeStreamCacheMiss(expected_pexe_size); | 69 coordinator->BitcodeStreamCacheMiss(expected_pexe_size, |
| 70 temp_nexe_file); |
| 69 } | 71 } |
| 70 | 72 |
| 71 void DidStreamData(void* user_data, const void* stream_data, int32_t length) { | 73 void DidStreamData(void* user_data, const void* stream_data, int32_t length) { |
| 72 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); | 74 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); |
| 73 coordinator->BitcodeStreamGotData(stream_data, length); | 75 coordinator->BitcodeStreamGotData(stream_data, length); |
| 74 } | 76 } |
| 75 | 77 |
| 76 void DidFinishStream(void* user_data, int32_t pp_error) { | 78 void DidFinishStream(void* user_data, int32_t pp_error) { |
| 77 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); | 79 PnaclCoordinator* coordinator = static_cast<PnaclCoordinator*>(user_data); |
| 78 coordinator->BitcodeStreamDidFinish(pp_error); | 80 coordinator->BitcodeStreamDidFinish(pp_error); |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 nacl::string( | 324 nacl::string( |
| 323 "PnaclCoordinator: Got bad temp file handle from GetNexeFd")); | 325 "PnaclCoordinator: Got bad temp file handle from GetNexeFd")); |
| 324 BitcodeStreamDidFinish(PP_ERROR_FAILED); | 326 BitcodeStreamDidFinish(PP_ERROR_FAILED); |
| 325 return; | 327 return; |
| 326 } | 328 } |
| 327 temp_nexe_file_.reset(new TempFile(plugin_, handle)); | 329 temp_nexe_file_.reset(new TempFile(plugin_, handle)); |
| 328 // Open it for reading as the cached nexe file. | 330 // Open it for reading as the cached nexe file. |
| 329 NexeReadDidOpen(temp_nexe_file_->Open(false)); | 331 NexeReadDidOpen(temp_nexe_file_->Open(false)); |
| 330 } | 332 } |
| 331 | 333 |
| 332 void PnaclCoordinator::BitcodeStreamCacheMiss(int64_t expected_pexe_size) { | 334 void PnaclCoordinator::BitcodeStreamCacheMiss(int64_t expected_pexe_size, |
| 335 PP_FileHandle nexe_handle) { |
| 333 expected_pexe_size_ = expected_pexe_size; | 336 expected_pexe_size_ = expected_pexe_size; |
| 334 | 337 |
| 335 for (int i = 0; i < split_module_count_; i++) { | 338 for (int i = 0; i < split_module_count_; i++) { |
| 336 PP_FileHandle obj_handle = | 339 PP_FileHandle obj_handle = |
| 337 plugin_->nacl_interface()->CreateTemporaryFile(plugin_->pp_instance()); | 340 plugin_->nacl_interface()->CreateTemporaryFile(plugin_->pp_instance()); |
| 338 nacl::scoped_ptr<TempFile> temp_file(new TempFile(plugin_, obj_handle)); | 341 nacl::scoped_ptr<TempFile> temp_file(new TempFile(plugin_, obj_handle)); |
| 339 int32_t pp_error = temp_file->Open(true); | 342 int32_t pp_error = temp_file->Open(true); |
| 340 if (pp_error != PP_OK) { | 343 if (pp_error != PP_OK) { |
| 341 ReportPpapiError(PP_NACL_ERROR_PNACL_CREATE_TEMP, | 344 ReportPpapiError(PP_NACL_ERROR_PNACL_CREATE_TEMP, |
| 342 pp_error, | 345 pp_error, |
| 343 "Failed to open scratch object file."); | 346 "Failed to open scratch object file."); |
| 344 return; | 347 return; |
| 345 } else { | 348 } else { |
| 346 obj_files_.push_back(temp_file.release()); | 349 obj_files_.push_back(temp_file.release()); |
| 347 } | 350 } |
| 348 } | 351 } |
| 349 invalid_desc_wrapper_.reset(plugin_->wrapper_factory()->MakeInvalid()); | 352 invalid_desc_wrapper_.reset(plugin_->wrapper_factory()->MakeInvalid()); |
| 350 | 353 |
| 351 PP_FileHandle nexe_handle = | |
| 352 plugin_->nacl_interface()->CreateTemporaryFile(plugin_->pp_instance()); | |
| 353 temp_nexe_file_.reset(new TempFile(plugin_, nexe_handle)); | 354 temp_nexe_file_.reset(new TempFile(plugin_, nexe_handle)); |
| 354 // Open the nexe file for connecting ld and sel_ldr. | 355 // Open the nexe file for connecting ld and sel_ldr. |
| 355 // Start translation when done with this last step of setup! | 356 // Start translation when done with this last step of setup! |
| 356 RunTranslate(temp_nexe_file_->Open(true)); | 357 RunTranslate(temp_nexe_file_->Open(true)); |
| 357 } | 358 } |
| 358 | 359 |
| 359 void PnaclCoordinator::BitcodeStreamGotData(const void* data, int32_t length) { | 360 void PnaclCoordinator::BitcodeStreamGotData(const void* data, int32_t length) { |
| 360 DCHECK(translate_thread_.get()); | 361 DCHECK(translate_thread_.get()); |
| 361 | 362 |
| 362 translate_thread_->PutBytes(data, length); | 363 translate_thread_->PutBytes(data, length); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 invalid_desc_wrapper_.get(), | 452 invalid_desc_wrapper_.get(), |
| 452 &error_info_, | 453 &error_info_, |
| 453 resources_.get(), | 454 resources_.get(), |
| 454 &pnacl_options_, | 455 &pnacl_options_, |
| 455 architecture_attributes_, | 456 architecture_attributes_, |
| 456 this, | 457 this, |
| 457 plugin_); | 458 plugin_); |
| 458 } | 459 } |
| 459 | 460 |
| 460 } // namespace plugin | 461 } // namespace plugin |
| OLD | NEW |