diff options
Diffstat (limited to 'deps/v8/src/init/startup-data-util.cc')
-rw-r--r-- | deps/v8/src/init/startup-data-util.cc | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/deps/v8/src/init/startup-data-util.cc b/deps/v8/src/init/startup-data-util.cc index 54d697c591..d234c152f8 100644 --- a/deps/v8/src/init/startup-data-util.cc +++ b/deps/v8/src/init/startup-data-util.cc @@ -38,6 +38,10 @@ void FreeStartupData() { DeleteStartupData(&g_snapshot); } +// TODO(jgruber): Rename to FreeStartupData once natives support has been +// removed (https://crbug.com/v8/7624). +void FreeStartupDataSnapshotOnly() { DeleteStartupData(&g_snapshot); } + void Load(const char* blob_file, v8::StartupData* startup_data, void (*setter_fn)(v8::StartupData*)) { ClearStartupData(startup_data); @@ -67,7 +71,7 @@ void Load(const char* blob_file, v8::StartupData* startup_data, } void LoadFromFiles(const char* natives_blob, const char* snapshot_blob) { - Load(natives_blob, &g_natives, v8::V8::SetNativesDataBlob); + Load(natives_blob, &g_natives, i::V8::SetNativesBlob); Load(snapshot_blob, &g_snapshot, v8::V8::SetSnapshotDataBlob); atexit(&FreeStartupData); @@ -78,19 +82,17 @@ void LoadFromFiles(const char* natives_blob, const char* snapshot_blob) { void InitializeExternalStartupData(const char* directory_path) { #ifdef V8_USE_EXTERNAL_STARTUP_DATA - char* natives; - char* snapshot; const char* snapshot_name = "snapshot_blob.bin"; #ifdef V8_MULTI_SNAPSHOTS if (!FLAG_untrusted_code_mitigations) { snapshot_name = "snapshot_blob_trusted.bin"; } #endif - LoadFromFiles( - base::RelativePath(&natives, directory_path, "natives_blob.bin"), - base::RelativePath(&snapshot, directory_path, snapshot_name)); - free(natives); - free(snapshot); + std::unique_ptr<char[]> natives = + base::RelativePath(directory_path, "natives_blob.bin"); + std::unique_ptr<char[]> snapshot = + base::RelativePath(directory_path, snapshot_name); + LoadFromFiles(natives.get(), snapshot.get()); #endif // V8_USE_EXTERNAL_STARTUP_DATA } @@ -101,5 +103,12 @@ void InitializeExternalStartupData(const char* natives_blob, #endif // V8_USE_EXTERNAL_STARTUP_DATA } +void InitializeExternalStartupDataFromFile(const char* snapshot_blob) { +#ifdef V8_USE_EXTERNAL_STARTUP_DATA + Load(snapshot_blob, &g_snapshot, v8::V8::SetSnapshotDataBlob); + atexit(&FreeStartupDataSnapshotOnly); +#endif // V8_USE_EXTERNAL_STARTUP_DATA +} + } // namespace internal } // namespace v8 |