| Index: src/snapshot/mksnapshot.cc
|
| diff --git a/src/snapshot/mksnapshot.cc b/src/snapshot/mksnapshot.cc
|
| index 8cba00322d85c39202c84a0b8c7519d7c0bf1906..9d7b9e4dd62ebf02c9b0d78c6db0f09d1b8c5947 100644
|
| --- a/src/snapshot/mksnapshot.cc
|
| +++ b/src/snapshot/mksnapshot.cc
|
| @@ -109,10 +109,10 @@ class SnapshotWriter {
|
| 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);
|
| + if (strcmp(filename, "-") == 0) return NULL;
|
| + ::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);
|
| @@ -144,7 +144,7 @@ int main(int argc, char** argv) {
|
| // 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 +161,21 @@ int main(int argc, char** argv) {
|
| 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;
|
| }
|
|
|
|
|