Upgrade V8 to 5.1.281.57 DO NOT MERGE
FPIIM-449
Change-Id: Id981b686b4d587ac31697662eb98bb34be42ad90
(cherry picked from commit 3b9bc31999c9787eb726ecdbfd5796bfdec32a18)
diff --git a/src/snapshot/mksnapshot.cc b/src/snapshot/mksnapshot.cc
index c163cae..9fe611a 100644
--- a/src/snapshot/mksnapshot.cc
+++ b/src/snapshot/mksnapshot.cc
@@ -12,8 +12,8 @@
#include "src/flags.h"
#include "src/list.h"
#include "src/snapshot/natives.h"
-#include "src/snapshot/serialize.h"
-
+#include "src/snapshot/partial-serializer.h"
+#include "src/snapshot/startup-serializer.h"
using namespace v8;
@@ -109,10 +109,9 @@
FILE* startup_blob_file_;
};
-
-char* GetExtraCode(char* filename) {
+char* GetExtraCode(char* filename, const char* description) {
if (filename == NULL || strlen(filename) == 0) return NULL;
- ::printf("Embedding extra script: %s\n", filename);
+ ::printf("Loading script for %s: %s\n", description, filename);
FILE* file = base::OS::FOpen(filename, "rb");
if (file == NULL) {
fprintf(stderr, "Failed to open '%s': errno %d\n", filename, errno);
@@ -137,14 +136,13 @@
int main(int argc, char** argv) {
- // By default, log code create information in the snapshot.
- i::FLAG_log_code = true;
- i::FLAG_logfile_per_isolate = false;
+ // Make mksnapshot runs predictable to create reproducible snapshots.
+ i::FLAG_predictable = true;
// Print the usage if an error occurs when parsing the command line
// flags or if the help flag is set.
int result = i::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
- if (result > 0 || (argc != 1 && argc != 2) || i::FLAG_help) {
+ if (result > 0 || (argc > 3) || i::FLAG_help) {
::printf("Usage: %s --startup_src=... --startup_blob=... [extras]\n",
argv[0]);
i::FlagList::PrintHelp();
@@ -161,11 +159,21 @@
SnapshotWriter writer;
if (i::FLAG_startup_src) writer.SetSnapshotFile(i::FLAG_startup_src);
if (i::FLAG_startup_blob) writer.SetStartupBlobFile(i::FLAG_startup_blob);
- char* extra_code = GetExtraCode(argc == 2 ? argv[1] : NULL);
- StartupData blob = v8::V8::CreateSnapshotDataBlob(extra_code);
+
+ char* embed_script = GetExtraCode(argc >= 2 ? argv[1] : NULL, "embedding");
+ StartupData blob = v8::V8::CreateSnapshotDataBlob(embed_script);
+ delete[] embed_script;
+
+ char* warmup_script = GetExtraCode(argc >= 3 ? argv[2] : NULL, "warm up");
+ if (warmup_script) {
+ StartupData cold = blob;
+ blob = v8::V8::WarmUpSnapshotDataBlob(cold, warmup_script);
+ delete[] cold.data;
+ delete[] warmup_script;
+ }
+
CHECK(blob.data);
writer.WriteSnapshot(blob);
- delete[] extra_code;
delete[] blob.data;
}