| Index: runtime/bin/gen_snapshot.cc
|
| diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
|
| index 36c521a771147f98edc1a7c359cc81f2429f3513..2ecf34a10239fb87b7d4a4fa5333861627c2b847 100644
|
| --- a/runtime/bin/gen_snapshot.cc
|
| +++ b/runtime/bin/gen_snapshot.cc
|
| @@ -1234,7 +1234,7 @@ static Dart_Isolate CreateServiceIsolate(const char* script_uri,
|
| void* data,
|
| char** error) {
|
| IsolateData* isolate_data =
|
| - new IsolateData(script_uri, package_root, package_config);
|
| + new IsolateData(script_uri, package_root, package_config, NULL);
|
| Dart_Isolate isolate = NULL;
|
| isolate = Dart_CreateIsolate(script_uri, main, isolate_snapshot_data, NULL,
|
| NULL, isolate_data, error);
|
| @@ -1330,32 +1330,37 @@ int main(int argc, char** argv) {
|
| init_params.file_close = DartUtils::CloseFile;
|
| init_params.entropy_source = DartUtils::EntropySource;
|
|
|
| + MappedMemory* mapped_vm_snapshot_data = NULL;
|
| + MappedMemory* mapped_isolate_snapshot_data = NULL;
|
| if (snapshot_kind == kScript) {
|
| File* file = File::Open(vm_snapshot_data_filename, File::kRead);
|
| if (file == NULL) {
|
| Log::PrintErr("Failed to open: %s\n", vm_snapshot_data_filename);
|
| return kErrorExitCode;
|
| }
|
| - void* buffer = file->Map(File::kReadOnly, 0, file->Length());
|
| - if (buffer == NULL) {
|
| + mapped_vm_snapshot_data = file->Map(File::kReadOnly, 0, file->Length());
|
| + if (mapped_vm_snapshot_data == NULL) {
|
| Log::PrintErr("Failed to read: %s\n", vm_snapshot_data_filename);
|
| return kErrorExitCode;
|
| }
|
| file->Close();
|
| - init_params.vm_snapshot_data = reinterpret_cast<const uint8_t*>(buffer);
|
| + init_params.vm_snapshot_data =
|
| + reinterpret_cast<const uint8_t*>(mapped_vm_snapshot_data->address());
|
|
|
| file = File::Open(isolate_snapshot_data_filename, File::kRead);
|
| if (file == NULL) {
|
| Log::PrintErr("Failed to open: %s\n", isolate_snapshot_data_filename);
|
| return kErrorExitCode;
|
| }
|
| - buffer = file->Map(File::kReadOnly, 0, file->Length());
|
| - if (buffer == NULL) {
|
| + mapped_isolate_snapshot_data =
|
| + file->Map(File::kReadOnly, 0, file->Length());
|
| + if (mapped_isolate_snapshot_data == NULL) {
|
| Log::PrintErr("Failed to read: %s\n", isolate_snapshot_data_filename);
|
| return kErrorExitCode;
|
| }
|
| file->Close();
|
| - isolate_snapshot_data = reinterpret_cast<const uint8_t*>(buffer);
|
| + isolate_snapshot_data = reinterpret_cast<const uint8_t*>(
|
| + mapped_isolate_snapshot_data->address());
|
| }
|
|
|
| char* error = Dart_Initialize(&init_params);
|
| @@ -1366,7 +1371,7 @@ int main(int argc, char** argv) {
|
| }
|
|
|
| IsolateData* isolate_data = new IsolateData(NULL, commandline_package_root,
|
| - commandline_packages_file);
|
| + commandline_packages_file, NULL);
|
| Dart_Isolate isolate = Dart_CreateIsolate(NULL, NULL, isolate_snapshot_data,
|
| NULL, NULL, isolate_data, &error);
|
| if (isolate == NULL) {
|
| @@ -1414,7 +1419,7 @@ int main(int argc, char** argv) {
|
|
|
| // Now we create an isolate into which we load all the code that needs to
|
| // be in the snapshot.
|
| - isolate_data = new IsolateData(NULL, NULL, NULL);
|
| + isolate_data = new IsolateData(NULL, NULL, NULL, NULL);
|
| const uint8_t* kernel = NULL;
|
| intptr_t kernel_length = 0;
|
| const bool is_kernel_file =
|
| @@ -1510,6 +1515,8 @@ int main(int argc, char** argv) {
|
| free(error);
|
| }
|
| EventHandler::Stop();
|
| + delete mapped_vm_snapshot_data;
|
| + delete mapped_isolate_snapshot_data;
|
| return 0;
|
| }
|
|
|
|
|