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

Side by Side Diff: ppapi/native_client/src/trusted/plugin/pnacl_translate_thread.cc

Issue 264943003: Pepper: Move manifest logic to components/nacl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_translate_thread.h" 5 #include "ppapi/native_client/src/trusted/plugin/pnacl_translate_thread.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 8
9 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" 9 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h"
10 #include "ppapi/native_client/src/trusted/plugin/plugin.h" 10 #include "ppapi/native_client/src/trusted/plugin/plugin.h"
(...skipping 21 matching lines...) Expand all
32 } 32 }
33 return str; 33 return str;
34 } 34 }
35 35
36 } // namespace 36 } // namespace
37 37
38 PnaclTranslateThread::PnaclTranslateThread() : llc_subprocess_active_(false), 38 PnaclTranslateThread::PnaclTranslateThread() : llc_subprocess_active_(false),
39 ld_subprocess_active_(false), 39 ld_subprocess_active_(false),
40 done_(false), 40 done_(false),
41 compile_time_(0), 41 compile_time_(0),
42 manifest_(NULL), 42 manifest_id_(0),
43 obj_files_(NULL), 43 obj_files_(NULL),
44 nexe_file_(NULL), 44 nexe_file_(NULL),
45 coordinator_error_info_(NULL), 45 coordinator_error_info_(NULL),
46 resources_(NULL), 46 resources_(NULL),
47 coordinator_(NULL), 47 coordinator_(NULL),
48 plugin_(NULL) { 48 plugin_(NULL) {
49 NaClXMutexCtor(&subprocess_mu_); 49 NaClXMutexCtor(&subprocess_mu_);
50 NaClXMutexCtor(&cond_mu_); 50 NaClXMutexCtor(&cond_mu_);
51 NaClXCondVarCtor(&buffer_cond_); 51 NaClXCondVarCtor(&buffer_cond_);
52 } 52 }
53 53
54 void PnaclTranslateThread::RunTranslate( 54 void PnaclTranslateThread::RunTranslate(
55 const pp::CompletionCallback& finish_callback, 55 const pp::CompletionCallback& finish_callback,
56 const Manifest* manifest, 56 int32_t manifest_id,
57 const std::vector<TempFile*>* obj_files, 57 const std::vector<TempFile*>* obj_files,
58 TempFile* nexe_file, 58 TempFile* nexe_file,
59 nacl::DescWrapper* invalid_desc_wrapper, 59 nacl::DescWrapper* invalid_desc_wrapper,
60 ErrorInfo* error_info, 60 ErrorInfo* error_info,
61 PnaclResources* resources, 61 PnaclResources* resources,
62 PP_PNaClOptions* pnacl_options, 62 PP_PNaClOptions* pnacl_options,
63 PnaclCoordinator* coordinator, 63 PnaclCoordinator* coordinator,
64 Plugin* plugin) { 64 Plugin* plugin) {
65 PLUGIN_PRINTF(("PnaclStreamingTranslateThread::RunTranslate)\n")); 65 PLUGIN_PRINTF(("PnaclStreamingTranslateThread::RunTranslate)\n"));
66 manifest_ = manifest; 66 manifest_id_ = manifest_id;
67 obj_files_ = obj_files; 67 obj_files_ = obj_files;
68 nexe_file_ = nexe_file; 68 nexe_file_ = nexe_file;
69 invalid_desc_wrapper_ = invalid_desc_wrapper; 69 invalid_desc_wrapper_ = invalid_desc_wrapper;
70 coordinator_error_info_ = error_info; 70 coordinator_error_info_ = error_info;
71 resources_ = resources; 71 resources_ = resources;
72 pnacl_options_ = pnacl_options; 72 pnacl_options_ = pnacl_options;
73 coordinator_ = coordinator; 73 coordinator_ = coordinator;
74 plugin_ = plugin; 74 plugin_ = plugin;
75 75
76 // Invoke llc followed by ld off the main thread. This allows use of 76 // Invoke llc followed by ld off the main thread. This allows use of
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 122
123 NaClXCondVarSignal(&buffer_cond_); 123 NaClXCondVarSignal(&buffer_cond_);
124 NaClXMutexUnlock(&cond_mu_); 124 NaClXMutexUnlock(&cond_mu_);
125 125
126 // Ensure the buffer we send back to the coordinator is the expected size 126 // Ensure the buffer we send back to the coordinator is the expected size
127 bytes->resize(buffer_size); 127 bytes->resize(buffer_size);
128 } 128 }
129 129
130 NaClSubprocess* PnaclTranslateThread::StartSubprocess( 130 NaClSubprocess* PnaclTranslateThread::StartSubprocess(
131 const nacl::string& url_for_nexe, 131 const nacl::string& url_for_nexe,
132 const Manifest* manifest, 132 int32_t manifest_id,
133 ErrorInfo* error_info) { 133 ErrorInfo* error_info) {
134 PLUGIN_PRINTF(("PnaclTranslateThread::StartSubprocess (url_for_nexe=%s)\n", 134 PLUGIN_PRINTF(("PnaclTranslateThread::StartSubprocess (url_for_nexe=%s)\n",
135 url_for_nexe.c_str())); 135 url_for_nexe.c_str()));
136 nacl::DescWrapper* wrapper = resources_->WrapperForUrl(url_for_nexe); 136 nacl::DescWrapper* wrapper = resources_->WrapperForUrl(url_for_nexe);
137 // Supply a URL for the translator components, different from the app URL, 137 // Supply a URL for the translator components, different from the app URL,
138 // so that NaCl GDB can filter-out the translator processes (and not debug 138 // so that NaCl GDB can filter-out the translator processes (and not debug
139 // the translator itself). Must have a full URL with schema, otherwise the 139 // the translator itself). Must have a full URL with schema, otherwise the
140 // string gets silently dropped by GURL. 140 // string gets silently dropped by GURL.
141 nacl::string full_url = resources_->GetFullUrl( 141 nacl::string full_url = resources_->GetFullUrl(
142 url_for_nexe, plugin_->nacl_interface()->GetSandboxArch()); 142 url_for_nexe, plugin_->nacl_interface()->GetSandboxArch());
143 nacl::scoped_ptr<NaClSubprocess> subprocess( 143 nacl::scoped_ptr<NaClSubprocess> subprocess(plugin_->LoadHelperNaClModule(
144 plugin_->LoadHelperNaClModule(full_url, wrapper, manifest, error_info)); 144 full_url, wrapper, manifest_id, error_info));
145 if (subprocess.get() == NULL) { 145 if (subprocess.get() == NULL) {
146 PLUGIN_PRINTF(( 146 PLUGIN_PRINTF((
147 "PnaclTranslateThread::StartSubprocess: subprocess creation failed\n")); 147 "PnaclTranslateThread::StartSubprocess: subprocess creation failed\n"));
148 return NULL; 148 return NULL;
149 } 149 }
150 return subprocess.release(); 150 return subprocess.release();
151 } 151 }
152 152
153 void WINAPI PnaclTranslateThread::DoTranslateThread(void* arg) { 153 void WINAPI PnaclTranslateThread::DoTranslateThread(void* arg) {
154 PnaclTranslateThread* translator = 154 PnaclTranslateThread* translator =
(...skipping 11 matching lines...) Expand all
166 } 166 }
167 for (; i < PnaclCoordinator::kMaxTranslatorObjectFiles; i++) { 167 for (; i < PnaclCoordinator::kMaxTranslatorObjectFiles; i++) {
168 llc_out_files.push_back(invalid_desc_wrapper_); 168 llc_out_files.push_back(invalid_desc_wrapper_);
169 } 169 }
170 170
171 pp::Core* core = pp::Module::Get()->core(); 171 pp::Core* core = pp::Module::Get()->core();
172 { 172 {
173 nacl::MutexLocker ml(&subprocess_mu_); 173 nacl::MutexLocker ml(&subprocess_mu_);
174 int64_t llc_start_time = NaClGetTimeOfDayMicroseconds(); 174 int64_t llc_start_time = NaClGetTimeOfDayMicroseconds();
175 llc_subprocess_.reset( 175 llc_subprocess_.reset(
176 StartSubprocess(resources_->GetLlcUrl(), manifest_, &error_info)); 176 StartSubprocess(resources_->GetLlcUrl(), manifest_id_, &error_info));
177 if (llc_subprocess_ == NULL) { 177 if (llc_subprocess_ == NULL) {
178 TranslateFailed(PP_NACL_ERROR_PNACL_LLC_SETUP, 178 TranslateFailed(PP_NACL_ERROR_PNACL_LLC_SETUP,
179 "Compile process could not be created: " + 179 "Compile process could not be created: " +
180 error_info.message()); 180 error_info.message());
181 return; 181 return;
182 } 182 }
183 llc_subprocess_active_ = true; 183 llc_subprocess_active_ = true;
184 core->CallOnMainThread(0, 184 core->CallOnMainThread(0,
185 coordinator_->GetUMATimeCallback( 185 coordinator_->GetUMATimeCallback(
186 "NaCl.Perf.PNaClLoadTime.LoadCompiler", 186 "NaCl.Perf.PNaClLoadTime.LoadCompiler",
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 ld_in_files.push_back(invalid_desc_wrapper_); 343 ld_in_files.push_back(invalid_desc_wrapper_);
344 } 344 }
345 345
346 nacl::DescWrapper* ld_out_file = nexe_file_->write_wrapper(); 346 nacl::DescWrapper* ld_out_file = nexe_file_->write_wrapper();
347 pp::Core* core = pp::Module::Get()->core(); 347 pp::Core* core = pp::Module::Get()->core();
348 { 348 {
349 // Create LD process 349 // Create LD process
350 nacl::MutexLocker ml(&subprocess_mu_); 350 nacl::MutexLocker ml(&subprocess_mu_);
351 int64_t ld_start_time = NaClGetTimeOfDayMicroseconds(); 351 int64_t ld_start_time = NaClGetTimeOfDayMicroseconds();
352 ld_subprocess_.reset( 352 ld_subprocess_.reset(
353 StartSubprocess(resources_->GetLdUrl(), manifest_, &error_info)); 353 StartSubprocess(resources_->GetLdUrl(), manifest_id_, &error_info));
354 if (ld_subprocess_ == NULL) { 354 if (ld_subprocess_ == NULL) {
355 TranslateFailed(PP_NACL_ERROR_PNACL_LD_SETUP, 355 TranslateFailed(PP_NACL_ERROR_PNACL_LD_SETUP,
356 "Link process could not be created: " + 356 "Link process could not be created: " +
357 error_info.message()); 357 error_info.message());
358 return false; 358 return false;
359 } 359 }
360 ld_subprocess_active_ = true; 360 ld_subprocess_active_ = true;
361 core->CallOnMainThread(0, 361 core->CallOnMainThread(0,
362 coordinator_->GetUMATimeCallback( 362 coordinator_->GetUMATimeCallback(
363 "NaCl.Perf.PNaClLoadTime.LoadLinker", 363 "NaCl.Perf.PNaClLoadTime.LoadLinker",
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 AbortSubprocesses(); 452 AbortSubprocesses();
453 if (translate_thread_ != NULL) 453 if (translate_thread_ != NULL)
454 NaClThreadJoin(translate_thread_.get()); 454 NaClThreadJoin(translate_thread_.get());
455 PLUGIN_PRINTF(("~PnaclTranslateThread joined\n")); 455 PLUGIN_PRINTF(("~PnaclTranslateThread joined\n"));
456 NaClCondVarDtor(&buffer_cond_); 456 NaClCondVarDtor(&buffer_cond_);
457 NaClMutexDtor(&cond_mu_); 457 NaClMutexDtor(&cond_mu_);
458 NaClMutexDtor(&subprocess_mu_); 458 NaClMutexDtor(&subprocess_mu_);
459 } 459 }
460 460
461 } // namespace plugin 461 } // namespace plugin
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698