Skip to content

Commit 000bec4

Browse files
committed
Account for kernel files being passed in directly on the command line this fixes issue 30212 (#30212)
[email protected] Review-Url: https://codereview.chromium.org/2985563003 .
1 parent b1da48a commit 000bec4

File tree

2 files changed

+26
-19
lines changed

2 files changed

+26
-19
lines changed

pkg/pkg.status

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@ front_end/test/src/incremental/hot_reload_e2e_test: Skip # Issue 29819
5555
[ $compiler != dart2analyzer ]
5656
analyzer/test/src/summary/summarize_fasta_test: RuntimeError, Slow
5757

58-
[ $runtime == vm ]
59-
front_end/test/fasta/bootstrap_test: Skip # Issue 30212
60-
front_end/test/fasta/compile_test: Skip # Issue 30212
61-
front_end/test/fasta/strong_test: Skip # Issue 30212
62-
6358
[ $runtime != vm || $mode != release || $system == windows ]
6459
front_end/test/fasta/*: Skip
6560
kernel/test/closures_test: Skip

runtime/bin/main.cc

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,7 @@ static void SnapshotOnExitHook(int64_t exit_code) {
822822

823823
static Dart_Isolate IsolateSetupHelper(Dart_Isolate isolate,
824824
bool is_main_isolate,
825+
bool kernel_file_specified,
825826
const char* script_uri,
826827
const char* package_root,
827828
const char* packages_config,
@@ -844,15 +845,20 @@ static Dart_Isolate IsolateSetupHelper(Dart_Isolate isolate,
844845
result = DartUtils::PrepareForScriptLoading(false, trace_loading);
845846
CHECK_RESULT(result);
846847

847-
if (kernel_program != NULL) {
848-
Dart_Handle uri = Dart_NewStringFromCString(script_uri);
849-
CHECK_RESULT(uri);
850-
Dart_Handle resolved_script_uri = DartUtils::ResolveScript(uri);
851-
CHECK_RESULT(resolved_script_uri);
852-
result =
853-
Dart_LoadScript(uri, resolved_script_uri,
854-
reinterpret_cast<Dart_Handle>(kernel_program), 0, 0);
855-
CHECK_RESULT(result);
848+
if (kernel_file_specified) {
849+
ASSERT(kernel_program != NULL);
850+
result = Dart_LoadKernel(kernel_program);
851+
} else {
852+
if (kernel_program != NULL) {
853+
Dart_Handle uri = Dart_NewStringFromCString(script_uri);
854+
CHECK_RESULT(uri);
855+
Dart_Handle resolved_script_uri = DartUtils::ResolveScript(uri);
856+
CHECK_RESULT(resolved_script_uri);
857+
result =
858+
Dart_LoadScript(uri, resolved_script_uri,
859+
reinterpret_cast<Dart_Handle>(kernel_program), 0, 0);
860+
CHECK_RESULT(result);
861+
}
856862
}
857863
if (set_native_resolvers) {
858864
// Setup the native resolver as the snapshot does not carry it.
@@ -976,7 +982,7 @@ static Dart_Isolate CreateAndSetupKernelIsolate(const char* main,
976982
return NULL;
977983
}
978984

979-
return IsolateSetupHelper(isolate, false, script_uri, package_root,
985+
return IsolateSetupHelper(isolate, false, false, script_uri, package_root,
980986
packages_config, isolate_snapshot_data,
981987
isolate_run_app_snapshot, error, exit_code);
982988
}
@@ -1074,6 +1080,7 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
10741080
void* kernel_platform = NULL;
10751081
void* kernel_program = NULL;
10761082
AppSnapshot* app_snapshot = NULL;
1083+
bool kernel_file_specified = false;
10771084

10781085
IsolateData* isolate_data =
10791086
new IsolateData(script_uri, package_root, packages_config, app_snapshot);
@@ -1114,7 +1121,11 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
11141121
if (!isolate_run_app_snapshot) {
11151122
kernel_platform = dfe.kernel_platform();
11161123
kernel_program = dfe.ReadScript(script_uri);
1117-
if (kernel_program == NULL && dfe.UseDartFrontend()) {
1124+
if (kernel_program != NULL) {
1125+
// A kernel file was specified on the command line instead of a source
1126+
// file. Load that kernel file directly.
1127+
kernel_file_specified = true;
1128+
} else if (dfe.UseDartFrontend()) {
11181129
kernel_program = dfe.CompileAndReadScript(script_uri, error, exit_code);
11191130
if (kernel_program == NULL) {
11201131
return NULL;
@@ -1142,9 +1153,10 @@ static Dart_Isolate CreateIsolateAndSetupHelper(bool is_main_isolate,
11421153
}
11431154

11441155
bool set_native_resolvers = (kernel_program || isolate_snapshot_data);
1145-
return IsolateSetupHelper(isolate, is_main_isolate, script_uri, package_root,
1146-
packages_config, set_native_resolvers,
1147-
isolate_run_app_snapshot, error, exit_code);
1156+
return IsolateSetupHelper(isolate, is_main_isolate, kernel_file_specified,
1157+
script_uri, package_root, packages_config,
1158+
set_native_resolvers, isolate_run_app_snapshot,
1159+
error, exit_code);
11481160
}
11491161

11501162
#undef CHECK_RESULT

0 commit comments

Comments
 (0)