| Index: runtime/bin/main.cc
|
| ===================================================================
|
| --- runtime/bin/main.cc (revision 20286)
|
| +++ runtime/bin/main.cc (working copy)
|
| @@ -29,7 +29,6 @@
|
|
|
|
|
| // Global state that stores a pointer to the application script snapshot.
|
| -static bool use_script_snapshot = false;
|
| static bool generate_script_snapshot = false;
|
| static File* snapshot_file = NULL;
|
|
|
| @@ -154,25 +153,6 @@
|
| }
|
|
|
|
|
| -static bool ProcessUseScriptSnapshotOption(const char* filename) {
|
| - if (filename != NULL && strlen(filename) != 0) {
|
| - use_script_snapshot = true;
|
| - if (generate_script_snapshot) {
|
| - Log::PrintErr("Incompatible options specified --generate-script-snapshot "
|
| - "and --use-script-snapshot\n");
|
| - return false;
|
| - }
|
| - snapshot_file = File::Open(filename, File::kRead);
|
| - if (snapshot_file == NULL) {
|
| - Log::PrintErr("Unable to open file %s for reading the snapshot\n",
|
| - filename);
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -
|
| static bool ProcessVmStatsOption(const char* port) {
|
| ASSERT(port != NULL);
|
| if (*port == '\0') {
|
| @@ -216,11 +196,6 @@
|
| " dart\n");
|
| return false;
|
| }
|
| - if (use_script_snapshot) {
|
| - Log::PrintErr("Incompatible options specified --use-script-snapshot "
|
| - "and --generate-script-snapshot\n");
|
| - return false;
|
| - }
|
| snapshot_file = File::Open(filename, File::kWriteTruncate);
|
| if (snapshot_file == NULL) {
|
| Log::PrintErr("Unable to open file %s for writing the snapshot\n",
|
| @@ -249,7 +224,6 @@
|
| { "--break_at=", ProcessBreakpointOption },
|
| { "--compile_all", ProcessCompileAllOption },
|
| { "--debug", ProcessDebugOption },
|
| - { "--use-script-snapshot=", ProcessUseScriptSnapshotOption },
|
| { "--generate-script-snapshot=", ProcessGenScriptSnapshotOption },
|
| { "--stats-root=", ProcessVmStatsRootOption },
|
| { "--stats", ProcessVmStatsOption },
|
| @@ -476,54 +450,23 @@
|
| CHECK_RESULT(result);
|
|
|
| // Load the specified application script into the newly created isolate.
|
| - Dart_Handle library;
|
| - if (use_script_snapshot) {
|
| - if (snapshot_file == NULL) {
|
| - use_script_snapshot = false;
|
| - *error = strdup("Invalid script snapshot file name specified");
|
| - Dart_ExitScope();
|
| - Dart_ShutdownIsolate();
|
| - return false;
|
| - }
|
| - size_t len = snapshot_file->Length();
|
| - uint8_t* buffer = reinterpret_cast<uint8_t*>(malloc(len));
|
| - if (buffer == NULL) {
|
| - delete snapshot_file;
|
| - snapshot_file = NULL;
|
| - use_script_snapshot = false;
|
| - *error = strdup("Unable to read contents of script snapshot file");
|
| - Dart_ExitScope();
|
| - Dart_ShutdownIsolate();
|
| - return false;
|
| - }
|
| - // Prepare for script loading by setting up the 'print' and 'timer'
|
| - // closures and setting up 'package root' for URI resolution.
|
| - Dart_Handle builtin_lib =
|
| - Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary);
|
| - DartUtils::PrepareForScriptLoading(package_root, builtin_lib);
|
|
|
| - snapshot_file->ReadFully(buffer, len);
|
| - library = Dart_LoadScriptFromSnapshot(buffer);
|
| - free(buffer);
|
| - delete snapshot_file;
|
| - snapshot_file = NULL;
|
| - use_script_snapshot = false; // No further usage of script snapshots.
|
| - } else {
|
| - // Prepare builtin and its dependent libraries for use to resolve URIs.
|
| - Dart_Handle uri_url = DartUtils::NewString(DartUtils::kUriLibURL);
|
| - Dart_Handle uri_lib = Dart_LookupLibrary(uri_url);
|
| - CHECK_RESULT(uri_lib);
|
| - Dart_Handle builtin_lib =
|
| - Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary);
|
| - CHECK_RESULT(builtin_lib);
|
| + // Prepare builtin and its dependent libraries for use to resolve URIs.
|
| + // The builtin library is part of the core snapshot and would already be
|
| + // available here in the case of script snapshot loading.
|
| + Dart_Handle uri_url = DartUtils::NewString(DartUtils::kUriLibURL);
|
| + Dart_Handle uri_lib = Dart_LookupLibrary(uri_url);
|
| + CHECK_RESULT(uri_lib);
|
| + Dart_Handle builtin_lib =
|
| + Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary);
|
| + CHECK_RESULT(builtin_lib);
|
|
|
| - // Prepare for script loading by setting up the 'print' and 'timer'
|
| - // closures and setting up 'package root' for URI resolution.
|
| - result = DartUtils::PrepareForScriptLoading(package_root, builtin_lib);
|
| - CHECK_RESULT(result);
|
| + // Prepare for script loading by setting up the 'print' and 'timer'
|
| + // closures and setting up 'package root' for URI resolution.
|
| + result = DartUtils::PrepareForScriptLoading(package_root, builtin_lib);
|
| + CHECK_RESULT(result);
|
|
|
| - library = DartUtils::LoadScript(script_uri, builtin_lib);
|
| - }
|
| + Dart_Handle library = DartUtils::LoadScript(script_uri, builtin_lib);
|
| CHECK_RESULT(library);
|
| if (!Dart_IsLibrary(library)) {
|
| char errbuf[256];
|
| @@ -825,6 +768,9 @@
|
| return kErrorExitCode; // Indicates we encountered an error.
|
| }
|
|
|
| + // Write the magic number to indicate file is a script snapshot.
|
| + DartUtils::WriteMagicNumber(snapshot_file);
|
| +
|
| // Now write the snapshot out to specified file.
|
| bool bytes_written = snapshot_file->WriteFully(buffer, size);
|
| ASSERT(bytes_written);
|
|
|