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

Unified Diff: runtime/bin/main.cc

Issue 2894773004: Changes to make isolate reload functionality work with the --dfe option. (Closed)
Patch Set: Fix regression test errors. Created 3 years, 7 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/loader.cc ('k') | runtime/bin/run_vm_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/main.cc
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 254680f32e5eac082d820bba1288f35e745c8a54..e8615b1ffa38d9b33452e76f09c7ce7b278910e9 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -11,6 +11,7 @@
#include "bin/builtin.h"
#include "bin/dartutils.h"
+#include "bin/dfe.h"
#include "bin/directory.h"
#include "bin/embedded_dart_io.h"
#include "bin/error_exit.h"
@@ -78,15 +79,9 @@ enum SnapshotKind {
};
static SnapshotKind gen_snapshot_kind = kNone;
static const char* snapshot_deps_filename = NULL;
-
-static bool use_dart_frontend = false;
-
-static const char* frontend_filename = NULL;
-
-// True if the VM should boostrap the SDK from a binary (.dill) file. The
-// filename points into an argv buffer and does not need to be freed.
-static bool use_platform_binary = false;
-static const char* platform_binary_filename = NULL;
+#if !defined(DART_PRECOMPILED_RUNTIME)
+DFE dfe;
+#endif
// Value of the --save-feedback flag.
// (This pointer points into an argv buffer and does not need to be
@@ -340,14 +335,14 @@ static bool ProcessParseAllOption(const char* arg,
}
+#if !defined(DART_PRECOMPILED_RUNTIME)
static bool ProcessFrontendOption(const char* filename,
CommandLineOptions* vm_options) {
ASSERT(filename != NULL);
if (filename[0] == '\0') {
return false;
}
- use_dart_frontend = true;
- frontend_filename = filename;
+ dfe.set_frontend_filename(filename);
vm_options->AddArgument("--use-dart-frontend");
return true;
}
@@ -359,10 +354,10 @@ static bool ProcessPlatformOption(const char* filename,
if (filename[0] == '\0') {
return false;
}
- use_platform_binary = true;
- platform_binary_filename = filename;
+ dfe.set_platform_binary_filename(filename);
return true;
}
+#endif
static bool ProcessUseBlobsOption(const char* arg,
@@ -588,8 +583,10 @@ static struct {
// VM specific options to the standalone dart program.
{"--compile_all", ProcessCompileAllOption},
{"--parse_all", ProcessParseAllOption},
+#if !defined(DART_PRECOMPILED_RUNTIME)
{"--dfe=", ProcessFrontendOption},
{"--platform=", ProcessPlatformOption},
+#endif
{"--enable-vm-service", ProcessEnableVmServiceOption},
{"--disable-service-origin-check", ProcessDisableServiceOriginCheckOption},
{"--observe", ProcessObserveOption},
@@ -837,19 +834,6 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
char** error,
int* exit_code) {
ASSERT(script_uri != NULL);
- const bool is_kernel_isolate =
- strcmp(script_uri, DART_KERNEL_ISOLATE_NAME) == 0;
- if (is_kernel_isolate) {
- if (!use_dart_frontend) {
- *error = strdup("Kernel isolate not supported.");
- return NULL;
- }
- script_uri = frontend_filename;
- if (packages_config == NULL) {
- packages_config = commandline_packages_file;
- }
- }
-
void* kernel_platform = NULL;
void* kernel_program = NULL;
AppSnapshot* app_snapshot = NULL;
@@ -867,6 +851,18 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
const uint8_t* isolate_snapshot_data = core_isolate_snapshot_data;
const uint8_t* isolate_snapshot_instructions =
core_isolate_snapshot_instructions;
+ const bool is_kernel_isolate =
+ strcmp(script_uri, DART_KERNEL_ISOLATE_NAME) == 0;
+ if (is_kernel_isolate) {
+ if (!dfe.UseDartFrontend()) {
+ *error = strdup("Kernel isolate not supported.");
+ return NULL;
+ }
+ script_uri = dfe.frontend_filename();
+ if (packages_config == NULL) {
+ packages_config = commandline_packages_file;
+ }
+ }
if ((app_isolate_snapshot_data != NULL) &&
(is_main_isolate || ((app_script_uri != NULL) &&
(strcmp(script_uri, app_script_uri) == 0)))) {
@@ -888,10 +884,10 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0;
if (!is_kernel_isolate && !is_service_isolate) {
const uint8_t* platform_file = NULL;
- if (use_platform_binary) {
+ if (dfe.UsePlatformBinary()) {
intptr_t platform_length = -1;
- bool success = TryReadKernel(platform_binary_filename, &platform_file,
- &platform_length);
+ bool success = dfe.TryReadKernelFile(dfe.platform_binary_filename(),
+ &platform_file, &platform_length);
if (!success) {
*error = strdup("The platform binary is not a valid Dart Kernel file.");
*exit_code = kErrorExitCode;
@@ -903,7 +899,7 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
bool is_kernel = false;
const uint8_t* kernel_file = NULL;
intptr_t kernel_length = -1;
- if (use_dart_frontend) {
+ if (dfe.UseDartFrontend()) {
Dart_KernelCompilationResult result = Dart_CompileToKernel(script_uri);
*error = result.error; // Copy error message (if any).
switch (result.status) {
@@ -928,7 +924,8 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
return NULL;
}
} else if (!isolate_run_app_snapshot) {
- is_kernel = TryReadKernel(script_uri, &kernel_file, &kernel_length);
+ is_kernel =
+ dfe.TryReadKernelFile(script_uri, &kernel_file, &kernel_length);
}
if (is_kernel) {
« no previous file with comments | « runtime/bin/loader.cc ('k') | runtime/bin/run_vm_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698