| 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_translate_thread.h" | 5 #include "ppapi/native_client/src/trusted/plugin/pnacl_translate_thread.h" |
| 6 | 6 |
| 7 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" | 7 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" |
| 8 #include "ppapi/native_client/src/trusted/plugin/plugin.h" | 8 #include "ppapi/native_client/src/trusted/plugin/plugin.h" |
| 9 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h" | 9 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h" |
| 10 #include "ppapi/native_client/src/trusted/plugin/pnacl_resources.h" | 10 #include "ppapi/native_client/src/trusted/plugin/pnacl_resources.h" |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 std::vector<char> data; | 193 std::vector<char> data; |
| 194 data.swap(data_buffers_.front()); | 194 data.swap(data_buffers_.front()); |
| 195 data_buffers_.pop_front(); | 195 data_buffers_.pop_front(); |
| 196 NaClXMutexUnlock(&cond_mu_); | 196 NaClXMutexUnlock(&cond_mu_); |
| 197 PLUGIN_PRINTF(("StreamChunk\n")); | 197 PLUGIN_PRINTF(("StreamChunk\n")); |
| 198 if (!llc_subprocess_->InvokeSrpcMethod("StreamChunk", | 198 if (!llc_subprocess_->InvokeSrpcMethod("StreamChunk", |
| 199 "C", | 199 "C", |
| 200 ¶ms, | 200 ¶ms, |
| 201 &data[0], | 201 &data[0], |
| 202 data.size())) { | 202 data.size())) { |
| 203 TranslateFailed(ERROR_PNACL_LLC_INTERNAL, | 203 if (llc_subprocess_->srpc_client()->GetLastError() != |
| 204 "Compile stream chunk failed."); | 204 NACL_SRPC_RESULT_APP_ERROR) { |
| 205 return; | 205 // If the error was reported by the translator, then we fall through |
| 206 // and call StreamEnd, which returns a string describing the error, |
| 207 // which we can then send to the Javascript console. Otherwise just |
| 208 // fail here, since the translator has probably crashed or asserted. |
| 209 TranslateFailed(ERROR_PNACL_LLC_INTERNAL, |
| 210 "Compile stream chunk failed. " |
| 211 "The PNaCl translator has probably crashed."); |
| 212 return; |
| 213 } |
| 214 break; |
| 215 } else { |
| 216 PLUGIN_PRINTF(("StreamChunk Successful\n")); |
| 217 core->CallOnMainThread( |
| 218 0, |
| 219 coordinator_->GetCompileProgressCallback(data.size()), |
| 220 PP_OK); |
| 206 } | 221 } |
| 207 PLUGIN_PRINTF(("StreamChunk Successful\n")); | |
| 208 core->CallOnMainThread( | |
| 209 0, | |
| 210 coordinator_->GetCompileProgressCallback(data.size()), | |
| 211 PP_OK); | |
| 212 } else { | 222 } else { |
| 213 NaClXMutexUnlock(&cond_mu_); | 223 NaClXMutexUnlock(&cond_mu_); |
| 214 } | 224 } |
| 215 } | 225 } |
| 216 PLUGIN_PRINTF(("PnaclTranslateThread done with chunks\n")); | 226 PLUGIN_PRINTF(("PnaclTranslateThread done with chunks\n")); |
| 217 // Finish llc. | 227 // Finish llc. |
| 218 if (!llc_subprocess_->InvokeSrpcMethod("StreamEnd", std::string(), ¶ms)) { | 228 if (!llc_subprocess_->InvokeSrpcMethod("StreamEnd", std::string(), ¶ms)) { |
| 219 PLUGIN_PRINTF(("PnaclTranslateThread StreamEnd failed\n")); | 229 PLUGIN_PRINTF(("PnaclTranslateThread StreamEnd failed\n")); |
| 220 if (llc_subprocess_->srpc_client()->GetLastError() == | 230 if (llc_subprocess_->srpc_client()->GetLastError() == |
| 221 NACL_SRPC_RESULT_APP_ERROR) { | 231 NACL_SRPC_RESULT_APP_ERROR) { |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 AbortSubprocesses(); | 363 AbortSubprocesses(); |
| 354 if (translate_thread_ != NULL) | 364 if (translate_thread_ != NULL) |
| 355 NaClThreadJoin(translate_thread_.get()); | 365 NaClThreadJoin(translate_thread_.get()); |
| 356 PLUGIN_PRINTF(("~PnaclTranslateThread joined\n")); | 366 PLUGIN_PRINTF(("~PnaclTranslateThread joined\n")); |
| 357 NaClCondVarDtor(&buffer_cond_); | 367 NaClCondVarDtor(&buffer_cond_); |
| 358 NaClMutexDtor(&cond_mu_); | 368 NaClMutexDtor(&cond_mu_); |
| 359 NaClMutexDtor(&subprocess_mu_); | 369 NaClMutexDtor(&subprocess_mu_); |
| 360 } | 370 } |
| 361 | 371 |
| 362 } // namespace plugin | 372 } // namespace plugin |
| OLD | NEW |