Skip to content

Commit 94c120a

Browse files
alexmarkovCommit Bot
authored and
Commit Bot
committed
[vm] Cleanup old async/async*/sync* implementation from kernel
This change removes kernel transformation which was used to desugar async/async*/sync* functions in the old implementation of async/async*/sync*. The useful part of the transformation is retained in pkg/vm/lib/transformations/for_in_lowering.dart. TEST=ci Issue: #48378 Change-Id: Ic70c1fb35162a31bcc22eac3a8f6488b61e945b4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249944 Reviewed-by: Slava Egorov <[email protected]> Reviewed-by: Johnni Winther <[email protected]> Reviewed-by: Martin Kustermann <[email protected]> Commit-Queue: Alexander Markov <[email protected]>
1 parent d5abb2a commit 94c120a

File tree

13 files changed

+271
-2540
lines changed

13 files changed

+271
-2540
lines changed

pkg/front_end/lib/src/fasta/source/source_loader.dart

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2730,45 +2730,14 @@ class int extends num {}
27302730
27312731
class num {}
27322732
2733-
class _SyncIterable {}
2734-
2735-
class _SyncIterator {
2736-
var _current;
2737-
var _yieldEachIterable;
2738-
}
2739-
27402733
class Function {}
27412734
""";
27422735

27432736
/// A minimal implementation of dart:async that is sufficient to create an
27442737
/// instance of [CoreTypes] and compile program.
27452738
const String defaultDartAsyncSource = """
2746-
_asyncErrorWrapperHelper(continuation) {}
2747-
27482739
void _asyncStarMoveNextHelper(var stream) {}
27492740
2750-
_asyncThenWrapperHelper(continuation) {}
2751-
2752-
_awaitHelper(object, thenCallback, errorCallback) {}
2753-
2754-
_completeOnAsyncReturn(_future, value, async_jump_var) {}
2755-
2756-
_completeWithNoFutureOnAsyncReturn(_future, value, async_jump_var) {}
2757-
2758-
_completeOnAsyncError(_future, e, st, async_jump_var) {}
2759-
2760-
class _AsyncStarStreamController {
2761-
add(event) {}
2762-
2763-
addError(error, stackTrace) {}
2764-
2765-
addStream(stream) {}
2766-
2767-
close() {}
2768-
2769-
get stream => null;
2770-
}
2771-
27722741
abstract class Completer {
27732742
factory Completer.sync() => null;
27742743

pkg/front_end/testcases/general/issue38253c.dart.strong.transformed.expect

Lines changed: 0 additions & 69 deletions
This file was deleted.

pkg/frontend_server/lib/frontend_server.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ ArgParser argParser = ArgParser(allowTrailingOptions: true)
5858
help: 'Whether dart:mirrors is supported. By default dart:mirrors is '
5959
'supported when --aot and --minimal-kernel are not used.',
6060
defaultsTo: null)
61-
..addFlag('compact-async',
62-
help: 'Enable new compact async/await implementation.', defaultsTo: true)
61+
..addFlag('compact-async', help: 'Obsolete, ignored.', hide: true)
6362
..addFlag('tfa',
6463
help:
6564
'Enable global type flow analysis and related transformations in AOT mode.',
@@ -543,7 +542,6 @@ class FrontendCompiler implements CompilerInterface {
543542
nullSafety: compilerOptions.nnbdMode == NnbdMode.Strong,
544543
supportMirrors: options['support-mirrors'] ??
545544
!(options['aot'] || options['minimal-kernel']),
546-
compactAsync: options['compact-async'],
547545
);
548546
if (compilerOptions.target == null) {
549547
print('Failed to create front-end target ${options['target']}.');

pkg/kernel/lib/core_types.dart

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -119,57 +119,15 @@ class CoreTypes {
119119
CoreTypes(Component component)
120120
: index = new LibraryIndex.coreLibraries(component);
121121

122-
late final Procedure asyncErrorWrapperHelperProcedure =
123-
index.getTopLevelProcedure('dart:async', '_asyncErrorWrapperHelper');
124-
125122
late final Library asyncLibrary = index.getLibrary('dart:async');
126123

127-
late final Procedure asyncStarStreamControllerAdd =
128-
index.getProcedure('dart:async', '_AsyncStarStreamController', 'add');
129-
130-
late final Procedure asyncStarStreamControllerAddError = index.getProcedure(
131-
'dart:async', '_AsyncStarStreamController', 'addError');
132-
133-
late final Procedure asyncStarStreamControllerAddStream = index.getProcedure(
134-
'dart:async', '_AsyncStarStreamController', 'addStream');
135-
136-
late final Class asyncStarStreamControllerClass =
137-
index.getClass('dart:async', '_AsyncStarStreamController');
138-
139-
late final Procedure asyncStarStreamControllerClose =
140-
index.getProcedure('dart:async', '_AsyncStarStreamController', 'close');
141-
142-
late final Constructor asyncStarStreamControllerDefaultConstructor =
143-
index.getConstructor('dart:async', '_AsyncStarStreamController', '');
144-
145-
late final Member asyncStarStreamControllerStream =
146-
index.getMember('dart:async', '_AsyncStarStreamController', 'get:stream');
147-
148124
late final Procedure asyncStarMoveNextHelper =
149125
index.getTopLevelProcedure('dart:async', '_asyncStarMoveNextHelper');
150126

151-
late final Procedure asyncThenWrapperHelperProcedure =
152-
index.getTopLevelProcedure('dart:async', '_asyncThenWrapperHelper');
153-
154-
late final Procedure awaitHelperProcedure =
155-
index.getTopLevelProcedure('dart:async', '_awaitHelper');
156-
157127
late final Class boolClass = index.getClass('dart:core', 'bool');
158128

159129
late final Class futureImplClass = index.getClass('dart:async', '_Future');
160130

161-
late final Constructor futureImplConstructor =
162-
index.getConstructor('dart:async', '_Future', '');
163-
164-
late final Procedure completeOnAsyncReturn =
165-
index.getTopLevelProcedure('dart:async', '_completeOnAsyncReturn');
166-
167-
late final Procedure completeWithNoFutureOnAsyncReturn = index
168-
.getTopLevelProcedure('dart:async', '_completeWithNoFutureOnAsyncReturn');
169-
170-
late final Procedure completeOnAsyncError =
171-
index.getTopLevelProcedure('dart:async', '_completeOnAsyncError');
172-
173131
late final Library coreLibrary = index.getLibrary('dart:core');
174132

175133
late final Class doubleClass = index.getClass('dart:core', 'double');
@@ -287,18 +245,6 @@ class CoreTypes {
287245

288246
late final Class symbolClass = index.getClass('dart:core', 'Symbol');
289247

290-
late final Constructor syncIterableDefaultConstructor =
291-
index.getConstructor('dart:core', '_SyncIterable', '');
292-
293-
late final Class syncIteratorClass =
294-
index.getClass('dart:core', '_SyncIterator');
295-
296-
late final Member syncIteratorCurrent =
297-
index.getMember('dart:core', '_SyncIterator', '_current');
298-
299-
late final Member syncIteratorYieldEachIterable =
300-
index.getMember('dart:core', '_SyncIterator', '_yieldEachIterable');
301-
302248
late final Class typeClass = index.getClass('dart:core', 'Type');
303249

304250
late final Constructor fallThroughErrorUrlAndLineConstructor =

pkg/kernel/lib/target/targets.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,19 @@ class TargetFlags {
1616
final bool trackWidgetCreation;
1717
final bool enableNullSafety;
1818
final bool supportMirrors;
19-
final bool compactAsync;
2019

2120
const TargetFlags(
2221
{this.trackWidgetCreation = false,
2322
this.enableNullSafety = false,
24-
this.supportMirrors = true,
25-
this.compactAsync = true});
23+
this.supportMirrors = true});
2624

2725
@override
2826
bool operator ==(other) {
2927
if (identical(this, other)) return true;
3028
return other is TargetFlags &&
3129
trackWidgetCreation == other.trackWidgetCreation &&
3230
enableNullSafety == other.enableNullSafety &&
33-
supportMirrors == other.supportMirrors &&
34-
compactAsync == other.compactAsync;
31+
supportMirrors == other.supportMirrors;
3532
}
3633

3734
@override
@@ -40,7 +37,6 @@ class TargetFlags {
4037
hash = 0x3fffffff & (hash * 31 + (hash ^ trackWidgetCreation.hashCode));
4138
hash = 0x3fffffff & (hash * 31 + (hash ^ enableNullSafety.hashCode));
4239
hash = 0x3fffffff & (hash * 31 + (hash ^ supportMirrors.hashCode));
43-
hash = 0x3fffffff & (hash * 31 + (hash ^ compactAsync.hashCode));
4440
return hash;
4541
}
4642
}

pkg/vm/lib/kernel_front_end.dart

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ void declareCompilerOptions(ArgParser args) {
8181
help: 'Whether dart:mirrors is supported. By default dart:mirrors is '
8282
'supported when --aot and --minimal-kernel are not used.',
8383
defaultsTo: null);
84-
args.addFlag('compact-async',
85-
help: 'Enable new compact async/await implementation.', defaultsTo: true);
84+
args.addFlag('compact-async', help: 'Obsolete, ignored.', hide: true);
8685
args.addOption('depfile', help: 'Path to output Ninja depfile');
8786
args.addOption('from-dill',
8887
help: 'Read existing dill file instead of compiling from sources',
@@ -203,7 +202,6 @@ Future<int> runCompiler(ArgResults options, String usage) async {
203202
final String? manifestFilename = options['manifest'];
204203
final String? dataDir = options['component-name'] ?? options['data-dir'];
205204
final bool? supportMirrors = options['support-mirrors'];
206-
final bool compactAsync = options['compact-async'];
207205

208206
final bool minimalKernel = options['minimal-kernel'];
209207
final bool treeShakeWriteOnlyFields = options['tree-shake-write-only-fields'];
@@ -287,8 +285,7 @@ Future<int> runCompiler(ArgResults options, String usage) async {
287285
compilerOptions.target = createFrontEndTarget(targetName,
288286
trackWidgetCreation: options['track-widget-creation'],
289287
nullSafety: compilerOptions.nnbdMode == NnbdMode.Strong,
290-
supportMirrors: supportMirrors ?? !(aot || minimalKernel),
291-
compactAsync: compactAsync);
288+
supportMirrors: supportMirrors ?? !(aot || minimalKernel));
292289
if (compilerOptions.target == null) {
293290
print('Failed to create front-end target $targetName.');
294291
return badUsageExitCode;
@@ -617,16 +614,14 @@ Future<void> autoDetectNullSafetyMode(
617614
Target? createFrontEndTarget(String targetName,
618615
{bool trackWidgetCreation = false,
619616
bool nullSafety = false,
620-
bool supportMirrors = true,
621-
bool compactAsync = true}) {
617+
bool supportMirrors = true}) {
622618
// Make sure VM-specific targets are available.
623619
installAdditionalTargets();
624620

625621
final TargetFlags targetFlags = new TargetFlags(
626622
trackWidgetCreation: trackWidgetCreation,
627623
enableNullSafety: nullSafety,
628-
supportMirrors: supportMirrors,
629-
compactAsync: compactAsync);
624+
supportMirrors: supportMirrors);
630625
return getTarget(targetName, targetFlags);
631626
}
632627

pkg/vm/lib/target/vm.dart

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@ import 'package:kernel/core_types.dart';
99
import 'package:kernel/reference_from_index.dart';
1010
import 'package:kernel/target/changed_structure_notifier.dart';
1111
import 'package:kernel/target/targets.dart';
12-
import 'package:kernel/type_environment.dart';
1312

1413
import '../transformations/call_site_annotator.dart' as callSiteAnnotator;
15-
import '../transformations/continuation.dart' as transformAsync
16-
show transformLibraries, transformProcedure;
1714
import '../transformations/lowering.dart' as lowering
1815
show transformLibraries, transformProcedure;
1916
import '../transformations/mixin_full_resolution.dart' as transformMixins
@@ -183,15 +180,9 @@ class VmTarget extends Target {
183180
logger?.call("Transformed ffi annotations");
184181
}
185182

186-
// TODO(kmillikin): Make this run on a per-method basis.
187183
bool productMode = environmentDefines!["dart.vm.product"] == "true";
188-
transformAsync.transformLibraries(
189-
new TypeEnvironment(coreTypes, hierarchy), libraries,
190-
productMode: productMode, desugarAsync: !flags.compactAsync);
191-
logger?.call("Transformed async methods");
192-
193-
lowering.transformLibraries(
194-
libraries, coreTypes, hierarchy, flags.enableNullSafety);
184+
lowering.transformLibraries(libraries, coreTypes, hierarchy,
185+
nullSafety: flags.enableNullSafety, productMode: productMode);
195186
logger?.call("Lowering transformations performed");
196187

197188
callSiteAnnotator.transformLibraries(
@@ -207,13 +198,8 @@ class VmTarget extends Target {
207198
Map<String, String>? environmentDefines,
208199
{void Function(String msg)? logger}) {
209200
bool productMode = environmentDefines!["dart.vm.product"] == "true";
210-
transformAsync.transformProcedure(
211-
new TypeEnvironment(coreTypes, hierarchy), procedure,
212-
productMode: productMode, desugarAsync: !flags.compactAsync);
213-
logger?.call("Transformed async functions");
214-
215-
lowering.transformProcedure(
216-
procedure, coreTypes, hierarchy, flags.enableNullSafety);
201+
lowering.transformProcedure(procedure, coreTypes, hierarchy,
202+
nullSafety: flags.enableNullSafety, productMode: productMode);
217203
logger?.call("Lowering transformations performed");
218204
}
219205

0 commit comments

Comments
 (0)