Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(358)

Unified Diff: runtime/bin/gen_snapshot.cc

Issue 2622053002: Refactor snapshots pieces to include a section for loading instructions into the heap of a regular … (Closed)
Patch Set: . Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/bin/extensions_win.cc ('k') | runtime/bin/main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/gen_snapshot.cc
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index 3ebc8fb986e70c8367b667b34bb975285007db68..ef809ba96e01c9ded9fd509e6b9c6070d310f9ae 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -60,11 +60,11 @@ static const int kRestartRequestExitCode = 1000;
// Global state that indicates whether a snapshot is to be created and
// if so which file to write the snapshot into.
-static const char* vm_isolate_snapshot_filename = NULL;
-static const char* isolate_snapshot_filename = NULL;
+static const char* vm_snapshot_data_filename = NULL;
+static const char* vm_snapshot_instructions_filename = NULL;
+static const char* isolate_snapshot_data_filename = NULL;
+static const char* isolate_snapshot_instructions_filename = NULL;
static const char* assembly_filename = NULL;
-static const char* instructions_blob_filename = NULL;
-static const char* rodata_blob_filename = NULL;
// Value of the --package-root flag.
@@ -189,50 +189,50 @@ static const char* ProcessOption(const char* option, const char* name) {
}
-static bool ProcessVmIsolateSnapshotOption(const char* option) {
- const char* name = ProcessOption(option, "--vm_isolate_snapshot=");
+static bool ProcessVmSnapshotDataOption(const char* option) {
+ const char* name = ProcessOption(option, "--vm_snapshot_data=");
if (name != NULL) {
- vm_isolate_snapshot_filename = name;
+ vm_snapshot_data_filename = name;
return true;
}
return false;
}
-static bool ProcessIsolateSnapshotOption(const char* option) {
- const char* name = ProcessOption(option, "--isolate_snapshot=");
+static bool ProcessVmSnapshotInstructionsOption(const char* option) {
+ const char* name = ProcessOption(option, "--vm_snapshot_instructions=");
if (name != NULL) {
- isolate_snapshot_filename = name;
+ vm_snapshot_instructions_filename = name;
return true;
}
return false;
}
-static bool ProcessAssemblyOption(const char* option) {
- const char* name = ProcessOption(option, "--assembly=");
+static bool ProcessIsolateSnapshotDataOption(const char* option) {
+ const char* name = ProcessOption(option, "--isolate_snapshot_data=");
if (name != NULL) {
- assembly_filename = name;
+ isolate_snapshot_data_filename = name;
return true;
}
return false;
}
-static bool ProcessInstructionsBlobOption(const char* option) {
- const char* name = ProcessOption(option, "--instructions_blob=");
+static bool ProcessIsolateSnapshotInstructionsOption(const char* option) {
+ const char* name = ProcessOption(option, "--isolate_snapshot_instructions=");
if (name != NULL) {
- instructions_blob_filename = name;
+ isolate_snapshot_instructions_filename = name;
return true;
}
return false;
}
-static bool ProcessRodataBlobOption(const char* option) {
- const char* name = ProcessOption(option, "--rodata_blob=");
+static bool ProcessAssemblyOption(const char* option) {
+ const char* name = ProcessOption(option, "--assembly=");
if (name != NULL) {
- rodata_blob_filename = name;
+ assembly_filename = name;
return true;
}
return false;
@@ -286,7 +286,8 @@ static bool ProcessURLmappingOption(const char* option) {
static bool IsSnapshottingForPrecompilation() {
- return (assembly_filename != NULL) || (instructions_blob_filename != NULL);
+ return (assembly_filename != NULL) ||
+ (vm_snapshot_instructions_filename != NULL);
}
@@ -304,11 +305,11 @@ static int ParseArguments(int argc,
// Parse out the vm options.
while ((i < argc) && IsValidFlag(argv[i], kPrefix, kPrefixLen)) {
- if (ProcessVmIsolateSnapshotOption(argv[i]) ||
- ProcessIsolateSnapshotOption(argv[i]) ||
+ if (ProcessVmSnapshotDataOption(argv[i]) ||
+ ProcessVmSnapshotInstructionsOption(argv[i]) ||
+ ProcessIsolateSnapshotDataOption(argv[i]) ||
+ ProcessIsolateSnapshotInstructionsOption(argv[i]) ||
ProcessAssemblyOption(argv[i]) ||
- ProcessInstructionsBlobOption(argv[i]) ||
- ProcessRodataBlobOption(argv[i]) ||
ProcessEmbedderEntryPointsManifestOption(argv[i]) ||
ProcessURLmappingOption(argv[i]) || ProcessPackageRootOption(argv[i]) ||
ProcessPackagesOption(argv[i]) || ProcessEnvironmentOption(argv[i])) {
@@ -336,19 +337,19 @@ static int ParseArguments(int argc,
return -1;
}
- if (vm_isolate_snapshot_filename == NULL) {
- Log::PrintErr("No vm isolate snapshot output file specified.\n\n");
+ if (vm_snapshot_data_filename == NULL) {
+ Log::PrintErr("No vm snapshot output file specified.\n\n");
return -1;
}
- if (isolate_snapshot_filename == NULL) {
+ if (isolate_snapshot_data_filename == NULL) {
Log::PrintErr("No isolate snapshot output file specified.\n\n");
return -1;
}
bool precompiled_as_assembly = assembly_filename != NULL;
- bool precompiled_as_blobs =
- (instructions_blob_filename != NULL) || (rodata_blob_filename != NULL);
+ bool precompiled_as_blobs = (vm_snapshot_instructions_filename != NULL) ||
+ (isolate_snapshot_instructions_filename != NULL);
if (precompiled_as_assembly && precompiled_as_blobs) {
Log::PrintErr(
"Cannot request a precompiled snapshot simultaneously as "
@@ -357,11 +358,12 @@ static int ParseArguments(int argc,
"--rodata-blob=<output.file>)\n\n");
return -1;
}
- if ((instructions_blob_filename != NULL) != (rodata_blob_filename != NULL)) {
+ if ((vm_snapshot_instructions_filename != NULL) !=
+ (isolate_snapshot_instructions_filename != NULL)) {
Log::PrintErr(
"Requesting a precompiled snapshot as blobs requires both "
- "(--instructions-blob=<output.file> and "
- "--rodata-blob=<output.file>)\n\n");
+ "(--vm_snapshot_instructions=<output.file> and "
+ "--isolate_snapshot_instructions=<output.file>)\n\n");
return -1;
}
if (IsSnapshottingForPrecompilation() && (entry_points_files->count() == 0)) {
@@ -640,8 +642,8 @@ static void PrintUsage() {
" dart:something,SomeClass,doSomething \n"
" \n"
" Supported options: \n"
-" --vm_isolate_snapshot=<file> A full snapshot is a compact \n"
-" --isolate_snapshot=<file> representation of the dart vm isolate \n"
+" --vm_snapshot_data=<file> A full snapshot is a compact \n"
+" --isolate_snapshot_data=<file> representation of the dart vm isolate \n"
" heap and dart isolate heap states. \n"
" Both these options are required \n"
" \n"
@@ -658,9 +660,10 @@ static void PrintUsage() {
" assembly that must be linked into \n"
" the target binary \n"
" \n"
-" --instructions_blob=<file> (Precompilation only) Contains the \n"
-" --rodata_blob=<file> instructions and read-only data that \n"
-" must be mapped into the target binary \n"
+" --vm_snapshot_instructions=<file> (Precompilation only) Contains the \n"
+" --isolate_snapshot_instructions=<file> instructions and read-only data \n"
+" that must be mapped into the target \n"
+" binary \n"
" \n"
" --embedder_entry_points_manifest=<file> (Precompilation or app \n"
" snapshots) Contains embedder's entry \n"
@@ -1027,21 +1030,23 @@ static Dart_QualifiedFunctionName* ParseEntryPointsManifestIfPresent() {
static void CreateAndWriteSnapshot() {
ASSERT(!IsSnapshottingForPrecompilation());
Dart_Handle result;
- uint8_t* vm_isolate_buffer = NULL;
- intptr_t vm_isolate_size = 0;
- uint8_t* isolate_buffer = NULL;
- intptr_t isolate_size = 0;
+ uint8_t* vm_snapshot_data_buffer = NULL;
+ intptr_t vm_snapshot_data_size = 0;
+ uint8_t* isolate_snapshot_data_buffer = NULL;
+ intptr_t isolate_snapshot_data_size = 0;
// First create a snapshot.
- result = Dart_CreateSnapshot(&vm_isolate_buffer, &vm_isolate_size,
- &isolate_buffer, &isolate_size);
+ result = Dart_CreateSnapshot(&vm_snapshot_data_buffer, &vm_snapshot_data_size,
+ &isolate_snapshot_data_buffer,
+ &isolate_snapshot_data_size);
CHECK_RESULT(result);
// Now write the vm isolate and isolate snapshots out to the
// specified file and exit.
- WriteSnapshotFile(vm_isolate_snapshot_filename, vm_isolate_buffer,
- vm_isolate_size);
- WriteSnapshotFile(isolate_snapshot_filename, isolate_buffer, isolate_size);
+ WriteSnapshotFile(vm_snapshot_data_filename, vm_snapshot_data_buffer,
+ vm_snapshot_data_size);
+ WriteSnapshotFile(isolate_snapshot_data_filename,
+ isolate_snapshot_data_buffer, isolate_snapshot_data_size);
Dart_ExitScope();
// Shutdown the isolate.
@@ -1068,26 +1073,31 @@ static void CreateAndWritePrecompiledSnapshot(
CHECK_RESULT(result);
WriteSnapshotFile(assembly_filename, assembly_buffer, assembly_size);
} else {
- uint8_t* vm_isolate_buffer = NULL;
- intptr_t vm_isolate_size = 0;
- uint8_t* isolate_buffer = NULL;
- intptr_t isolate_size = 0;
- uint8_t* instructions_blob_buffer = NULL;
- intptr_t instructions_blob_size = 0;
- uint8_t* rodata_blob_buffer = NULL;
- intptr_t rodata_blob_size = 0;
+ uint8_t* vm_snapshot_data_buffer = NULL;
+ intptr_t vm_snapshot_data_size = 0;
+ uint8_t* vm_snapshot_instructions_buffer = NULL;
+ intptr_t vm_snapshot_instructions_size = 0;
+ uint8_t* isolate_snapshot_data_buffer = NULL;
+ intptr_t isolate_snapshot_data_size = 0;
+ uint8_t* isolate_snapshot_instructions_buffer = NULL;
+ intptr_t isolate_snapshot_instructions_size = 0;
result = Dart_CreateAppAOTSnapshotAsBlobs(
- &vm_isolate_buffer, &vm_isolate_size, &isolate_buffer, &isolate_size,
- &instructions_blob_buffer, &instructions_blob_size, &rodata_blob_buffer,
- &rodata_blob_size);
+ &vm_snapshot_data_buffer, &vm_snapshot_data_size,
+ &vm_snapshot_instructions_buffer, &vm_snapshot_instructions_size,
+ &isolate_snapshot_data_buffer, &isolate_snapshot_data_size,
+ &isolate_snapshot_instructions_buffer,
+ &isolate_snapshot_instructions_size);
CHECK_RESULT(result);
- WriteSnapshotFile(vm_isolate_snapshot_filename, vm_isolate_buffer,
- vm_isolate_size);
- WriteSnapshotFile(isolate_snapshot_filename, isolate_buffer, isolate_size);
- WriteSnapshotFile(instructions_blob_filename, instructions_blob_buffer,
- instructions_blob_size);
- WriteSnapshotFile(rodata_blob_filename, rodata_blob_buffer,
- rodata_blob_size);
+ WriteSnapshotFile(vm_snapshot_data_filename, vm_snapshot_data_buffer,
+ vm_snapshot_data_size);
+ WriteSnapshotFile(vm_snapshot_instructions_filename,
+ vm_snapshot_instructions_buffer,
+ vm_snapshot_instructions_size);
+ WriteSnapshotFile(isolate_snapshot_data_filename,
+ isolate_snapshot_data_buffer, isolate_snapshot_data_size);
+ WriteSnapshotFile(isolate_snapshot_instructions_filename,
+ isolate_snapshot_instructions_buffer,
+ isolate_snapshot_instructions_size);
}
Dart_ExitScope();
@@ -1139,8 +1149,8 @@ static Dart_Isolate CreateServiceIsolate(const char* script_uri,
IsolateData* isolate_data =
new IsolateData(script_uri, package_root, package_config);
Dart_Isolate isolate = NULL;
- isolate =
- Dart_CreateIsolate(script_uri, main, NULL, NULL, isolate_data, error);
+ isolate = Dart_CreateIsolate(script_uri, main, NULL, NULL, NULL, isolate_data,
+ error);
if (isolate == NULL) {
Log::PrintErr("Error: Could not create service isolate");
@@ -1243,7 +1253,7 @@ int main(int argc, char** argv) {
IsolateData* isolate_data = new IsolateData(NULL, commandline_package_root,
commandline_packages_file);
Dart_Isolate isolate =
- Dart_CreateIsolate(NULL, NULL, NULL, NULL, isolate_data, &error);
+ Dart_CreateIsolate(NULL, NULL, NULL, NULL, NULL, isolate_data, &error);
if (isolate == NULL) {
Log::PrintErr("Error: %s", error);
free(error);
@@ -1257,8 +1267,8 @@ int main(int argc, char** argv) {
result = Dart_SetEnvironmentCallback(EnvironmentCallback);
CHECK_RESULT(result);
- ASSERT(vm_isolate_snapshot_filename != NULL);
- ASSERT(isolate_snapshot_filename != NULL);
+ ASSERT(vm_snapshot_data_filename != NULL);
+ ASSERT(isolate_snapshot_data_filename != NULL);
// Load up the script before a snapshot is created.
if (app_script_name != NULL) {
// This is the case of a custom embedder (e.g: dartium) trying to
@@ -1305,7 +1315,8 @@ int main(int argc, char** argv) {
is_kernel_file
? Dart_CreateIsolateFromKernel(NULL, NULL, kernel_program, NULL,
isolate_data, &error)
- : Dart_CreateIsolate(NULL, NULL, NULL, NULL, isolate_data, &error);
+ : Dart_CreateIsolate(NULL, NULL, NULL, NULL, NULL, isolate_data,
+ &error);
if (isolate == NULL) {
Log::PrintErr("%s", error);
free(error);
« no previous file with comments | « runtime/bin/extensions_win.cc ('k') | runtime/bin/main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698