| 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
|
|
|