Skip to content

Commit 1e624b8

Browse files
a-sivaCommit Queue
authored and
Commit Queue
committed
Reland "[SDK] Reland : Switch dart2js to an AOT snapshot."
This reverts commit ceba7a5. Reason for revert: Flutter tools has been fixed to use 'compile js' option instead of directly naming the snapshot. Original change's description: > Revert "[SDK] Reland : Switch dart2js to an AOT snapshot." > > This reverts commit 9fec00a. > > Reason for revert: flutter tools needs an update to use the 'compile js' command instead of reaching into the dart-sdk and using snapshot names (see flutter/flutter#156654) > > Original change's description: > > [SDK] Reland : Switch dart2js to an AOT snapshot. > > > > TESTS=ci > > > > Change-Id: I8c9f9d01cb462d1027c7a6a6521f40946fc7638b > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/388071 > > Reviewed-by: Ben Konyi <[email protected]> > > Commit-Queue: Siva Annamalai <[email protected]> > > Change-Id: I72bd9ad731b2b60d154c1e6477cce913d72acec4 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390020 > Bot-Commit: Rubber Stamper <[email protected]> > Reviewed-by: Alexander Aprelev <[email protected]> > Commit-Queue: Siva Annamalai <[email protected]> Change-Id: I15a9dc3092e436cdcb0fa84c8e7ddd1dac195074 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390620 Bot-Commit: Rubber Stamper <[email protected]> Reviewed-by: Ben Konyi <[email protected]> Commit-Queue: Siva Annamalai <[email protected]>
1 parent 7bee103 commit 1e624b8

File tree

6 files changed

+74
-35
lines changed

6 files changed

+74
-35
lines changed

pkg/dartdev/lib/src/commands/compile.dart

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import 'dart:async';
66
import 'dart:io';
7-
import 'dart:isolate';
87

