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

Unified Diff: ppapi/native_client/src/trusted/plugin/plugin.cc

Issue 649603004: Non-SFI NaCl: Batch-open resource files (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove ipc/ and mojo/ changes following Mark's suggestion Created 6 years 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: ppapi/native_client/src/trusted/plugin/plugin.cc
diff --git a/ppapi/native_client/src/trusted/plugin/plugin.cc b/ppapi/native_client/src/trusted/plugin/plugin.cc
index 518751c6981966f9e5a2c6a4c32077fd73c22b62..7f7e310502961f4b2f6c0453111f83bf73a8eb84 100644
--- a/ppapi/native_client/src/trusted/plugin/plugin.cc
+++ b/ppapi/native_client/src/trusted/plugin/plugin.cc
@@ -117,6 +117,8 @@ void Plugin::SignalStartSelLdrDone(int32_t pp_error,
}
void Plugin::LoadNaClModule(PP_NaClFileInfo file_info,
+ PP_NaClResourceFileHandle* resource_file_handles,
+ uint32_t resource_file_handles_len,
bool uses_nonsfi_mode,
PP_NaClAppProcessType process_type,
const pp::CompletionCallback& init_done_cb) {
@@ -132,6 +134,8 @@ void Plugin::LoadNaClModule(PP_NaClFileInfo file_info,
SelLdrStartParams params(manifest_base_url_str,
file_info,
+ resource_file_handles,
+ resource_file_handles_len,
process_type);
ErrorInfo error_info;
ServiceRuntime* service_runtime = new ServiceRuntime(
@@ -197,6 +201,8 @@ NaClSubprocess* Plugin::LoadHelperNaClModule(const std::string& helper_url,
// done to save on address space and swap space.
SelLdrStartParams params(helper_url,
file_info,
+ NULL,
+ 0,
PP_PNACL_TRANSLATOR_PROCESS_TYPE);
// Helper NaCl modules always use the PNaCl manifest, as there is no
@@ -248,6 +254,8 @@ Plugin::Plugin(PP_Instance pp_instance)
main_subprocess_("main subprocess", NULL, NULL),
uses_nonsfi_mode_(false),
wrapper_factory_(NULL),
+ resource_file_handles_(NULL),
+ resource_file_handles_len_(0),
nacl_interface_(NULL),
uma_interface_(this) {
callback_factory_.Initialize(this);
@@ -296,6 +304,11 @@ Plugin::~Plugin() {
delete wrapper_factory_;
+ for (uint32_t i = 0; i < resource_file_handles_len_; ++i) {
+ free(resource_file_handles_[i].key);
+ }
+ delete[] resource_file_handles_;
+
HistogramTimeSmall(
"NaCl.Perf.ShutdownTime.Total",
(NaClGetTimeOfDayMicroseconds() - shutdown_start)
@@ -313,6 +326,8 @@ void Plugin::NexeFileDidOpen(int32_t pp_error) {
return;
LoadNaClModule(
nexe_file_info_,
+ resource_file_handles_,
+ resource_file_handles_len_,
uses_nonsfi_mode_,
PP_NATIVE_NACL_PROCESS_TYPE,
callback_factory_.NewCallback(&Plugin::NexeFileDidOpenContinuation));
@@ -350,6 +365,8 @@ void Plugin::BitcodeDidTranslate(int32_t pp_error) {
info.token_hi = 0;
LoadNaClModule(
info,
+ NULL,
+ 0,
false, /* uses_nonsfi_mode */
PP_PNACL_PROCESS_TYPE,
callback_factory_.NewCallback(&Plugin::BitcodeDidTranslateContinuation));
@@ -399,7 +416,13 @@ void Plugin::NaClManifestFileDidOpen(int32_t pp_error) {
// Will always call the callback on success or failure.
nacl_interface_->DownloadNexe(pp_instance(),
program_url.c_str(),
+ // pre-open resource files on nonsfi mode
+ // TODO(yusukes): Enable the feature for
+ // SFI-NaCl too.
+ uses_nonsfi_mode,
&nexe_file_info_,
+ &resource_file_handles_,
+ &resource_file_handles_len_,
open_callback.pp_completion_callback());
return;
}

Powered by Google App Engine
This is Rietveld 408576698