Index: content/app/content_main_runner.cc |
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc |
index 9c8e3f494cbd3b6a4a5c92fb90f925799f222c6c..200bfcb1815b0fd8365b61ebebf37522fa05aadf 100644 |
--- a/content/app/content_main_runner.cc |
+++ b/content/app/content_main_runner.cc |
@@ -54,6 +54,7 @@ |
#include "content/public/common/content_switches.h" |
#include "content/public/common/main_function_params.h" |
#include "content/public/common/sandbox_init.h" |
+#include "gin/v8_initializer.h" |
#include "media/base/media.h" |
#include "media/media_features.h" |
#include "ppapi/features/features.h" |
@@ -61,11 +62,6 @@ |
#include "ui/base/ui_base_paths.h" |
#include "ui/base/ui_base_switches.h" |
-#if defined(V8_USE_EXTERNAL_STARTUP_DATA) && \ |
- !defined(CHROME_MULTIPLE_DLL_BROWSER) |
-#include "gin/v8_initializer.h" |
-#endif |
- |
#if defined(OS_WIN) |
#include <malloc.h> |
#include <cstring> |
@@ -178,6 +174,24 @@ void InitializeFieldTrialAndFeatureList( |
base::FeatureList::SetInstance(std::move(feature_list)); |
} |
+void LoadV8ContextSnapshotFile() { |
+#if defined(OS_POSIX) && !defined(OS_MACOSX) |
+ base::FileDescriptorStore& file_descriptor_store = |
+ base::FileDescriptorStore::GetInstance(); |
+ base::MemoryMappedFile::Region region; |
+ base::ScopedFD fd = file_descriptor_store.MaybeTakeFD( |
+ kV8ContextSnapshotDataDescriptor, ®ion); |
+ if (fd.is_valid()) { |
+ gin::V8Initializer::LoadV8ContextSnapshotFromFD(fd.get(), region.offset, |
+ region.size); |
+ return; |
+ } |
+#endif // OS |
+#if !defined(CHROME_MULTIPLE_DLL_BROWSER) |
+ gin::V8Initializer::LoadV8ContextSnapshot(); |
+#endif // !CHROME_MULTIPLE_DLL_BROWSER |
+} |
+ |
void InitializeV8IfNeeded( |
const base::CommandLine& command_line, |
const std::string& process_type) { |
@@ -194,24 +208,26 @@ void InitializeV8IfNeeded( |
if (v8_snapshot_fd.is_valid()) { |
gin::V8Initializer::LoadV8SnapshotFromFD(v8_snapshot_fd.get(), |
region.offset, region.size); |
- } else { |
- gin::V8Initializer::LoadV8Snapshot(); |
- } |
- base::ScopedFD v8_natives_fd = |
- file_descriptor_store.MaybeTakeFD(kV8NativesDataDescriptor, ®ion); |
- if (v8_natives_fd.is_valid()) { |
- gin::V8Initializer::LoadV8NativesFromFD(v8_natives_fd.get(), |
- region.offset, region.size); |
- } else { |
- gin::V8Initializer::LoadV8Natives(); |
- } |
-#else |
-#if !defined(CHROME_MULTIPLE_DLL_BROWSER) |
+ } else { |
gin::V8Initializer::LoadV8Snapshot(); |
+ } |
+ base::ScopedFD v8_natives_fd = |
+ file_descriptor_store.MaybeTakeFD(kV8NativesDataDescriptor, ®ion); |
+ if (v8_natives_fd.is_valid()) { |
+ gin::V8Initializer::LoadV8NativesFromFD(v8_natives_fd.get(), region.offset, |
+ region.size); |
+ } else { |
gin::V8Initializer::LoadV8Natives(); |
+ } |
+#else |
+#if !defined(CHROME_MULTIPLE_DLL_BROWSER) |
+ gin::V8Initializer::LoadV8Snapshot(); |
+ gin::V8Initializer::LoadV8Natives(); |
#endif // !CHROME_MULTIPLE_DLL_BROWSER |
#endif // OS_POSIX && !OS_MACOSX |
#endif // V8_USE_EXTERNAL_STARTUP_DATA |
+ |
+ LoadV8ContextSnapshotFile(); |
} |
} // namespace |