summaryrefslogtreecommitdiff
path: root/deps/v8/src/init/startup-data-util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/init/startup-data-util.cc')
-rw-r--r--deps/v8/src/init/startup-data-util.cc25
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