Chromium Code Reviews| Index: content/app/content_main_runner.cc |
| diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc |
| index 2a511cbe1303cdd33d64cdf297146df22e08341f..2cd0ef56237758e6a5f557e6d5b07ec630dc3063 100644 |
| --- a/content/app/content_main_runner.cc |
| +++ b/content/app/content_main_runner.cc |
| @@ -54,17 +54,13 @@ |
| #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 "ppapi/features/features.h" |
| #include "services/service_manager/embedder/switches.h" |
| #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> |
| @@ -177,6 +173,24 @@ void InitializeFieldTrialAndFeatureList( |
| base::FeatureList::SetInstance(std::move(feature_list)); |
| } |
| +void LoadBlinkV8SnapshotFile() { |
| +#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( |
| + kBlinkV8SnapshotDataDescriptor, ®ion); |
| + if (fd.is_valid()) { |
| + gin::V8Initializer::LoadBlinkV8SnapshotFromFD(fd.get(), region.offset, |
| + region.size); |
| + return; |
| + } |
| +#endif // OS |
| +#if !defined(CHROME_MULTIPLE_DLL_BROWSER) |
| + gin::V8Initializer::LoadBlinkV8Snapshot(); |
| +#endif // !CHROME_MULTIPLE_DLL_BROWSER |
| +} |
| + |
| void InitializeV8IfNeeded( |
| const base::CommandLine& command_line, |
| const std::string& process_type) { |
| @@ -193,24 +207,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 |
| + |
| + LoadBlinkV8SnapshotFile(); |
|
haraken
2017/07/04 15:04:19
LoadV8ContextSnapshotFile
peria
2017/07/07 06:21:51
Done.
|
| } |
| } // namespace |