98
import 'package:args/args.dart';
109
import 'package:dart2native/generate.dart';
@@ -88,48 +87,41 @@ class CompileJSCommand extends CompileSubcommandCommand {
8887

8988
@override
9089
FutureOr<int> run() async {
91-
if (!Sdk.checkArtifactExists(sdk.dart2jsSnapshot) ||
92-
!Sdk.checkArtifactExists(sdk.librariesJson)) {
93-
return 255;
90+
if (!Sdk.checkArtifactExists(sdk.librariesJson)) {
91+
return genericErrorExitCode;
9492
}
95-
9693
final args = argResults!;
97-
98-
// Build arguments.
99-
final buildArgs = <String>[
94+
var snapshot = sdk.dart2jsAotSnapshot;
95+
var runtime = sdk.dartAotRuntime;
96+
if (!Sdk.checkArtifactExists(snapshot, logError: false)) {
97+
// AOT snapshots cannot be generated on IA32, so we need this fallback
98+
// branch until support for IA32 is dropped (https://dartbug.com/49969).
99+
snapshot = sdk.dart2jsSnapshot;
100+
runtime = sdk.dart;
101+
if (!Sdk.checkArtifactExists(snapshot)) {
102+
return genericErrorExitCode;
103+
}
104+
}
105+
final dart2jsCommand = [
106+
runtime,
107+
snapshot,
100108
'--libraries-spec=${sdk.librariesJson}',
101109
'--cfe-invocation-modes=compile',
102110
'--invoker=dart_cli',
103111
// Add the remaining arguments.
104112
if (args.rest.isNotEmpty) ...args.rest.sublist(0),
105113
];
106-
107-
var retval = 0;
108-
final result = Completer<int>();
109-
final exitPort = ReceivePort()
110-
..listen((msg) {
111-
result.complete(0);
112-
});
113-
final errorPort = ReceivePort()
114-
..listen((error) {
115-
log.stderr(error.toString());
116-
result.complete(255);
117-
});
118114
try {
119-
await Isolate.spawnUri(Uri.file(sdk.dart2jsSnapshot), buildArgs, null,
120-
onExit: exitPort.sendPort, onError: errorPort.sendPort);
121-
retval = await result.future;
115+
final exitCode = await runProcessInheritStdio(dart2jsCommand);
116+
return exitCode;
122117
} catch (e, st) {
123118
log.stderr('Error: JS compilation failed');
124119
log.stderr(e.toString());
125120
if (verbose) {
126121
log.stderr(st.toString());
127122
}
128-
retval = compileErrorExitCode;
123+
return compileErrorExitCode;
129124
}
130-
errorPort.close();
131-
exitPort.close();
132-
return retval;
133125
}
134126
}
135127

pkg/dartdev/lib/src/core.dart

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,11 @@ Future<int> runProcess(
119119
}
120120

121121
log.trace(command.join(' '));
122-
final process = await Process.start(command.first, command.skip(1).toList(),
123-
workingDirectory: cwd);
122+
final process = await Process.start(
123+
command.first,
124+
command.skip(1).toList(),
125+
workingDirectory: cwd,
126+
);
124127
final (_, _, exitCode) = await (
125128
forward(process.stdout, false),
126129
forward(process.stderr, true),
@@ -129,6 +132,22 @@ Future<int> runProcess(
129132
return exitCode;
130133
}
131134

135+
Future<int> runProcessInheritStdio(
136+
List<String> command, {
137+
bool logToTrace = false,
138+
void Function(String str)? listener,
139+
String? cwd,
140+
}) async {
141+
log.trace(command.join(' '));
142+
final process = await Process.start(
143+
command.first,
144+
command.skip(1).toList(),
145+
workingDirectory: cwd,
146+
mode: ProcessStartMode.inheritStdio,
147+
);
148+
return await process.exitCode;
149+
}
150+
132151
Future _streamLineTransform(
133152
Stream<List<int>> stream,
134153
Function(String line) handler,

pkg/dartdev/lib/src/sdk.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ class Sdk {
7171
'dart2js.dart.snapshot',
7272
);
7373

74+
String get dart2jsAotSnapshot => _snapshotPathFor(
75+
'dart2js_aot.dart.snapshot',
76+
);
77+
7478
String get dart2wasmSnapshot => _snapshotPathFor(
7579
'dart2wasm_product.snapshot',
7680
);

pkg/dartdev/test/sdk_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ void _sdk() {
3030
});
3131

3232
test('dart2js snapshot', () {
33-
expectFileExists(Sdk().dart2jsSnapshot);
33+
expectSnapshotExists(Sdk().dart2jsAotSnapshot, Sdk().dart2jsSnapshot);
3434
});
3535
}
3636

sdk/BUILD.gn

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ declare_args() {
4343
# ......snapshots/
4444
# ........analysis_server.dart.snapshot
4545
# ........dart2bytecode.snapshot (if dart_dynamic_modules)
46-
# ........dart2js.dart.snapshot
46+
# ........dart2js_aot.dart.snapshot (AOT snapshot, if not on ia32)
47+
# ........dart2js.dart.snapshot (JIT snapshot only on ia32)
4748
# ........dart2wasm_product.snapshot (if not on ia32)
4849
# ........dartdev.dart.snapshot (app-jit snapshot or kernel dill file)
4950
# ........dartdevc.dart.snapshot
@@ -152,10 +153,6 @@ if (dart_dynamic_modules) {
152153
}
153154

154155
_full_sdk_snapshots = _platform_sdk_snapshots + [
155-
[
156-
"dart2js",
157-
"../utils/compiler:dart2js",
158-
],
159156
[
160157
"dartdevc",
161158
"../utils/ddc:dartdevc",
@@ -165,6 +162,17 @@ _full_sdk_snapshots = _platform_sdk_snapshots + [
165162
"../utils/bazel:kernel_worker",
166163
],
167164
]
165+
if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
166+
_full_sdk_snapshots += [ [
167+
"dart2js_aot",
168+
"../utils/compiler:dart2js_sdk_aot",
169+
] ]
170+
} else {
171+
_full_sdk_snapshots += [ [
172+
"dart2js",
173+
"../utils/compiler:dart2js",
174+
] ]
175+
}
168176

169177
# Libraries that go under lib/
170178
_full_sdk_libraries = [

utils/compiler/BUILD.gn

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,22 @@ aot_snapshot("dart2js_aot") {
8787
name = "dart2js_aot"
8888
}
8989

90+
aot_snapshot("dart2js_sdk_aot") {
91+
deps = [ ":dart2js_create_snapshot_entry" ]
92+
93+
main_dart = "$target_gen_dir/dart2js.dart"
94+
name = "dart2js_aot.dart"
95+
output = "$root_gen_dir/dart2js_aot.dart.snapshot"
96+
97+
# dartaotruntime has dart_product_config applied to it,
98+
# so it is built in # product mode in both release and
99+
# product builds, and is only built in debug mode in debug
100+
# builds. The following line ensures that the dartaotruntime
101+
# and dartdevc_aot snapshot in an SDK build are
102+
# always compatible with each other.
103+
force_product_mode = !dart_debug
104+
}
105+
90106
compile_platform("compile_dart2js_platform_unsound") {
91107
single_root_scheme = "org-dartlang-sdk"
92108
single_root_base = rebase_path("$sdk_root/")

0 commit comments

Comments
 (0)