Version 2.18.0-80.0.dev
Merge commit '7836057041abb3bd1cbe489f731e644a411f2247' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6284408..7f90627 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,139 @@
## 2.17.0
+### Language
+
+The following features are new in the Dart 2.17 [language version][]. To use
+them, you must set the lower bound on the SDK constraint for your package to
+2.17 or greater (`sdk: '>=2.17.0 <3.0.0'`).
+
+[language version]: https://dart.dev/guides/language/evolution
+
+- **[Enhanced enums with members][]**: Enum declarations can now define
+ members including fields, constructors, methods, getters, etc. For example:
+
+ ```dart
+ enum Water {
+ frozen(32),
+ lukewarm(100),
+ boiling(212);
+
+ final int tempInFahrenheit;
+ const Water(this.tempInFahrenheit);
+
+ @override
+ String toString() => "The $name water is $tempInFahrenheit F.";
+ }
+ ```
+
+ Constructors must be `const` since enum values are always constants. If the
+ constructor takes arguments, they are passed when the enum value is
+ declared.
+
+ The above enum can be used like so:
+
+ ```dart
+ void main() {
+ print(Water.frozen); // prints "The frozen water is 32 F."
+ }
+ ```
+
+[enhanced enums with members]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/enhanced-enums/feature-specification.md
+
+- **[Super parameters][]**: When extending a class whose constructor takes
+ parameters, the subclass constructor needs to provide arguments for them.
+ Often, these are passed as parameters to the subclass constructor, which
+ then forwards them to the superclass constructor. This is verbose because
+ the subclass constructor must list the name and type of each parameter in
+ its parameter list, and then explicitly forward each one as an argument to
+ the superclass constructor.
+
+ [@roy-sianez][] suggested [allowing `super.`][super dot] before a subclass
+ constructor parameter to implicitly forward it to the corresponding
+ superclass constructor parameter. Applying this feature to Flutter
+ eliminated [nearly 2,000 lines of code][flutter super]. For example, before:
+
+ ```dart
+ class CupertinoPage<T> extends Page<T> {
+ const CupertinoPage({
+ required this.child,
+ this.maintainState = true,
+ this.title,
+ this.fullscreenDialog = false,
+ LocalKey? key,
+ String? name,
+ Object? arguments,
+ String? restorationId,
+ }) : super(
+ key: key,
+ name: name,
+ arguments: arguments,
+ restorationId: restorationId,
+ );
+
+ // ...
+ }
+ ```
+
+ And using super parameters:
+
+ ```dart
+ class CupertinoPage<T> extends Page<T> {
+ const CupertinoPage({
+ required this.child,
+ this.maintainState = true,
+ this.title,
+ this.fullscreenDialog = false,
+ super.key,
+ super.name,
+ super.arguments,
+ super.restorationId,
+ });
+
+ // ...
+ }
+ ```
+
+ From our analysis, over 90% of explicit superclass constructor calls can be
+ completely eliminated, using `super.` parameters instead.
+
+[super parameters]: https://github.com/dart-lang/language/blob/master/working/1855%20-%20super%20parameters/proposal.md
+[@roy-sianez]: https://github.com/roy-sianez
+[super dot]: https://github.com/dart-lang/language/issues/1855
+[flutter super]: https://github.com/flutter/flutter/pull/100905/files
+
+- **[Named args everywhere][]**: In a function call, Dart requires positional
+ arguments to appear before named arguments. This can be frustrating for
+ arguments like collection literals and function expressions that look best
+ as the last argument in the argument list but are positional, like the
+ `test()` function in the [test package][]:
+
+ ```dart
+ main() {
+ test('A test description', () {
+ // Very long function body here...
+ }, skip: true);
+ }
+ ```
+
+ It would be better if the `skip` argument appeared at the top of the call
+ to `test()` so that it wasn't easily overlooked, but since it's named and
+ the test body argument is positional, `skip` must be placed at the end.
+
+ Dart 2.17 removes this restriction. Named arguments can be freely
+ interleaved with positional arguments, allowing code like:
+
+ ```dart
+ main() {
+ test(skip: true, 'A test description', () {
+ // Very long function body here...
+ });
+ }
+ ```
+
+[named args everywhere]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/named-arguments-anywhere/feature-specification.md
+[test package]: https://pub.dev/packages/test
+
### Core libraries
#### `dart:core`
@@ -275,6 +408,7 @@
- Pub now supports a separate `pubspec_overrides.yaml` file that can contain
`dependency_overrides`. This makes it easier to avoid checking the local
overrides into version control.
+
#### Linter
Updated the Linter to `1.18.0`, which includes changes that
diff --git a/pkg/analysis_server/lib/src/cider/rename.dart b/pkg/analysis_server/lib/src/cider/rename.dart
index 33ba10e..a7ce3f3 100644
--- a/pkg/analysis_server/lib/src/cider/rename.dart
+++ b/pkg/analysis_server/lib/src/cider/rename.dart
@@ -2,15 +2,20 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+import 'package:analysis_server/src/protocol_server.dart' hide Element;
import 'package:analysis_server/src/services/correction/status.dart';
+import 'package:analysis_server/src/services/correction/util.dart';
import 'package:analysis_server/src/services/refactoring/naming_conventions.dart';
import 'package:analysis_server/src/services/refactoring/refactoring.dart';
+import 'package:analysis_server/src/services/search/hierarchy.dart';
import 'package:analysis_server/src/utilities/flutter.dart';
+import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/source/line_info.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/micro/resolve_file.dart';
import 'package:analyzer/src/dart/micro/utils.dart';
+import 'package:analyzer/src/generated/java_core.dart';
import 'package:analyzer/src/utilities/extensions/collection.dart';
class CanRenameResponse {
@@ -45,12 +50,31 @@
status = validateTypeAliasName(name);
} else if (element is ClassElement) {
status = validateClassName(name);
+ } else if (element is ConstructorElement) {
+ status = validateConstructorName(name);
+ _analyzePossibleConflicts(element, status, name);
}
if (status == null) {
return null;
}
- return CheckNameResponse(status, this);
+ return CheckNameResponse(status, this, name);
+ }
+
+ void _analyzePossibleConflicts(
+ ConstructorElement element, RefactoringStatus result, String newName) {
+ var parentClass = element.enclosingElement;
+ // Check if the "newName" is the name of the enclosing class.
+ if (parentClass.name == newName) {
+ result.addError('The constructor should not have the same name '
+ 'as the name of the enclosing class.');
+ }
+ // check if there are members with "newName" in the same ClassElement
+ for (var newNameMember in getChildren(parentClass, newName)) {
+ var message = format("Class '{0}' already declares {1} with name '{2}'.",
+ parentClass.displayName, getElementKindName(newNameMember), newName);
+ result.addError(message, newLocation_fromElement(newNameMember));
+ }
}
FlutterWidgetState? _findFlutterStateClass(Element element, String newName) {
@@ -76,8 +100,9 @@
class CheckNameResponse {
final RefactoringStatus status;
final CanRenameResponse canRename;
+ final String newName;
- CheckNameResponse(this.status, this.canRename);
+ CheckNameResponse(this.status, this.canRename, this.newName);
LineInfo get lineInfo => canRename.lineInfo;
@@ -100,13 +125,148 @@
for (var element in elements) {
matches.addAll(await fileResolver.findReferences2(element));
}
+
FlutterWidgetRename? flutterRename;
- if (canRename._flutterWidgetState != null) {
- var stateWidget = canRename._flutterWidgetState!;
- var match = await fileResolver.findReferences2(stateWidget.state);
- flutterRename = FlutterWidgetRename(stateWidget.newName, match);
+ var flutterState = canRename._flutterWidgetState;
+ if (flutterState != null) {
+ var stateClass = flutterState.state;
+ var stateName = flutterState.newName;
+ var match = await fileResolver.findReferences2(stateClass);
+ var sourcePath = stateClass.source.fullName;
+ var location = stateClass.enclosingElement.lineInfo
+ .getLocation(stateClass.nameOffset);
+ CiderSearchMatch ciderMatch;
+ var searchInfo = CiderSearchInfo(
+ location, stateClass.nameLength, MatchKind.DECLARATION);
+ try {
+ ciderMatch = match.firstWhere((m) => m.path == sourcePath);
+ ciderMatch.references.add(searchInfo);
+ } catch (_) {
+ match.add(CiderSearchMatch(sourcePath, [], [searchInfo]));
+ }
+ var replacements = match
+ .map((m) => CiderReplaceMatch(
+ m.path,
+ m.references
+ .map((p) => ReplaceInfo(
+ stateName, p.startPosition, stateClass.nameLength))
+ .toList()))
+ .toList();
+ flutterRename = FlutterWidgetRename(stateName, match, replacements);
}
- return RenameResponse(matches, this, flutterWidgetRename: flutterRename);
+ var replaceMatches = <CiderReplaceMatch>[];
+ if (element is ConstructorElement) {
+ for (var match in matches) {
+ var replaceInfo = <ReplaceInfo>[];
+ for (var ref in match.references) {
+ String replacement = newName.isNotEmpty ? '.$newName' : '';
+ if (replacement.isEmpty &&
+ ref.kind == MatchKind.REFERENCE_BY_CONSTRUCTOR_TEAR_OFF) {
+ replacement = '.new';
+ }
+ if (ref.kind ==
+ MatchKind.INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS) {
+ replacement += '()';
+ }
+ replaceInfo
+ .add(ReplaceInfo(replacement, ref.startPosition, ref.length));
+ }
+ replaceMatches.addMatch(match.path, replaceInfo);
+ }
+ if (element.isSynthetic) {
+ var result = await _replaceSyntheticConstructor();
+ if (result != null) {
+ replaceMatches.addMatch(result.path, result.matches.toList());
+ }
+ }
+ } else {
+ for (var match in matches) {
+ replaceMatches.addMatch(
+ match.path,
+ match.references
+ .map((info) =>
+ ReplaceInfo(newName, info.startPosition, info.length))
+ .toList());
+ }
+ // add element declaration
+ var sourcePath = element.source!.fullName;
+ var infos = await _addElementDeclaration(element, sourcePath);
+ replaceMatches.addMatch(sourcePath, infos);
+ }
+ return RenameResponse(matches, this, replaceMatches,
+ flutterWidgetRename: flutterRename);
+ }
+
+ Future<List<ReplaceInfo>> _addElementDeclaration(
+ Element element, String sourcePath) async {
+ var infos = <ReplaceInfo>[];
+ if (element is PropertyInducingElement && element.isSynthetic) {
+ if (element.getter != null) {
+ infos.add(ReplaceInfo(
+ newName,
+ lineInfo.getLocation(element.getter!.nameOffset),
+ element.getter!.nameLength));
+ }
+ if (element.setter != null) {
+ infos.add(ReplaceInfo(
+ newName,
+ lineInfo.getLocation(element.setter!.nameOffset),
+ element.setter!.nameLength));
+ }
+ } else {
+ var location = (await canRename._fileResolver.resolve2(path: sourcePath))
+ .lineInfo
+ .getLocation(element.nameOffset);
+ infos.add(ReplaceInfo(newName, location, element.nameLength));
+ }
+ return infos;
+ }
+
+ Future<CiderReplaceMatch?> _replaceSyntheticConstructor() async {
+ var element = canRename.refactoringElement.element;
+ var classElement = element.enclosingElement;
+
+ var fileResolver = canRename._fileResolver;
+ var libraryPath = classElement!.library!.source.fullName;
+ var resolvedLibrary = await fileResolver.resolveLibrary2(path: libraryPath);
+ var result = resolvedLibrary.getElementDeclaration(classElement);
+ if (result == null) {
+ return null;
+ }
+
+ var resolvedUnit = result.resolvedUnit;
+ if (resolvedUnit == null) {
+ return null;
+ }
+
+ var node = result.node;
+ if (node is ClassDeclaration) {
+ var utils = CorrectionUtils(resolvedUnit);
+ var location = utils.prepareNewConstructorLocation(
+ fileResolver.contextObjects!.analysisSession, node);
+ if (location == null) {
+ return null;
+ }
+
+ var header = '${classElement.name}.$newName();';
+ return CiderReplaceMatch(libraryPath, [
+ ReplaceInfo(location.prefix + header + location.suffix,
+ resolvedUnit.lineInfo.getLocation(location.offset), 0)
+ ]);
+ } else if (node is EnumDeclaration) {
+ var utils = CorrectionUtils(resolvedUnit);
+ var location = utils.prepareEnumNewConstructorLocation(node);
+ if (location == null) {
+ return null;
+ }
+
+ var header = 'const ${classElement.name}.$newName();';
+ return CiderReplaceMatch(libraryPath, [
+ ReplaceInfo(location.prefix + header + location.suffix,
+ resolvedUnit.lineInfo.getLocation(location.offset), 0)
+ ]);
+ }
+ return null;
}
}
@@ -151,7 +311,7 @@
bool _canRenameElement(Element element) {
var enclosingElement = element.enclosingElement;
if (element is ConstructorElement) {
- return false;
+ return true;
}
if (element is LabelElement || element is LocalElement) {
return true;
@@ -161,16 +321,24 @@
enclosingElement is CompilationUnitElement) {
return true;
}
-
return false;
}
}
+class CiderReplaceMatch {
+ final String path;
+ List<ReplaceInfo> matches;
+
+ CiderReplaceMatch(this.path, this.matches);
+}
+
class FlutterWidgetRename {
final String name;
+ @deprecated
final List<CiderSearchMatch> matches;
+ final List<CiderReplaceMatch> replacements;
- FlutterWidgetRename(this.name, this.matches);
+ FlutterWidgetRename(this.name, this.matches, this.replacements);
}
/// The corresponding `State` declaration of a Flutter `StatefulWidget`.
@@ -182,9 +350,39 @@
}
class RenameResponse {
+ @deprecated
final List<CiderSearchMatch> matches;
final CheckNameResponse checkName;
+ final List<CiderReplaceMatch> replaceMatches;
FlutterWidgetRename? flutterWidgetRename;
- RenameResponse(this.matches, this.checkName, {this.flutterWidgetRename});
+ RenameResponse(this.matches, this.checkName, this.replaceMatches,
+ {this.flutterWidgetRename});
+}
+
+class ReplaceInfo {
+ final String replacementText;
+ final CharacterLocation startPosition;
+ final int length;
+
+ ReplaceInfo(this.replacementText, this.startPosition, this.length);
+
+ @override
+ bool operator ==(Object other) =>
+ other is ReplaceInfo &&
+ replacementText == other.replacementText &&
+ startPosition == other.startPosition &&
+ length == other.length;
+}
+
+extension on List<CiderReplaceMatch> {
+ void addMatch(String path, List<ReplaceInfo> infos) {
+ for (var m in this) {
+ if (m.path == path) {
+ m.matches.addAll(infos);
+ return;
+ }
+ }
+ add(CiderReplaceMatch(path, infos));
+ }
}
diff --git a/pkg/analysis_server/test/src/cider/rename_test.dart b/pkg/analysis_server/test/src/cider/rename_test.dart
index 4adefd9..3a3ec88 100644
--- a/pkg/analysis_server/test/src/cider/rename_test.dart
+++ b/pkg/analysis_server/test/src/cider/rename_test.dart
@@ -4,7 +4,7 @@
import 'package:analysis_server/src/cider/rename.dart';
import 'package:analyzer/source/line_info.dart';
-import 'package:analyzer/src/dart/micro/resolve_file.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -20,6 +20,8 @@
@reflectiveTest
class CiderRenameComputerTest extends CiderServiceTest {
late _CorrectionContext _correctionContext;
+ late LineInfo? _lineInfo;
+ late String _testCode;
@override
void setUp() {
@@ -27,6 +29,16 @@
BazelMockPackages.instance.addFlutter(resourceProvider);
}
+ void test_cannotRename_inSdk() async {
+ var refactor = await _compute(r'''
+main() {
+ new String.^fromCharCodes([]);
+}
+''');
+
+ expect(refactor, isNull);
+ }
+
void test_canRename_class() async {
var refactor = await _compute(r'''
class ^Old {}
@@ -173,6 +185,17 @@
expect(result.oldName, 'a');
}
+ void test_checkName_newName() async {
+ var result = await _checkName(r'''
+class A {
+ A.^test() {}
+}
+''', 'test');
+
+ expect(result!.status.problems.length, 1);
+ expect(result.status.hasError, isTrue);
+ }
+
void test_checkName_parameter() async {
var result = await _checkName(r'''
void foo(String ^a) {
@@ -203,7 +226,7 @@
}
void test_rename_class() async {
- var result = await _rename(r'''
+ var testCode = '''
class ^Old implements Other {
Old() {}
Old.named() {}
@@ -216,26 +239,26 @@
Old t1 = new Old();
Old t2 = new Old.named();
}
-''', 'New');
-
- expect(result!.matches.length, 1);
- expect(result.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
- CharacterLocation(1, 7),
- CharacterLocation(2, 3),
- CharacterLocation(3, 3),
- CharacterLocation(6, 23),
- CharacterLocation(7, 23),
- CharacterLocation(10, 3),
- CharacterLocation(10, 16),
- CharacterLocation(11, 3),
- CharacterLocation(11, 16)
- ])
- ]);
+''';
+ var result = await _rename(testCode, 'New');
+ _assertTestChangeResult('''
+class New implements Other {
+ New() {}
+ New.named() {}
+}
+class Other {
+ factory Other.a() = New;
+ factory Other.b() = New.named;
+}
+void f() {
+ New t1 = new New();
+ New t2 = new New.named();
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_class_flutterWidget() async {
- var result = await _rename(r'''
+ var testCode = '''
import 'package:flutter/material.dart';
class ^TestPage extends StatefulWidget {
@@ -249,27 +272,299 @@
@override
Widget build(BuildContext context) => throw 0;
}
-''', 'NewPage');
+''';
- expect(result!.matches.length, 1);
- expect(result.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
- CharacterLocation(3, 7),
- CharacterLocation(4, 9),
- CharacterLocation(7, 9),
- CharacterLocation(10, 35)
- ])
+ var result = await _rename(testCode, 'NewPage');
+ expect(result!.replaceMatches.length, 1);
+ expect(result.replaceMatches.first.matches, [
+ ReplaceInfo('NewPage', CharacterLocation(4, 9), 8),
+ ReplaceInfo('NewPage', CharacterLocation(7, 9), 8),
+ ReplaceInfo('NewPage', CharacterLocation(10, 35), 8),
+ ReplaceInfo('NewPage', CharacterLocation(3, 7), 8)
]);
expect(result.flutterWidgetRename != null, isTrue);
expect(result.flutterWidgetRename!.name, 'NewPageState');
- expect(result.flutterWidgetRename!.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(7, 36), CharacterLocation(10, 7)])
- ]);
+ expect(
+ result.flutterWidgetRename!.replacements.first.matches
+ .map((m) => m.startPosition)
+ .toList(),
+ [CharacterLocation(7, 36), CharacterLocation(10, 7)]);
+ }
+
+ void test_rename_constructor_add() async {
+ var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A] and [A.new]
+class A {
+ ^A() {} // marker
+ factory A._() = A;
+}
+class B extends A {
+ B() : super() {}
+}
+main() {
+ new A();
+ A.new;
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A.newName] and [A.newName]
+class A {
+ A.newName() {} // marker
+ factory A._() = A.newName;
+}
+class B extends A {
+ B() : super.newName() {}
+}
+main() {
+ new A.newName();
+ A.newName;
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_enum() async {
+ var testCode = '''
+/// [E.new]
+enum E {
+ v1(), v2.new(), v3, v4.other();
+ const ^E(); // 0
+ const E.other() : this();
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+ v1.newName(), v2.newName(), v3.newName(), v4.other();
+ const E.newName(); // 0
+ const E.other() : this.newName();
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_enum_hasConstructor() async {
+ var testCode = '''
+/// [E.new]
+enum E {
+ v1(), v2.^new(), v3;
+
+ factory E.other() => throw 0;
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+ v1.newName(), v2.newName(), v3.newName();
+
+ factory E.other() => throw 0;
+
+ const E.newName();
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_enum_hasField() async {
+ var testCode = '''
+/// [E.new]
+enum E {
+ v1(), v2.^new(), v3;
+
+ final int foo = 0;
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+ v1.newName(), v2.newName(), v3.newName();
+
+ final int foo = 0;
+
+ const E.newName();
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_enum_hasMethod() async {
+ var testCode = '''
+/// [E.new]
+enum E {
+ v1(), v2.^new(), v3;
+
+ void foo() {}
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+ v1.newName(), v2.newName(), v3.newName();
+
+ const E.newName();
+
+ void foo() {}
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_enum_named() async {
+ var testCode = '''
+/// [E.test]
+enum E {
+ v1.^test(), v2.other();
+ const E.test(); // 0
+ const E.other() : this.test();
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+ v1.newName(), v2.other();
+ const E.newName(); // 0
+ const E.other() : this.newName();
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_enum_remove() async {
+ var testCode = '''
+/// [E]
+enum E {
+ v1.test(), v2.other();
+ const E.^test(); // 0
+ const E.other() : this.test();
+}
+''';
+
+ var result = await _rename(testCode, '');
+ _assertTestChangeResult('''
+/// [E]
+enum E {
+ v1(), v2.other();
+ const E(); // 0
+ const E.other() : this();
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_named() async {
+ var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A.test] and [new A.test]
+class A {
+ A.^test() {} // marker
+ factory A._() = A.test;
+}
+class B extends A {
+ B() : super.test() {}
+}
+main() {
+ new A.test();
+ A.test;
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A.newName] and [new A.newName]
+class A {
+ A.newName() {} // marker
+ factory A._() = A.newName;
+}
+class B extends A {
+ B() : super.newName() {}
+}
+main() {
+ new A.newName();
+ A.newName;
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_remove() async {
+ var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A.test] and [new A.test]
+class A {
+ A.^test() {} // marker
+ factory A._() = A.test;
+}
+class B extends A {
+ B() : super.test() {}
+}
+main() {
+ new A.test();
+ A.test;
+}
+''';
+
+ var result = await _rename(testCode, '');
+ _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A] and [new A]
+class A {
+ A() {} // marker
+ factory A._() = A;
+}
+class B extends A {
+ B() : super() {}
+}
+main() {
+ new A();
+ A.new;
+}
+''', result!.replaceMatches.first.matches);
+ }
+
+ void test_rename_constructor_synthetic() async {
+ var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A] and [A.new]
+class A {
+ int field = 0;
+}
+class B extends A {
+ B() : super() {}
+}
+main() {
+ new A();
+ A.^new;
+}
+''';
+
+ var result = await _rename(testCode, 'newName');
+ _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A.newName] and [A.newName]
+class A {
+ int field = 0;
+
+ A.newName();
+}
+class B extends A {
+ B() : super.newName() {}
+}
+main() {
+ new A.newName();
+ A.newName;
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_field() async {
- var result = await _rename(r'''
+ var testCode = '''
class A{
int get ^x => 5;
}
@@ -277,17 +572,22 @@
void foo() {
var m = A().x;
}
-''', 'y');
+''';
- expect(result, isNotNull);
- expect(result!.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(2, 11), CharacterLocation(6, 15)]),
- ]);
+ var result = await _rename(testCode, 'y');
+ _assertTestChangeResult('''
+class A{
+ int get y => 5;
+}
+
+void foo() {
+ var m = A().y;
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_field_static_private() async {
- var result = await _rename(r'''
+ var testCode = '''
class A{
static const ^_val = 1234;
}
@@ -295,17 +595,22 @@
void foo() {
print(A._val);
}
-''', '_newVal');
+''';
- expect(result, isNotNull);
- expect(result!.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(2, 16), CharacterLocation(6, 11)]),
- ]);
+ var result = await _rename(testCode, '_newVal');
+ _assertTestChangeResult('''
+class A{
+ static const _newVal = 1234;
+}
+
+void foo() {
+ print(A._newVal);
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_function() async {
- var result = await _rename(r'''
+ var testCode = '''
test() {}
^foo() {}
void f() {
@@ -313,15 +618,18 @@
print(test());
foo();
}
-''', 'bar');
+''';
- expect(result!.matches.length, 1);
- expect(result.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
- CharacterLocation(2, 1),
- CharacterLocation(6, 3),
- ])
- ]);
+ var result = await _rename(testCode, 'bar');
+ _assertTestChangeResult('''
+test() {}
+bar() {}
+void f() {
+ print(test);
+ print(test());
+ bar();
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_function_imported() async {
@@ -335,28 +643,27 @@
^foo();
}
''', 'bar');
- expect(result!.matches.length, 2);
- expect(result.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/a.dart'), [
- CharacterLocation(1, 1),
- ]),
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(3, 3)])
- ]);
+
+ expect(result!.replaceMatches.length, 2);
+ expect(result.replaceMatches.first.matches,
+ [ReplaceInfo('bar', CharacterLocation(3, 3), 3)]);
+ expect(result.replaceMatches[1].matches,
+ [ReplaceInfo('bar', CharacterLocation(1, 1), 3)]);
}
void test_rename_local() async {
- var result = await _rename(r'''
+ var testCode = '''
void foo() {
var ^a = 0; var b = a + 1;
}
-''', 'bar');
+''';
- expect(result!.matches.length, 1);
- expect(
- result.matches[0],
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(2, 7), CharacterLocation(2, 22)]));
+ var result = await _rename(testCode, 'bar');
+ _assertTestChangeResult('''
+void foo() {
+ var bar = 0; var b = bar + 1;
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_method_imported() async {
@@ -372,56 +679,76 @@
var a = A().^foo();
}
''', 'bar');
- expect(result!.matches.length, 2);
- expect(result.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/a.dart'), [
- CharacterLocation(2, 3),
- ]),
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(3, 15)])
- ]);
+ expect(result!.replaceMatches.length, 2);
+ expect(result.replaceMatches.first.matches,
+ [ReplaceInfo('bar', CharacterLocation(3, 15), 3)]);
+ expect(result.replaceMatches[1].matches,
+ [ReplaceInfo('bar', CharacterLocation(2, 3), 3)]);
}
void test_rename_parameter() async {
- var result = await _rename(r'''
+ var testCode = '''
void foo(String ^a) {
var b = a + 1;
}
-''', 'bar');
- expect(result!.matches.length, 1);
- expect(result.checkName.oldName, 'a');
+''';
+ var result = await _rename(testCode, 'bar');
+ _assertTestChangeResult('''
+void foo(String bar) {
+ var b = bar + 1;
+}
+''', result!.replaceMatches.first.matches);
}
void test_rename_propertyAccessor() async {
- var result = await _rename(r'''
+ var testCode = '''
get foo {}
set foo(x) {}
void f() {
print(foo);
^foo = 1;
foo += 2;
-''', 'bar');
- expect(result!.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(1, 5), CharacterLocation(4, 9)]),
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
- CharacterLocation(2, 5),
- CharacterLocation(5, 3),
- CharacterLocation(6, 3)
- ])
- ]);
+''';
+ var result = await _rename(testCode, 'bar');
+ _assertTestChangeResult('''
+get bar {}
+set bar(x) {}
+void f() {
+ print(bar);
+ bar = 1;
+ bar += 2;
+''', result!.replaceMatches.first.matches);
}
void test_rename_typeAlias_functionType() async {
- var result = await _rename(r'''
+ var testCode = '''
typedef ^F = void Function();
void f(F a) {}
-''', 'bar');
+''';
- expect(result!.matches, [
- CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
- [CharacterLocation(1, 9), CharacterLocation(2, 8)])
- ]);
+ var result = await _rename(testCode, 'bar');
+ _assertTestChangeResult('''
+typedef bar = void Function();
+void f(bar a) {}
+''', result!.replaceMatches.first.matches);
+ }
+
+ // Asserts that the results of the rename is the [expectedCode].
+ void _assertTestChangeResult(
+ String expectedCode, List<ReplaceInfo> changes) async {
+ var edits = <SourceEdit>[];
+ for (var change in changes) {
+ var offset =
+ _lineInfo!.getOffsetOfLine(change.startPosition.lineNumber - 1) +
+ change.startPosition.columnNumber -
+ 1;
+ edits.add(SourceEdit(offset, change.length, change.replacementText));
+ }
+ edits.sort((a, b) => a.offset.compareTo(b.offset));
+ edits = edits.reversed.toList();
+ // validate resulting code
+ var actualCode = SourceEdit.applySequence(_testCode, edits);
+ expect(actualCode, expectedCode);
}
Future<CheckNameResponse?> _checkName(String content, String newName) async {
@@ -459,6 +786,7 @@
_correctionContext.line,
_correctionContext.character,
);
+ _lineInfo = canRename?.lineInfo;
return canRename?.checkNewName(newName)?.computeRenameRanges2();
}
@@ -470,8 +798,8 @@
var lineInfo = LineInfo.fromContent(content);
var location = lineInfo.getLocation(offset);
- content = content.substring(0, offset) + content.substring(offset + 1);
- newFile(testPath, content);
+ _testCode = content.substring(0, offset) + content.substring(offset + 1);
+ newFile(testPath, _testCode);
_correctionContext = _CorrectionContext(
content,
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index 989c73c..e333fc8 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -44,21 +44,42 @@
const M = 1024 * 1024 /*1 MiB*/;
const memoryCacheSize = 200 * M;
+class CiderSearchInfo {
+ final CharacterLocation startPosition;
+ final int length;
+ final MatchKind kind;
+
+ CiderSearchInfo(this.startPosition, this.length, this.kind);
+
+ @override
+ bool operator ==(Object other) =>
+ other is CiderSearchInfo &&
+ startPosition == other.startPosition &&
+ length == other.length &&
+ kind == other.kind;
+}
+
class CiderSearchMatch {
final String path;
+ @deprecated
final List<CharacterLocation?> startPositions;
+ final List<CiderSearchInfo> references;
- CiderSearchMatch(this.path, this.startPositions);
+ CiderSearchMatch(this.path, this.startPositions, this.references);
@override
bool operator ==(Object other) =>
other is CiderSearchMatch &&
path == other.path &&
const ListEquality<CharacterLocation?>()
- .equals(startPositions, other.startPositions);
+ // ignore: deprecated_member_use_from_same_package
+ .equals(startPositions, other.startPositions) &&
+ const ListEquality<CiderSearchInfo>()
+ .equals(references, other.references);
@override
String toString() {
+ // ignore: deprecated_member_use_from_same_package
return '($path, $startPositions)';
}
}
@@ -191,13 +212,19 @@
var resolved = await resolve2(path: path);
var collector = ReferencesCollector(element);
resolved.unit.accept(collector);
- var offsets = collector.offsets;
- if (offsets.isNotEmpty) {
+ var matches = collector.references;
+ if (matches.isNotEmpty) {
var lineInfo = resolved.unit.lineInfo;
references.add(CiderSearchMatch(
path,
- offsets
- .map((offset) => lineInfo.getLocation(offset))
+ matches
+ .map((match) => lineInfo.getLocation(match.offset))
+ .toList(),
+ matches
+ .map((match) => CiderSearchInfo(
+ lineInfo.getLocation(match.offset),
+ match.length,
+ match.matchKind))
.toList()));
}
});
diff --git a/pkg/analyzer/lib/src/dart/micro/utils.dart b/pkg/analyzer/lib/src/dart/micro/utils.dart
index 9afec39b..6908497 100644
--- a/pkg/analyzer/lib/src/dart/micro/utils.dart
+++ b/pkg/analyzer/lib/src/dart/micro/utils.dart
@@ -6,6 +6,8 @@
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/ast/element_locator.dart';
+import 'package:analyzer/src/dart/element/element.dart';
+import 'package:collection/src/iterable_extensions.dart';
/// Return the [Element] of the given [node], or `null` if [node] is `null` or
/// does not have an element.
@@ -34,6 +36,32 @@
return element;
}
+/// If the given [constructor] is a synthetic constructor created for a
+/// [ClassTypeAlias], return the actual constructor of a [ClassDeclaration]
+/// which is invoked. Return `null` if a redirection cycle is detected.
+ConstructorElement? _getActualConstructorElement(
+ ConstructorElement? constructor) {
+ var seenConstructors = <ConstructorElement?>{};
+ while (constructor is ConstructorElementImpl && constructor.isSynthetic) {
+ var enclosing = constructor.enclosingElement;
+ if (enclosing.isMixinApplication) {
+ var superInvocation = constructor.constantInitializers
+ .whereType<SuperConstructorInvocation>()
+ .singleOrNull;
+ if (superInvocation != null) {
+ constructor = superInvocation.staticElement;
+ }
+ } else {
+ break;
+ }
+ // fail if a cycle is detected
+ if (!seenConstructors.add(constructor)) {
+ return null;
+ }
+ }
+ return constructor;
+}
+
/// Return the [ImportElement] that declared [prefix] and imports [element].
///
/// [libraryElement] - the [LibraryElement] where reference is.
@@ -132,9 +160,55 @@
libraryElement, prefix, usedElement, importElementsMap);
}
+class MatchInfo {
+ final int offset;
+ final int length;
+ final MatchKind matchKind;
+
+ MatchInfo(this.offset, this.length, this.matchKind);
+}
+
+/// Instances of the enum [MatchKind] represent the kind of reference that was
+/// found when a match represents a reference to an element.
+class MatchKind {
+ /// A declaration of an element.
+ static const MatchKind DECLARATION = MatchKind('DECLARATION');
+
+ /// A reference to an element in which it is being read.
+ static const MatchKind READ = MatchKind('READ');
+
+ /// A reference to an element in which it is being both read and written.
+ static const MatchKind READ_WRITE = MatchKind('READ_WRITE');
+
+ /// A reference to an element in which it is being written.
+ static const MatchKind WRITE = MatchKind('WRITE');
+
+ /// A reference to an element in which it is being invoked.
+ static const MatchKind INVOCATION = MatchKind('INVOCATION');
+
+ /// An invocation of an enum constructor from an enum constant without
+ /// arguments.
+ static const MatchKind INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS =
+ MatchKind('INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS');
+
+ /// A reference to an element in which it is referenced.
+ static const MatchKind REFERENCE = MatchKind('REFERENCE');
+
+ /// A tear-off reference to a constructor.
+ static const MatchKind REFERENCE_BY_CONSTRUCTOR_TEAR_OFF =
+ MatchKind('REFERENCE_BY_CONSTRUCTOR_TEAR_OFF');
+
+ final String name;
+
+ const MatchKind(this.name);
+
+ @override
+ String toString() => name;
+}
+
class ReferencesCollector extends GeneralizingAstVisitor<void> {
final Element element;
- final List<int> offsets = [];
+ final List<MatchInfo> references = [];
ReferencesCollector(this.element);
@@ -142,16 +216,20 @@
void visitAssignmentExpression(AssignmentExpression node) {
if (node.writeElement != null &&
node.writeElement is PropertyAccessorElement) {
+ var kind = MatchKind.WRITE;
var property = node.writeElement as PropertyAccessorElement;
if (property.variable == element || property == element) {
if (node.leftHandSide is SimpleIdentifier) {
- offsets.add(node.leftHandSide.offset);
+ references.add(MatchInfo(
+ node.leftHandSide.offset, node.leftHandSide.length, kind));
} else if (node.leftHandSide is PrefixedIdentifier) {
var prefixIdentifier = node.leftHandSide as PrefixedIdentifier;
- offsets.add(prefixIdentifier.identifier.offset);
+ references.add(MatchInfo(prefixIdentifier.identifier.offset,
+ prefixIdentifier.identifier.length, kind));
} else if (node.leftHandSide is PropertyAccess) {
var accessor = node.leftHandSide as PropertyAccess;
- offsets.add(accessor.propertyName.offset);
+ references.add(
+ MatchInfo(accessor.propertyName.offset, accessor.length, kind));
}
}
}
@@ -159,18 +237,157 @@
node.readElement is PropertyAccessorElement) {
var property = node.readElement as PropertyAccessorElement;
if (property.variable == element) {
- offsets.add(node.rightHandSide.offset);
+ references.add(MatchInfo(node.rightHandSide.offset,
+ node.rightHandSide.length, MatchKind.READ));
+ }
+ }
+ }
+
+ @override
+ visitCommentReference(CommentReference node) {
+ var expression = node.expression;
+ if (expression is Identifier) {
+ var element = expression.staticElement;
+ if (element is ConstructorElement) {
+ if (expression is PrefixedIdentifier) {
+ var offset = expression.prefix.end;
+ var length = expression.end - offset;
+ references.add(MatchInfo(offset, length, MatchKind.REFERENCE));
+ return;
+ } else {
+ var offset = expression.end;
+ references.add(MatchInfo(offset, 0, MatchKind.REFERENCE));
+ return;
+ }
+ }
+ } else if (expression is PropertyAccess) {
+ // Nothing to do?
+ } else {
+ throw UnimplementedError('Unhandled CommentReference expression type: '
+ '${expression.runtimeType}');
+ }
+ }
+
+ @override
+ visitConstructorDeclaration(ConstructorDeclaration node) {
+ var e = node.declaredElement;
+ if (e == element) {
+ if (e!.name.isEmpty) {
+ references.add(
+ MatchInfo(e.nameOffset + e.nameLength, 0, MatchKind.DECLARATION));
+ } else {
+ var offset = node.period!.offset;
+ var length = node.name!.end - offset;
+ references.add(MatchInfo(offset, length, MatchKind.DECLARATION));
+ }
+ }
+ super.visitConstructorDeclaration(node);
+ }
+
+ @override
+ void visitConstructorName(ConstructorName node) {
+ var e = node.staticElement?.declaration;
+ e = _getActualConstructorElement(e);
+ MatchKind kind;
+ int offset;
+ int length;
+ if (e == element) {
+ if (node.parent is ConstructorReference) {
+ kind = MatchKind.REFERENCE_BY_CONSTRUCTOR_TEAR_OFF;
+ } else if (node.parent is InstanceCreationExpression) {
+ kind = MatchKind.INVOCATION;
+ } else {
+ kind = MatchKind.REFERENCE;
+ }
+ if (node.name != null) {
+ offset = node.period!.offset;
+ length = node.name!.end - offset;
+ } else {
+ offset = node.type.end;
+ length = 0;
+ }
+ references.add(MatchInfo(offset, length, kind));
+ }
+ if (e!.enclosingElement == element) {
+ kind = MatchKind.REFERENCE;
+ offset = node.offset;
+ length = element.nameLength;
+ references.add(MatchInfo(offset, length, kind));
+ }
+ }
+
+ @override
+ void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ var constructorElement = node.constructorElement;
+ if (constructorElement != null && constructorElement == element) {
+ int offset;
+ int length;
+ var constructorSelector = node.arguments?.constructorSelector;
+ if (constructorSelector != null) {
+ offset = constructorSelector.period.offset;
+ length = constructorSelector.name.end - offset;
+ } else {
+ offset = node.name.end;
+ length = 0;
+ }
+ var kind = node.arguments == null
+ ? MatchKind.INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS
+ : MatchKind.INVOCATION;
+ references.add(MatchInfo(offset, length, kind));
+ }
+ }
+
+ @override
+ void visitRedirectingConstructorInvocation(
+ RedirectingConstructorInvocation node) {
+ var e = node.staticElement;
+ if (e == element) {
+ if (node.constructorName != null) {
+ int offset = node.period!.offset;
+ int length = node.constructorName!.end - offset;
+ references.add(MatchInfo(offset, length, MatchKind.INVOCATION));
+ } else {
+ int offset = node.thisKeyword.end;
+ references.add(MatchInfo(offset, 0, MatchKind.INVOCATION));
}
}
}
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
+ if (node.inDeclarationContext()) {
+ return;
+ }
var e = node.staticElement;
if (e == element) {
- offsets.add(node.offset);
+ references.add(MatchInfo(node.offset, node.length, MatchKind.REFERENCE));
} else if (e is PropertyAccessorElement && e.variable == element) {
- offsets.add(node.offset);
+ bool inGetterContext = node.inGetterContext();
+ bool inSetterContext = node.inSetterContext();
+ MatchKind kind;
+ if (inGetterContext && inSetterContext) {
+ kind = MatchKind.READ_WRITE;
+ } else if (inGetterContext) {
+ kind = MatchKind.READ;
+ } else {
+ kind = MatchKind.WRITE;
+ }
+ references.add(MatchInfo(node.offset, node.length, kind));
+ }
+ }
+
+ @override
+ void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+ var e = node.staticElement;
+ if (e == element) {
+ if (node.constructorName != null) {
+ int offset = node.period!.offset;
+ int length = node.constructorName!.end - offset;
+ references.add(MatchInfo(offset, length, MatchKind.INVOCATION));
+ } else {
+ int offset = node.superKeyword.end;
+ references.add(MatchInfo(offset, 0, MatchKind.INVOCATION));
+ }
}
}
}
diff --git a/pkg/analyzer/lib/src/summary2/macro_application.dart b/pkg/analyzer/lib/src/summary2/macro_application.dart
index d18910f..a65e183 100644
--- a/pkg/analyzer/lib/src/summary2/macro_application.dart
+++ b/pkg/analyzer/lib/src/summary2/macro_application.dart
@@ -12,6 +12,7 @@
as macro;
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
+import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/summary2/library_builder.dart';
import 'package:analyzer/src/summary2/link.dart';
@@ -22,7 +23,7 @@
final MultiMacroExecutor macroExecutor;
final LibraryBuilder libraryBuilder;
- final Map<MacroTargetElement, List<MacroApplication>> _applications =
+ final Map<MacroTargetElement, List<_MacroApplication>> _applications =
Map.identity();
final Map<ClassDeclaration, macro.ClassDeclaration> _classDeclarations = {};
@@ -147,36 +148,31 @@
List<Annotation> annotations,
macro.Declaration Function() getDeclaration,
) async {
- final applications = <MacroApplication>[];
+ final applications = <_MacroApplication>[];
+
for (var i = 0; i < annotations.length; i++) {
- final annotation = annotations[i];
- final macroElement = _importedMacroElement(annotation.name);
- final argumentsNode = annotation.arguments;
- if (macroElement is ClassElementImpl && argumentsNode != null) {
- final importedLibrary = macroElement.library;
+ Future<MacroClassInstance?> instantiateSingle({
+ required ClassElementImpl macroClass,
+ required String constructorName,
+ required ArgumentList argumentsNode,
+ }) async {
+ final importedLibrary = macroClass.library;
final macroExecutor = importedLibrary.bundleMacroExecutor;
if (macroExecutor != null) {
- await _runWithCatchingExceptions(
+ return await _runWithCatchingExceptions(
() async {
final arguments = _buildArguments(
annotationIndex: i,
node: argumentsNode,
);
- final declaration = getDeclaration();
- final macroInstance = await macroExecutor.instantiate(
- libraryUri: macroElement.librarySource.uri,
- className: macroElement.name,
- constructorName: '', // TODO
+ return await macroExecutor.instantiate(
+ libraryUri: macroClass.librarySource.uri,
+ className: macroClass.name,
+ constructorName: constructorName,
arguments: arguments,
identifierResolver: _IdentifierResolver(),
declarationKind: macro.DeclarationKind.clazz,
- declaration: declaration,
- );
- applications.add(
- MacroApplication(
- annotationIndex: i,
- instance: macroInstance,
- ),
+ declaration: getDeclaration(),
);
},
annotationIndex: i,
@@ -185,6 +181,43 @@
},
);
}
+ return null;
+ }
+
+ final annotation = annotations[i];
+ final macroInstance = await _importedMacroDeclaration(
+ annotation.name,
+ whenClass: ({
+ required macroClass,
+ }) async {
+ final argumentsNode = annotation.arguments;
+ if (argumentsNode != null) {
+ return await instantiateSingle(
+ macroClass: macroClass,
+ constructorName: '', // TODO(scheglov) implement
+ argumentsNode: argumentsNode,
+ );
+ }
+ },
+ whenGetter: ({
+ required macroClass,
+ required instanceCreation,
+ }) async {
+ return await instantiateSingle(
+ macroClass: macroClass,
+ constructorName: '', // TODO(scheglov) implement
+ argumentsNode: instanceCreation.argumentList,
+ );
+ },
+ );
+
+ if (macroInstance != null) {
+ applications.add(
+ _MacroApplication(
+ annotationIndex: i,
+ instance: macroInstance,
+ ),
+ );
}
}
if (applications.isNotEmpty) {
@@ -192,8 +225,19 @@
}
}
- /// Return the macro element referenced by the [node].
- ElementImpl? _importedMacroElement(Identifier node) {
+ /// If [node] references a macro, invokes the right callback.
+ Future<R?> _importedMacroDeclaration<R>(
+ Identifier node, {
+ required Future<R?> Function({
+ required ClassElementImpl macroClass,
+ })
+ whenClass,
+ required Future<R?> Function({
+ required ClassElementImpl macroClass,
+ required InstanceCreationExpression instanceCreation,
+ })
+ whenGetter,
+ }) async {
final String? prefix;
final String name;
if (node is PrefixedIdentifier) {
@@ -224,8 +268,28 @@
final lookupResult = importedLibrary.scope.lookup(name);
final element = lookupResult.getter;
- if (element is ClassElementImpl && element.isMacro) {
- return element;
+ if (element is ClassElementImpl) {
+ if (element.isMacro) {
+ return await whenClass(macroClass: element);
+ }
+ } else if (element is PropertyAccessorElementImpl &&
+ element.isGetter &&
+ element.isSynthetic) {
+ final variable = element.variable;
+ final variableType = variable.type;
+ if (variable is ConstTopLevelVariableElementImpl &&
+ variableType is InterfaceType) {
+ final macroClass = variableType.element;
+ final initializer = variable.constantInitializer;
+ if (macroClass is ClassElementImpl &&
+ macroClass.isMacro &&
+ initializer is InstanceCreationExpression) {
+ return await whenGetter(
+ macroClass: macroClass,
+ instanceCreation: initializer,
+ );
+ }
+ }
}
}
return null;
@@ -380,13 +444,13 @@
}
/// Run the [body], report exceptions as [MacroApplicationError]s to [onError].
- static Future<void> _runWithCatchingExceptions<T>(
+ static Future<T?> _runWithCatchingExceptions<T>(
Future<T> Function() body, {
required int annotationIndex,
required void Function(MacroApplicationError) onError,
}) async {
try {
- await body();
+ return await body();
} on MacroApplicationError catch (e) {
onError(e);
} on macro.RemoteException catch (e) {
@@ -406,21 +470,10 @@
),
);
}
+ return null;
}
}
-class MacroApplication {
- final int annotationIndex;
- final MacroClassInstance instance;
-
- MacroApplication({
- required this.annotationIndex,
- required this.instance,
- });
-
- bool shouldExecute(macro.Phase phase) => instance.shouldExecute(phase);
-}
-
/// Helper class for evaluating arguments for a single constructor based
/// macro application.
class _ArgumentEvaluation {
@@ -551,6 +604,18 @@
}
}
+class _MacroApplication {
+ final int annotationIndex;
+ final MacroClassInstance instance;
+
+ _MacroApplication({
+ required this.annotationIndex,
+ required this.instance,
+ });
+
+ bool shouldExecute(macro.Phase phase) => instance.shouldExecute(phase);
+}
+
class _TypeResolver implements macro.TypeResolver {
@override
Future<macro.StaticType> resolve(macro.TypeAnnotationCode type) {
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index f0b0c235..934b7bd 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -396,8 +396,8 @@
var element = await _findElement(6, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(4, 11)]),
- CiderSearchMatch(aPath, [CharacterLocation(1, 7)])
+ CiderSearchMatch(bPath, [CharacterLocation(4, 11)],
+ [CiderSearchInfo(CharacterLocation(4, 11), 1, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
@@ -418,10 +418,10 @@
var element = await _findElement(16, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(
- aPath, [CharacterLocation(2, 7), CharacterLocation(5, 5)])
+ CiderSearchMatch(aPath, [CharacterLocation(5, 5)],
+ [CiderSearchInfo(CharacterLocation(5, 5), 3, MatchKind.WRITE)])
];
- expect(result, unorderedEquals(expected));
+ expect(result, expected);
}
test_findReferences_function() async {
@@ -438,8 +438,8 @@
var element = await _findElement(11, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(
- aPath, [CharacterLocation(2, 3), CharacterLocation(5, 1)])
+ CiderSearchMatch(aPath, [CharacterLocation(2, 3)],
+ [CiderSearchInfo(CharacterLocation(2, 3), 3, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
@@ -465,8 +465,8 @@
var element = await _findElement(20, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(5, 15)]),
- CiderSearchMatch(aPath, [CharacterLocation(2, 11)])
+ CiderSearchMatch(bPath, [CharacterLocation(5, 15)],
+ [CiderSearchInfo(CharacterLocation(5, 15), 3, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
@@ -485,8 +485,8 @@
var element = await _findElement(39, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(
- aPath, [CharacterLocation(3, 9), CharacterLocation(4, 11)])
+ CiderSearchMatch(aPath, [CharacterLocation(4, 11)],
+ [CiderSearchInfo(CharacterLocation(4, 11), 3, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
@@ -519,9 +519,10 @@
var element = await _findElement(17, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(5, 5)]),
- CiderSearchMatch(
- aPath, [CharacterLocation(2, 8), CharacterLocation(7, 4)])
+ CiderSearchMatch(bPath, [CharacterLocation(5, 5)],
+ [CiderSearchInfo(CharacterLocation(5, 5), 4, MatchKind.REFERENCE)]),
+ CiderSearchMatch(aPath, [CharacterLocation(7, 4)],
+ [CiderSearchInfo(CharacterLocation(7, 4), 4, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
@@ -547,8 +548,8 @@
var element = await _findElement(21, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(5, 5)]),
- CiderSearchMatch(aPath, [CharacterLocation(2, 12)])
+ CiderSearchMatch(bPath, [CharacterLocation(5, 5)],
+ [CiderSearchInfo(CharacterLocation(5, 5), 5, MatchKind.WRITE)])
];
expect(result, unorderedEquals(expected));
}
@@ -575,8 +576,8 @@
var element = await _findElement(19, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(4, 13)]),
- CiderSearchMatch(aPath, [CharacterLocation(3, 9)])
+ CiderSearchMatch(bPath, [CharacterLocation(4, 13)],
+ [CiderSearchInfo(CharacterLocation(4, 13), 3, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
@@ -603,8 +604,8 @@
var element = await _findElement(20, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(4, 3)]),
- CiderSearchMatch(aPath, [CharacterLocation(3, 10)])
+ CiderSearchMatch(bPath, [CharacterLocation(4, 3)],
+ [CiderSearchInfo(CharacterLocation(4, 3), 3, MatchKind.WRITE)]),
];
expect(result, unorderedEquals(expected));
}
@@ -624,8 +625,8 @@
var element = await _findElement(10, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(
- aPath, [CharacterLocation(1, 11), CharacterLocation(4, 11)])
+ CiderSearchMatch(aPath, [CharacterLocation(4, 11)],
+ [CiderSearchInfo(CharacterLocation(4, 11), 1, MatchKind.READ)])
];
expect(result, unorderedEquals(expected));
}
@@ -644,14 +645,20 @@
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
CiderSearchMatch(aPath, [
- CharacterLocation(1, 11),
CharacterLocation(2, 8),
CharacterLocation(4, 12)
+ ], [
+ CiderSearchInfo(CharacterLocation(2, 8), 5, MatchKind.WRITE),
+ CiderSearchInfo(CharacterLocation(4, 12), 5, MatchKind.WRITE)
])
];
expect(result.map((e) => e.path),
unorderedEquals(expected.map((e) => e.path)));
- expect(result.map((e) => e.startPositions),
+ // ignore: deprecated_member_use_from_same_package
+ expect(
+ // ignore: deprecated_member_use_from_same_package
+ result.map((e) => e.startPositions),
+ // ignore: deprecated_member_use_from_same_package
unorderedEquals(expected.map((e) => e.startPositions)));
}
@@ -672,8 +679,8 @@
var element = await _findElement(8, aPath);
var result = await fileResolver.findReferences2(element);
var expected = <CiderSearchMatch>[
- CiderSearchMatch(bPath, [CharacterLocation(3, 8)]),
- CiderSearchMatch(aPath, [CharacterLocation(1, 9)])
+ CiderSearchMatch(bPath, [CharacterLocation(3, 8)],
+ [CiderSearchInfo(CharacterLocation(3, 8), 4, MatchKind.REFERENCE)])
];
expect(result, unorderedEquals(expected));
}
diff --git a/pkg/analyzer/test/src/summary/macro_test.dart b/pkg/analyzer/test/src/summary/macro_test.dart
index 1fdc7e6..6f9fc4e 100644
--- a/pkg/analyzer/test/src/summary/macro_test.dart
+++ b/pkg/analyzer/test/src/summary/macro_test.dart
@@ -63,6 +63,130 @@
);
}
+ test_application_getter_withoutPrefix_withoutArguments() async {
+ newFile('$testPackageLibPath/a.dart', r'''
+import 'dart:async';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
+
+macro class MyMacro implements ClassTypesMacro {
+ FutureOr<void> buildTypesForClass(clazz, builder) {
+ builder.declareType(
+ 'MyClass',
+ DeclarationCode.fromString('class MyClass {}'),
+ );
+ }
+}
+
+const myMacro = MyMacro();
+''');
+
+ var library = await buildLibrary(r'''
+import 'a.dart';
+
+@myMacro
+class A {}
+''', preBuildSequence: [
+ {'package:test/a.dart'}
+ ]);
+
+ checkElementText(
+ library,
+ r'''
+library
+ imports
+ package:test/a.dart
+ definingUnit
+ classes
+ class A @33
+ metadata
+ Annotation
+ atSign: @ @18
+ name: SimpleIdentifier
+ token: myMacro @19
+ staticElement: package:test/a.dart::@getter::myMacro
+ staticType: null
+ element: package:test/a.dart::@getter::myMacro
+ constructors
+ synthetic @-1
+ parts
+ package:test/_macro_types.dart
+ classes
+ class MyClass @6
+ constructors
+ synthetic @-1
+ exportScope
+ A: package:test/test.dart;A
+ MyClass: package:test/test.dart;package:test/_macro_types.dart;MyClass
+''',
+ withExportScope: true);
+ }
+
+ test_application_getter_withPrefix_withoutArguments() async {
+ newFile('$testPackageLibPath/a.dart', r'''
+import 'dart:async';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
+
+macro class MyMacro implements ClassTypesMacro {
+ FutureOr<void> buildTypesForClass(clazz, builder) {
+ builder.declareType(
+ 'MyClass',
+ DeclarationCode.fromString('class MyClass {}'),
+ );
+ }
+}
+
+const myMacro = MyMacro();
+''');
+
+ var library = await buildLibrary(r'''
+import 'a.dart' as prefix;
+
+@prefix.myMacro
+class A {}
+''', preBuildSequence: [
+ {'package:test/a.dart'}
+ ]);
+
+ checkElementText(
+ library,
+ r'''
+library
+ imports
+ package:test/a.dart as prefix @19
+ definingUnit
+ classes
+ class A @50
+ metadata
+ Annotation
+ atSign: @ @28
+ name: PrefixedIdentifier
+ prefix: SimpleIdentifier
+ token: prefix @29
+ staticElement: self::@prefix::prefix
+ staticType: null
+ period: . @35
+ identifier: SimpleIdentifier
+ token: myMacro @36
+ staticElement: package:test/a.dart::@getter::myMacro
+ staticType: null
+ staticElement: package:test/a.dart::@getter::myMacro
+ staticType: null
+ element: package:test/a.dart::@getter::myMacro
+ constructors
+ synthetic @-1
+ parts
+ package:test/_macro_types.dart
+ classes
+ class MyClass @6
+ constructors
+ synthetic @-1
+ exportScope
+ A: package:test/test.dart;A
+ MyClass: package:test/test.dart;package:test/_macro_types.dart;MyClass
+''',
+ withExportScope: true);
+ }
+
test_application_newInstance_withoutPrefix() async {
newFile('$testPackageLibPath/a.dart', r'''
import 'dart:async';
diff --git a/pkg/compiler/lib/src/common/codegen.dart b/pkg/compiler/lib/src/common/codegen.dart
index 6da4ba4..7ded407 100644
--- a/pkg/compiler/lib/src/common/codegen.dart
+++ b/pkg/compiler/lib/src/common/codegen.dart
@@ -11,7 +11,7 @@
import '../common.dart';
import '../common/elements.dart';
import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit;
import '../elements/entities.dart';
import '../elements/types.dart' show DartType, InterfaceType;
import '../inferrer/abstract_value_domain.dart';
@@ -110,42 +110,39 @@
source.begin(tag);
MemberEntity member = source.readMember();
Set<DynamicUse> dynamicUses = source
- .readList(() => DynamicUse.readFromDataSource(source),
- emptyAsNull: true)
+ .readListOrNull(() => DynamicUse.readFromDataSource(source))
?.toSet();
Set<StaticUse> staticUses = source
- .readList(() => StaticUse.readFromDataSource(source), emptyAsNull: true)
+ .readListOrNull(() => StaticUse.readFromDataSource(source))
?.toSet();
Set<TypeUse> typeUses = source
- .readList(() => TypeUse.readFromDataSource(source), emptyAsNull: true)
+ .readListOrNull(() => TypeUse.readFromDataSource(source))
?.toSet();
Set<ConstantUse> constantUses = source
- .readList(() => ConstantUse.readFromDataSource(source),
- emptyAsNull: true)
+ .readListOrNull(() => ConstantUse.readFromDataSource(source))
?.toSet();
Set<Pair<DartType, DartType>> typeVariableBoundsSubtypeChecks =
- source.readList(() {
+ source.readListOrNull(() {
return Pair(source.readDartType(), source.readDartType());
- }, emptyAsNull: true)?.toSet();
+ })?.toSet();
Set<String> constSymbols = source.readStrings(emptyAsNull: true)?.toSet();
- List<Set<ClassEntity>> specializedGetInterceptors = source.readList(() {
+ List<Set<ClassEntity>> specializedGetInterceptors =
+ source.readListOrNull(() {
return source.readClasses().toSet();
- }, emptyAsNull: true);
+ });
bool usesInterceptor = source.readBool();
int asyncMarkersValue = source.readIntOrNull();
EnumSet<AsyncMarker> asyncMarkers =
asyncMarkersValue != null ? EnumSet.fromValue(asyncMarkersValue) : null;
Set<GenericInstantiation> genericInstantiations = source
- .readList(() => GenericInstantiation.readFromDataSource(source),
- emptyAsNull: true)
+ .readListOrNull(() => GenericInstantiation.readFromDataSource(source))
?.toSet();
- List<NativeBehavior> nativeBehaviors = source.readList(
- () => NativeBehavior.readFromDataSource(source),
- emptyAsNull: true);
+ List<NativeBehavior> nativeBehaviors =
+ source.readListOrNull(() => NativeBehavior.readFromDataSource(source));
Set<FunctionEntity> nativeMethods =
source.readMembersOrNull<FunctionEntity>()?.toSet();
Set<Selector> oneShotInterceptors = source
- .readList(() => Selector.readFromDataSource(source), emptyAsNull: true)
+ .readListOrNull(() => Selector.readFromDataSource(source))
?.toSet();
source.end(tag);
return _CodegenImpact.internal(
@@ -2208,7 +2205,8 @@
}
List<T> readList<T extends js.Node>({bool emptyAsNull = false}) {
- return source.readList(read, emptyAsNull: emptyAsNull);
+ // TODO(48820): Is [emptyAsNull] unused?
+ return emptyAsNull ? source.readListOrNull(read) : source.readList(read);
}
}
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index c482566..acbb3fc 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -55,7 +55,7 @@
import 'phase/modular_analysis.dart' as modular_analysis;
import 'resolution/enqueuer.dart';
import 'serialization/task.dart';
-import 'serialization/serialization.dart';
+import 'serialization/serialization.dart' show DataSourceIndices;
import 'serialization/strategies.dart';
import 'universe/selector.dart' show Selector;
import 'universe/codegen_world_builder.dart';
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart
index 275d178..0ecaced 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-// @dart = 2.10
-
import 'dart:collection';
import 'nodes.dart';
@@ -19,7 +17,7 @@
/// The [CombinerType] which should be used to combine [imports]. Either
/// [imports] will be a singleton, or [combinerType] will be non-null.
- final CombinerType combinerType;
+ final CombinerType? combinerType;
/// The [ImportEntity]s underlying this [Constraint].
final Set<ImportEntity> imports;
@@ -81,8 +79,9 @@
for (var import in imports) {
var libraryUri = import.enclosingLibraryUri;
var prefix = import.name;
- var uriNodes = importsByUriAndPrefix[libraryUri] ??= {};
- uriNodes[prefix] = import;
+ Map<String, ImportEntity> uriNodes =
+ importsByUriAndPrefix[libraryUri] ??= {};
+ uriNodes[prefix!] = import;
}
// A helper function for looking up an [ImportEntity] from a
@@ -93,17 +92,17 @@
throw 'Uri for constraint not found $uri';
}
var prefix = node.prefix;
- if (!importsByUriAndPrefix[uri].containsKey(prefix)) {
+ if (!importsByUriAndPrefix[uri]!.containsKey(prefix)) {
throw 'Prefix: $prefix not found for uri: $uri';
}
- return importsByUriAndPrefix[uri][prefix];
+ return importsByUriAndPrefix[uri]![prefix]!;
}
// 2) Create a [Constraint] for each [NamedNode]. Also,
// index each [Constraint] by [NamedNode].
Map<NamedNode, Constraint> nodeToConstraintMap = {};
for (var constraint in nodes.named) {
- CombinerType combinerType = null;
+ CombinerType? combinerType = null;
Set<ImportEntity> imports = {};
if (constraint is ReferenceNode) {
imports.add(_lookupReference(constraint));
@@ -123,8 +122,8 @@
// 3) Build a graph of [Constraint]s by processing user constraints and
// intializing each [Constraint]'s predecessor / successor members.
void createEdge(NamedNode successorNode, NamedNode predecessorNode) {
- var successor = nodeToConstraintMap[successorNode];
- var predecessor = nodeToConstraintMap[predecessorNode];
+ var successor = nodeToConstraintMap[successorNode]!;
+ var predecessor = nodeToConstraintMap[predecessorNode]!;
successor.predecessors.add(predecessor);
predecessor.successors.add(successor);
}
@@ -189,7 +188,8 @@
// reprocessing constraints when we need to consider new transitive
// children.
if (processed.containsKey(predecessor) &&
- processed[predecessor].containsAll(predecessorTransitiveChildren)) {
+ processed[predecessor]!
+ .containsAll(predecessorTransitiveChildren)) {
continue;
}
(processed[predecessor] ??= {}).addAll(predecessorTransitiveChildren);
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
index a32133a..50abe03 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-// @dart = 2.10
-
/// A [Node] is an abstract base class for all [Node]s parsed from json
/// constraints.
abstract class Node {
@@ -76,7 +74,7 @@
enum CombinerType { and, or }
CombinerType parseCombinerType(Map<String, dynamic> nodeJson) {
- String type = nodeJson['type'];
+ String? type = nodeJson['type'];
switch (type) {
case 'and':
return CombinerType.and;
@@ -94,7 +92,6 @@
case CombinerType.or:
return 'or';
}
- throw 'Unreachable';
}
T _jsonLookup<T>(Map<String, dynamic> nodeJson, String key) {
@@ -136,8 +133,8 @@
String name = _jsonLookup(nodeJson, 'name');
List<dynamic> referencesJson = _jsonLookup(nodeJson, 'nodes');
Set<ReferenceNode> references = {};
- for (String reference in referencesJson) {
- references.add(nameMap[reference]);
+ for (final reference in referencesJson) {
+ references.add(nameMap[reference as String] as ReferenceNode);
}
return CombinerNode(name, parseCombinerType(nodeJson), references);
}
@@ -159,10 +156,7 @@
final NamedNode predecessor;
final NamedNode successor;
- RelativeOrderNode({this.predecessor, this.successor}) {
- // TODO(joshualitt) make these both required parameters.
- assert(this.predecessor != null && this.successor != null);
- }
+ RelativeOrderNode({required this.predecessor, required this.successor});
@override
Map<String, dynamic> toJson() {
@@ -203,8 +197,8 @@
Map<String, dynamic> nodeJson, Map<String, NamedNode> nameMap) {
List<dynamic> referencesJson = _jsonLookup(nodeJson, 'nodes');
Set<NamedNode> nodes = {};
- for (String reference in referencesJson) {
- nodes.add(nameMap[reference]);
+ for (final reference in referencesJson) {
+ nodes.add(nameMap[reference as String]!);
}
return FuseNode(nodes);
}
@@ -221,7 +215,7 @@
class ProgramSplitBuilder {
final Map<String, NamedNode> namedNodes = {};
- ReferenceNodeNamer _referenceNodeNamer;
+ ReferenceNodeNamer? _referenceNodeNamer;
/// 'uri#prefix' will become a key to reference this node in other builder
/// calls.
@@ -236,7 +230,7 @@
ReferenceNodeNamer get referenceNodeNamer =>
_referenceNodeNamer ?? _uriAndPrefixNamer;
- NamedNode _addNamedNode(NamedNode node) {
+ T _addNamedNode<T extends NamedNode>(T node) {
if (namedNodes.containsKey(node.name)) {
throw 'Node with name ${node.name} already exists: '
'${namedNodes[node.name]}';
@@ -249,7 +243,7 @@
if (!namedNodes.containsKey(nodeName)) {
throw 'Missing reference node for $nodeName';
}
- return namedNodes[nodeName];
+ return namedNodes[nodeName]!;
}
ReferenceNode _lookupReferenceNode(String nodeName) {
@@ -257,7 +251,7 @@
if (node is! ReferenceNode) {
throw 'node $nodeName is not a ReferenceNode.';
}
- return node as ReferenceNode;
+ return node;
}
/// Returns a [ReferenceNode] referencing [importUriAndPrefix].
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart
index b798f7b..0d2efa6 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-// @dart = 2.10
-
import 'dart:convert';
import 'nodes.dart';
@@ -35,12 +33,13 @@
/// Reads a program split constraints json file string and returns a [Nodes]
/// object reflecting the parsed constraints.
ConstraintData read(String programSplitJson) {
- List<dynamic> doc = json.decode(programSplitJson);
+ List<dynamic> allConstraints = json.decode(programSplitJson);
List<Map<String, dynamic>> referenceConstraints = [];
List<Map<String, dynamic>> combinerConstraints = [];
List<Map<String, dynamic>> fuseConstraints = [];
List<Map<String, dynamic>> relativeOrderConstraints = [];
- for (Map<String, dynamic> constraint in doc) {
+ for (final c in allConstraints) {
+ final constraint = c as Map<String, dynamic>;
switch (constraint['type']) {
case 'reference':
referenceConstraints.add(constraint);
diff --git a/pkg/compiler/lib/src/inferrer/trivial.dart b/pkg/compiler/lib/src/inferrer/trivial.dart
index e66532e..8745ab9 100644
--- a/pkg/compiler/lib/src/inferrer/trivial.dart
+++ b/pkg/compiler/lib/src/inferrer/trivial.dart
@@ -9,7 +9,7 @@
import '../elements/names.dart';
import '../elements/types.dart' show DartType;
import '../ir/static_type.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../universe/selector.dart';
import '../universe/world_builder.dart';
import '../universe/use.dart';
diff --git a/pkg/compiler/lib/src/io/position_information.dart b/pkg/compiler/lib/src/io/position_information.dart
index 58afd06..ee6cfd7 100644
--- a/pkg/compiler/lib/src/io/position_information.dart
+++ b/pkg/compiler/lib/src/io/position_information.dart
@@ -13,7 +13,7 @@
import '../js/js.dart' as js;
import '../js/js_debug.dart';
import '../js/js_source_mapping.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../util/util.dart';
import 'code_output.dart' show BufferedCodeOutput;
import 'source_information.dart';
@@ -42,9 +42,8 @@
() => SourceLocation.readFromDataSource(source));
SourceLocation innerPosition = source.readCached<SourceLocation>(
() => SourceLocation.readFromDataSource(source));
- List<FrameContext> inliningContext = source.readList(
- () => FrameContext.readFromDataSource(source),
- emptyAsNull: true);
+ List<FrameContext> inliningContext =
+ source.readListOrNull(() => FrameContext.readFromDataSource(source));
source.end(tag);
return PositionSourceInformation(
startPosition, innerPosition, inliningContext);
diff --git a/pkg/compiler/lib/src/io/source_information.dart b/pkg/compiler/lib/src/io/source_information.dart
index 7c1d64e..0171346 100644
--- a/pkg/compiler/lib/src/io/source_information.dart
+++ b/pkg/compiler/lib/src/io/source_information.dart
@@ -10,7 +10,7 @@
import '../common.dart';
import '../elements/entities.dart';
import '../js/js.dart' show JavaScriptNodeSourceInformation;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../universe/call_structure.dart';
import 'source_file.dart';
import 'position_information.dart';
diff --git a/pkg/compiler/lib/src/ir/impact_data.dart b/pkg/compiler/lib/src/ir/impact_data.dart
index 38886b0..d60cebe 100644
--- a/pkg/compiler/lib/src/ir/impact_data.dart
+++ b/pkg/compiler/lib/src/ir/impact_data.dart
@@ -1072,87 +1072,65 @@
ImpactData.fromDataSource(DataSourceReader source) {
source.begin(tag);
- _superInitializers = source.readList(
- () => _SuperInitializer.fromDataSource(source),
- emptyAsNull: true);
- _superSets =
- source.readList(() => source.readMemberNode(), emptyAsNull: true);
- _superGets =
- source.readList(() => source.readMemberNode(), emptyAsNull: true);
- _superInvocations = source.readList(
- () => _SuperInvocation.fromDataSource(source),
- emptyAsNull: true);
- _instanceSets = source.readList(
- () => _InstanceAccess.fromDataSource(source),
- emptyAsNull: true);
- _dynamicSets = source.readList(() => _DynamicAccess.fromDataSource(source),
- emptyAsNull: true);
- _instanceGets = source.readList(
- () => _InstanceAccess.fromDataSource(source),
- emptyAsNull: true);
- _dynamicGets = source.readList(() => _DynamicAccess.fromDataSource(source),
- emptyAsNull: true);
- _functionInvocations = source.readList(
- () => _FunctionInvocation.fromDataSource(source),
- emptyAsNull: true);
- _instanceInvocations = source.readList(
- () => _InstanceInvocation.fromDataSource(source),
- emptyAsNull: true);
- _dynamicInvocations = source.readList(
- () => _DynamicInvocation.fromDataSource(source),
- emptyAsNull: true);
- _localFunctionInvocations = source.readList(
- () => _LocalFunctionInvocation.fromDataSource(source),
- emptyAsNull: true);
- _staticInvocations = source.readList(
- () => _StaticInvocation.fromDataSource(source),
- emptyAsNull: true);
- _constructorInvocations = source.readList(
- () => _ConstructorInvocation.fromDataSource(source),
- emptyAsNull: true);
+ _superInitializers =
+ source.readListOrNull(() => _SuperInitializer.fromDataSource(source));
+ _superSets = source.readListOrNull(() => source.readMemberNode());
+ _superGets = source.readListOrNull(() => source.readMemberNode());
+ _superInvocations =
+ source.readListOrNull(() => _SuperInvocation.fromDataSource(source));
+ _instanceSets =
+ source.readListOrNull(() => _InstanceAccess.fromDataSource(source));
+ _dynamicSets =
+ source.readListOrNull(() => _DynamicAccess.fromDataSource(source));
+ _instanceGets =
+ source.readListOrNull(() => _InstanceAccess.fromDataSource(source));
+ _dynamicGets =
+ source.readListOrNull(() => _DynamicAccess.fromDataSource(source));
+ _functionInvocations =
+ source.readListOrNull(() => _FunctionInvocation.fromDataSource(source));
+ _instanceInvocations =
+ source.readListOrNull(() => _InstanceInvocation.fromDataSource(source));
+ _dynamicInvocations =
+ source.readListOrNull(() => _DynamicInvocation.fromDataSource(source));
+ _localFunctionInvocations = source
+ .readListOrNull(() => _LocalFunctionInvocation.fromDataSource(source));
+ _staticInvocations =
+ source.readListOrNull(() => _StaticInvocation.fromDataSource(source));
+ _constructorInvocations = source
+ .readListOrNull(() => _ConstructorInvocation.fromDataSource(source));
_features = EnumSet<_Feature>.fromValue(source.readInt());
- _typeUses = source.readList(() => _TypeUse.fromDataSource(source),
- emptyAsNull: true);
- _redirectingInitializers = source.readList(
- () => _RedirectingInitializer.fromDataSource(source),
- emptyAsNull: true);
+ _typeUses = source.readListOrNull(() => _TypeUse.fromDataSource(source));
+ _redirectingInitializers = source
+ .readListOrNull(() => _RedirectingInitializer.fromDataSource(source));
_fieldInitializers = source.readMemberNodes<ir.Field>(emptyAsNull: true);
_fieldConstantInitializers =
source.readMemberNodeMap(source.readTreeNodes, emptyAsNull: true);
- _typeLiterals = source.readList(() => _TypeLiteral.fromDataSource(source),
- emptyAsNull: true);
+ _typeLiterals =
+ source.readListOrNull(() => _TypeLiteral.fromDataSource(source));
_localFunctions = source.readTreeNodes(emptyAsNull: true);
- _genericInstantiations = source.readList(
- () => _GenericInstantiation.fromDataSource(source),
- emptyAsNull: true);
- _staticSets = source.readList(() => _StaticAccess.fromDataSource(source),
- emptyAsNull: true);
- _staticGets = source.readList(() => _StaticAccess.fromDataSource(source),
- emptyAsNull: true);
- _staticTearOffs = source.readList(
- () => _StaticAccess.fromDataSource(source),
- emptyAsNull: true);
- _mapLiterals = source.readList(() => _MapLiteral.fromDataSource(source),
- emptyAsNull: true);
- _listLiterals = source.readList(
- () => _ContainerLiteral.fromDataSource(source),
- emptyAsNull: true);
- _setLiterals = source.readList(
- () => _ContainerLiteral.fromDataSource(source),
- emptyAsNull: true);
+ _genericInstantiations = source
+ .readListOrNull(() => _GenericInstantiation.fromDataSource(source));
+ _staticSets =
+ source.readListOrNull(() => _StaticAccess.fromDataSource(source));
+ _staticGets =
+ source.readListOrNull(() => _StaticAccess.fromDataSource(source));
+ _staticTearOffs =
+ source.readListOrNull(() => _StaticAccess.fromDataSource(source));
+ _mapLiterals =
+ source.readListOrNull(() => _MapLiteral.fromDataSource(source));
+ _listLiterals =
+ source.readListOrNull(() => _ContainerLiteral.fromDataSource(source));
+ _setLiterals =
+ source.readListOrNull(() => _ContainerLiteral.fromDataSource(source));
_symbolLiterals = source.readStrings(emptyAsNull: true)?.toSet();
_stringLiterals = source.readStrings(emptyAsNull: true)?.toSet();
- _boolLiterals =
- source.readList(() => source.readBool(), emptyAsNull: true)?.toSet();
- _doubleLiterals = source
- .readList(() => source.readDoubleValue(), emptyAsNull: true)
- ?.toSet();
- _intLiterals = source
- .readList(() => source.readIntegerValue(), emptyAsNull: true)
- ?.toSet();
- _runtimeTypeUses = source.readList(
- () => _RuntimeTypeUse.fromDataSource(source),
- emptyAsNull: true);
+ _boolLiterals = source.readListOrNull(() => source.readBool())?.toSet();
+ _doubleLiterals =
+ source.readListOrNull(() => source.readDoubleValue())?.toSet();
+ _intLiterals =
+ source.readListOrNull(() => source.readIntegerValue())?.toSet();
+ _runtimeTypeUses =
+ source.readListOrNull(() => _RuntimeTypeUse.fromDataSource(source));
// TODO(johnniwinther): Remove these when CFE provides constants.
_constructorNodes =
diff --git a/pkg/compiler/lib/src/js_backend/specialized_checks.dart b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
index 78d1786..3c6558b 100644
--- a/pkg/compiler/lib/src/js_backend/specialized_checks.dart
+++ b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
@@ -5,7 +5,7 @@
// @dart = 2.10
import '../common/elements.dart' show ElementEnvironment, JCommonElements;
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnitData;
import '../elements/entities.dart';
import '../elements/types.dart';
import '../js_backend/interceptor_data.dart' show InterceptorData;
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index e4ae932..55c36df 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -19,7 +19,7 @@
import '../common/elements.dart';
import '../common/names.dart';
import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show LateOutputUnitDataBuilder;
import '../elements/entities.dart';
import '../elements/entity_utils.dart' as utils;
import '../elements/indexed.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index 95fb87e..effb47c 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -14,7 +14,8 @@
import '../common/tasks.dart';
import '../common/work.dart';
import '../compiler.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart'
+ show LateOutputUnitDataBuilder, OutputUnitData;
import '../dump_info.dart';
import '../elements/entities.dart';
import '../enqueue.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_world.dart b/pkg/compiler/lib/src/js_model/js_world.dart
index a90587d..9c1f429 100644
--- a/pkg/compiler/lib/src/js_model/js_world.dart
+++ b/pkg/compiler/lib/src/js_model/js_world.dart
@@ -11,7 +11,8 @@
import '../common.dart';
import '../common/elements.dart' show JCommonElements, JElementEnvironment;
import '../common/names.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart'
+ show LateOutputUnitDataBuilder, OutputUnitData;
import '../elements/entities.dart';
import '../elements/entity_utils.dart' as utils;
import '../elements/names.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_world_builder.dart b/pkg/compiler/lib/src/js_model/js_world_builder.dart
index 3449c01..72efd4f 100644
--- a/pkg/compiler/lib/src/js_model/js_world_builder.dart
+++ b/pkg/compiler/lib/src/js_model/js_world_builder.dart
@@ -11,7 +11,7 @@
import '../common/elements.dart';
import '../constants/constant_system.dart' as constant_system;
import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit, OutputUnitData;
import '../elements/entities.dart';
import '../elements/indexed.dart';
import '../elements/names.dart';
diff --git a/pkg/compiler/lib/src/js_model/type_recipe.dart b/pkg/compiler/lib/src/js_model/type_recipe.dart
index 6b3025e..f503312 100644
--- a/pkg/compiler/lib/src/js_model/type_recipe.dart
+++ b/pkg/compiler/lib/src/js_model/type_recipe.dart
@@ -10,7 +10,7 @@
import '../elements/types.dart';
import '../diagnostics/invariant.dart';
import '../diagnostics/spannable.dart' show CURRENT_ELEMENT_SPANNABLE;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../util/util.dart' show Hashing;
abstract class TypeRecipeDomain {
diff --git a/pkg/compiler/lib/src/native/behavior.dart b/pkg/compiler/lib/src/native/behavior.dart
index cde763a..7dd67d5 100644
--- a/pkg/compiler/lib/src/native/behavior.dart
+++ b/pkg/compiler/lib/src/native/behavior.dart
@@ -13,7 +13,7 @@
import '../js_backend/native_data.dart' show NativeBasicData;
import '../js_model/js_world_builder.dart' show JsToFrontendMap;
import '../options.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../universe/side_effects.dart' show SideEffects;
import 'js.dart';
diff --git a/pkg/compiler/lib/src/ordered_typeset.dart b/pkg/compiler/lib/src/ordered_typeset.dart
index 148fc9a..62b0eef 100644
--- a/pkg/compiler/lib/src/ordered_typeset.dart
+++ b/pkg/compiler/lib/src/ordered_typeset.dart
@@ -12,7 +12,7 @@
import 'common.dart';
import 'elements/entities.dart';
import 'elements/types.dart';
-import 'serialization/serialization.dart';
+import 'serialization/serialization_interfaces.dart';
/// An ordered set of the supertypes of a class. The supertypes of a class are
/// ordered by decreasing hierarchy depth and by the order they are extended,
diff --git a/pkg/compiler/lib/src/serialization/serialization.dart b/pkg/compiler/lib/src/serialization/serialization.dart
index af54708..a863d05 100644
--- a/pkg/compiler/lib/src/serialization/serialization.dart
+++ b/pkg/compiler/lib/src/serialization/serialization.dart
@@ -12,7 +12,7 @@
import '../closure.dart';
import '../constants/constant_system.dart' as constant_system;
import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit;
import '../diagnostics/source_span.dart';
import '../elements/entities.dart';
import '../elements/indexed.dart';
diff --git a/pkg/compiler/lib/src/serialization/serialization_interfaces.dart b/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
index 161aa37..a2ee9dd 100644
--- a/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
+++ b/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
@@ -5,6 +5,7 @@
import 'package:kernel/ast.dart' as ir show DartType, Member, TreeNode;
import '../elements/entities.dart';
+import '../elements/types.dart' show DartType;
export 'tags.dart';
@@ -62,9 +63,18 @@
void writeDartTypeNode(ir.DartType value);
void writeDartTypeNodeOrNull(ir.DartType? value);
+ void writeDartType(DartType value);
+ void writeDartTypeOrNull(DartType? value);
+ void writeDartTypesOrNull(Iterable<DartType>? values);
+ void writeDartTypes(Iterable<DartType> values);
+
void inMemberContext(ir.Member context, void f());
void writeTreeNodeMapInContext<V>(Map<ir.TreeNode, V>? map, void f(V value),
{bool allowNull = false});
+
+ void writeCached<E extends Object>(E value, void f(E value));
+ void writeList<E extends Object>(Iterable<E> values, void f(E value),
+ {bool allowNull = false});
}
/// Migrated interface for methods of DataSourceReader.
@@ -92,7 +102,16 @@
ir.DartType readDartTypeNode();
ir.DartType? readDartTypeNodeOrNull();
+ DartType readDartType();
+ DartType? readDartTypeOrNull();
+ List<DartType> readDartTypes();
+ List<DartType>? readDartTypesOrNull();
+
T inMemberContext<T>(ir.Member context, T f());
Map<K, V> readTreeNodeMapInContext<K extends ir.TreeNode, V>(V f());
Map<K, V>? readTreeNodeMapInContextOrNull<K extends ir.TreeNode, V>(V f());
+
+ E readCached<E extends Object>(E f());
+ List<E> readList<E extends Object>(E f());
+ List<E>? readListOrNull<E extends Object>(E f());
}
diff --git a/pkg/compiler/lib/src/serialization/sink.dart b/pkg/compiler/lib/src/serialization/sink.dart
index ca1eddd..67ec6b5 100644
--- a/pkg/compiler/lib/src/serialization/sink.dart
+++ b/pkg/compiler/lib/src/serialization/sink.dart
@@ -138,6 +138,7 @@
/// Writes a reference to [value] to this data sink. If [value] has not yet
/// been serialized, [f] is called to serialize the value itself.
+ @override
void writeCached<E>(E value, void f(E value)) {
IndexedSink sink = _generalCaches[E] ??= _createSink<E>();
sink.write(value, (v) => f(v));
@@ -160,6 +161,7 @@
///
/// This is a convenience method to be used together with
/// [DataSourceReader.readList].
+ @override
void writeList<E>(Iterable<E> values, void f(E value),
{bool allowNull = false}) {
if (values == null) {
@@ -603,12 +605,14 @@
}
/// Writes the type [value] to this data sink.
+ @override
void writeDartType(DartType value) {
_writeDataKind(DataKind.dartType);
value.writeToDataSink(this, []);
}
/// Writes the optional type [value] to this data sink.
+ @override
void writeDartTypeOrNull(DartType /*?*/ value) {
_writeDataKind(DataKind.dartType);
if (value == null) {
@@ -623,6 +627,7 @@
///
/// This is a convenience method to be used together with
/// [DataSourceReader.readDartTypesOrNull].
+ @override
void writeDartTypesOrNull(Iterable<DartType> /*?*/ values) {
if (values == null) {
writeInt(0);
@@ -635,6 +640,7 @@
///
/// This is a convenience method to be used together with
/// [DataSourceReader.readDartTypes].
+ @override
void writeDartTypes(Iterable<DartType> values) {
writeInt(values.length);
for (DartType value in values) {
diff --git a/pkg/compiler/lib/src/serialization/source.dart b/pkg/compiler/lib/src/serialization/source.dart
index b5c8689..806731c 100644
--- a/pkg/compiler/lib/src/serialization/source.dart
+++ b/pkg/compiler/lib/src/serialization/source.dart
@@ -197,6 +197,7 @@
/// Reads a reference to an [E] value from this data source. If the value has
/// not yet been deserialized, [f] is called to deserialize the value itself.
+ @override
E readCached<E>(E f()) {
IndexedSource source = _generalCaches[E] ??= _createSource<E>();
return source.read(f);
@@ -215,16 +216,27 @@
return null;
}
- /// Reads a list of [E] values from this data source. If [emptyAsNull] is
- /// `true`, `null` is returned instead of an empty list.
+ /// Reads a list of [E] values from this data source.
///
/// This is a convenience method to be used together with
/// [DataSinkWriter.writeList].
- List<E> readList<E>(E f(), {bool emptyAsNull = false}) {
+ @override
+ List<E> readList<E>(E f()) {
+ return readListOrNull<E>(f) ?? List<E>.empty();
+ }
+
+ /// Reads a list of [E] values from this data source.
+ /// `null` is returned instead of an empty list.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSinkWriter.writeList].
+ @override
+ List<E> /*?*/ readListOrNull<E>(E f()) {
int count = readInt();
- if (count == 0 && emptyAsNull) return null;
- List<E> list = List<E>.filled(count, null);
- for (int i = 0; i < count; i++) {
+ if (count == 0) return null;
+ final first = f();
+ List<E> list = List<E>.filled(count, first);
+ for (int i = 1; i < count; i++) {
list[i] = f();
}
return list;
@@ -658,6 +670,7 @@
}
/// Reads a type from this data source.
+ @override
DartType /*!*/ readDartType() {
_checkDataKind(DataKind.dartType);
final type = DartType.readFromDataSource(this, []);
@@ -665,6 +678,7 @@
}
/// Reads a nullable type from this data source.
+ @override
DartType /*?*/ readDartTypeOrNull() {
_checkDataKind(DataKind.dartType);
return DartType.readFromDataSourceOrNull(this, []);
@@ -674,6 +688,7 @@
///
/// This is a convenience method to be used together with
/// [DataSinkWriter.writeDartTypes].
+ @override
List<DartType> readDartTypes() {
// Share the list when empty.
return readDartTypesOrNull() ?? const [];
@@ -684,6 +699,7 @@
///
/// This is a convenience method to be used together with
/// [DataSinkWriter.writeDartTypes].
+ @override
List<DartType> /*?*/ readDartTypesOrNull() {
int count = readInt();
if (count == 0) return null;
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index d897f20..3755c74 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -14,7 +14,7 @@
import '../common/names.dart';
import '../constants/constant_system.dart' as constant_system;
import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit;
import '../dump_info.dart';
import '../elements/entities.dart';
import '../elements/jumps.dart';
diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
index ca162ab..3600c44 100644
--- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
+++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
@@ -787,6 +787,10 @@
// at use in the check.
if (instruction.usedBy.isEmpty) {
visitInstruction(instruction);
+ } else {
+ // The name argument can be generated at use. If present, it is either a
+ // string constant or a reference to a string.
+ analyzeInputs(instruction, 1);
}
}
@@ -1280,6 +1284,8 @@
// TODO(sra): Check if a.x="s" can avoid or specialize a write barrier.
if (instruction is HFieldSet) return true;
+ if (instruction is HLateCheck) return true;
+
// TODO(sra): Determine if other uses result in faster JavaScript code.
return false;
}
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index 36f104e..72dff8e 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -3701,12 +3701,15 @@
/// A check for a late sentinel to determine if a late field may be read from or
/// written to.
abstract class HLateCheck extends HCheck {
- final HInstruction name;
-
- HLateCheck(HInstruction input, this.name, AbstractValue type)
+ HLateCheck(HInstruction input, HInstruction /*?*/ name, AbstractValue type)
: super([input, if (name != null) name], type);
- bool get hasName => name != null;
+ bool get hasName => inputs.length > 1;
+
+ HInstruction get name {
+ if (hasName) return inputs[1];
+ throw StateError('HLateCheck.name: no name');
+ }
@override
bool isControlFlow() => true;
diff --git a/pkg/compiler/lib/src/universe/class_hierarchy.dart b/pkg/compiler/lib/src/universe/class_hierarchy.dart
index edaba36..80505f7 100644
--- a/pkg/compiler/lib/src/universe/class_hierarchy.dart
+++ b/pkg/compiler/lib/src/universe/class_hierarchy.dart
@@ -9,7 +9,7 @@
import '../elements/entities.dart';
import '../elements/types.dart' show InterfaceType;
import '../kernel/element_map.dart' show KernelToElementMap;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import 'class_set.dart';
// TODO(johnniwinther): Move more methods from `JClosedWorld` to
diff --git a/pkg/compiler/lib/src/universe/class_set.dart b/pkg/compiler/lib/src/universe/class_set.dart
index b538a40..a527f69 100644
--- a/pkg/compiler/lib/src/universe/class_set.dart
+++ b/pkg/compiler/lib/src/universe/class_set.dart
@@ -10,7 +10,7 @@
import '../elements/entities.dart' show ClassEntity;
import '../elements/indexed.dart' show IndexedClass;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../util/enumset.dart' show EnumSet;
/// Enum for the different kinds of instantiation of a class.
@@ -546,12 +546,12 @@
DataSourceReader source, Map<ClassEntity, ClassHierarchyNode> nodeMap) {
source.begin(tag);
ClassHierarchyNode node = nodeMap[source.readClass()];
- List<ClassHierarchyNode> subtypes = source.readList(() {
+ List<ClassHierarchyNode> subtypes = source.readListOrNull(() {
return nodeMap[source.readClass()];
- }, emptyAsNull: true);
- List<ClassHierarchyNode> mixinApplications = source.readList(() {
+ });
+ List<ClassHierarchyNode> mixinApplications = source.readListOrNull(() {
return nodeMap[source.readClass()];
- }, emptyAsNull: true);
+ });
source.end(tag);
return ClassSet(node)
.._subtypes = subtypes
diff --git a/pkg/compiler/lib/src/universe/feature.dart b/pkg/compiler/lib/src/universe/feature.dart
index 213c7bf..b1a01a6 100644
--- a/pkg/compiler/lib/src/universe/feature.dart
+++ b/pkg/compiler/lib/src/universe/feature.dart
@@ -16,7 +16,7 @@
import '../elements/types.dart';
import '../ir/runtime_type_analysis.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../util/util.dart';
/// A language feature that may be seen in the program.
diff --git a/pkg/compiler/lib/src/universe/member_usage.dart b/pkg/compiler/lib/src/universe/member_usage.dart
index 2356b7a..21027d0 100644
--- a/pkg/compiler/lib/src/universe/member_usage.dart
+++ b/pkg/compiler/lib/src/universe/member_usage.dart
@@ -10,7 +10,7 @@
import '../constants/values.dart';
import '../elements/entities.dart';
import '../js_model/closure.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../util/enumset.dart';
import 'call_structure.dart';
diff --git a/pkg/compiler/lib/src/universe/side_effects.dart b/pkg/compiler/lib/src/universe/side_effects.dart
index a8cf6a2..9533a2b 100644
--- a/pkg/compiler/lib/src/universe/side_effects.dart
+++ b/pkg/compiler/lib/src/universe/side_effects.dart
@@ -7,7 +7,7 @@
library universe.side_effects;
import '../elements/entities.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
class SideEffects {
/// Tag used for identifying serialized [SideEffects] objects in a debugging
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index 276eee7..7c9e97e5 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -8,7 +8,7 @@
import 'closure.dart';
import 'common/elements.dart' show JCommonElements, JElementEnvironment;
-import 'deferred_load/output_unit.dart';
+import 'deferred_load/output_unit.dart' show OutputUnitData;
import 'elements/entities.dart';
import 'elements/names.dart';
import 'elements/types.dart';
diff --git a/pkg/compiler/test/deferred/constant_emission_test_helper.dart b/pkg/compiler/test/deferred/constant_emission_test_helper.dart
index e7bb164..d5d7aa0 100644
--- a/pkg/compiler/test/deferred/constant_emission_test_helper.dart
+++ b/pkg/compiler/test/deferred/constant_emission_test_helper.dart
@@ -9,7 +9,7 @@
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/constants/values.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart' show OutputUnit;
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/js_emitter/model.dart';
diff --git a/pkg/compiler/test/deferred/load_graph_segmentation_test.dart b/pkg/compiler/test/deferred/load_graph_segmentation_test.dart
index 67954ca..8fc553a 100644
--- a/pkg/compiler/test/deferred/load_graph_segmentation_test.dart
+++ b/pkg/compiler/test/deferred/load_graph_segmentation_test.dart
@@ -10,7 +10,7 @@
import 'package:async_helper/async_helper.dart';
import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart' show OutputUnit;
import 'package:compiler/src/js_emitter/startup_emitter/fragment_merger.dart';
import 'package:expect/expect.dart';
import '../helpers/memory_compiler.dart';
diff --git a/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart b/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart
index 92c1cb6..fe2a251 100644
--- a/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart
+++ b/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart
@@ -8,7 +8,8 @@
import 'package:compiler/src/closure.dart';
import 'package:compiler/src/common.dart';
import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart'
+ show OutputUnit, OutputUnitData;
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/ir/util.dart';
import 'package:compiler/src/js_model/element_map.dart';
diff --git a/pkg/compiler/test/dump_info/data/deferred/main.dart b/pkg/compiler/test/dump_info/data/deferred/main.dart
index 7e1cee2..58ffa26 100644
--- a/pkg/compiler/test/dump_info/data/deferred/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred/main.dart
@@ -4,7 +4,92 @@
// @dart = 2.7
-/*library: library=[{
+/*library:
+ constant=[
+ {
+ "id": "constant/B.C_Deferred = A.lib__funky$closure();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 39,
+ "outputUnit": "outputUnit/1",
+ "code": "B.C_Deferred = A.lib__funky$closure();\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 131,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
+},
+ {
+ "id": "constant/B.C__RootZone = new A._RootZone();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 35,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C__RootZone = new A._RootZone();\n"
+},
+ {
+ "id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 51,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
+},
+ {
+ "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 49,
+ "outputUnit": "outputUnit/main",
+ "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+ {
+ "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 41,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+ {
+ "id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 37,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSInt_methods = J.JSInt.prototype;\n"
+},
+ {
+ "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 43,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+ {
+ "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 59,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+}],
+ deferredFiles=[{
+ "main.dart": {
+ "name": "<unnamed>",
+ "imports": {
+ "lib": [
+ "out_1.part.js"
+ ]
+ }
+ }
+}],
+ dependencies=[{}],
+ library=[{
"id": "library/memory:sdk/tests/web/native/main.dart::",
"kind": "library",
"name": "<unnamed>",
@@ -13,7 +98,27 @@
"function/memory:sdk/tests/web/native/main.dart::main"
],
"canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[
+ {
+ "id": "outputUnit/1",
+ "kind": "outputUnit",
+ "name": "1",
+ "size": 1063,
+ "filename": "out_1.part.js",
+ "imports": [
+ "lib"
+ ]
+},
+ {
+ "id": "outputUnit/main",
+ "kind": "outputUnit",
+ "name": "main",
+ "size": 183730,
+ "filename": "out",
+ "imports": []
+}]
+*/
import 'lib.dart' deferred as lib;
diff --git a/pkg/compiler/test/dump_info/data/deferred_future/main.dart b/pkg/compiler/test/dump_info/data/deferred_future/main.dart
index 10e2e59..5500fb6 100644
--- a/pkg/compiler/test/dump_info/data/deferred_future/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred_future/main.dart
@@ -2,7 +2,100 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-/*library: library=[{
+/*library:
+ constant=[
+ {
+ "id": "constant/B.C_A = new A.A();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 19,
+ "outputUnit": "outputUnit/1",
+ "code": "B.C_A = new A.A();\n"
+},
+ {
+ "id": "constant/B.C_Deferred = B.C_A;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 22,
+ "outputUnit": "outputUnit/1",
+ "code": "B.C_Deferred = B.C_A;\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 131,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
+},
+ {
+ "id": "constant/B.C__RootZone = new A._RootZone();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 35,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C__RootZone = new A._RootZone();\n"
+},
+ {
+ "id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 51,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
+},
+ {
+ "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 49,
+ "outputUnit": "outputUnit/main",
+ "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+ {
+ "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 41,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+ {
+ "id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 37,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSInt_methods = J.JSInt.prototype;\n"
+},
+ {
+ "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 43,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+ {
+ "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 59,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+}],
+ deferredFiles=[{
+ "main.dart": {
+ "name": "<unnamed>",
+ "imports": {
+ "lib1": [
+ "out_1.part.js"
+ ]
+ }
+ }
+}],
+ dependencies=[{}],
+ library=[{
"id": "library/memory:sdk/tests/web/native/main.dart::",
"kind": "library",
"name": "<unnamed>",
@@ -11,7 +104,27 @@
"function/memory:sdk/tests/web/native/main.dart::main"
],
"canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[
+ {
+ "id": "outputUnit/1",
+ "kind": "outputUnit",
+ "name": "1",
+ "size": 846,
+ "filename": "out_1.part.js",
+ "imports": [
+ "lib1"
+ ]
+},
+ {
+ "id": "outputUnit/main",
+ "kind": "outputUnit",
+ "name": "main",
+ "size": 190176,
+ "filename": "out",
+ "imports": []
+}]
+*/
// @dart = 2.7
diff --git a/pkg/compiler/test/dump_info/data/js_members.dart b/pkg/compiler/test/dump_info/data/js_members.dart
index 6f18324..46efe6b 100644
--- a/pkg/compiler/test/dump_info/data/js_members.dart
+++ b/pkg/compiler/test/dump_info/data/js_members.dart
@@ -1,4 +1,128 @@
-/*library: library=[{
+/*library:
+ constant=[
+ {
+ "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 131,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST0 = function() {\n var toStringFunction = Object.prototype.toString;\n function getTag(o) {\n var s = toStringFunction.call(o);\n return s.substring(8, s.length - 1);\n }\n function getUnknownTag(object, tag) {\n if (/^HTML[A-Z].*Element$/.test(tag)) {\n var name = toStringFunction.call(object);\n if (name == \"[object Object]\") return null;\n return \"HTMLElement\";\n }\n }\n function getUnknownTagGenericBrowser(object, tag) {\n if (self.HTMLElement && object instanceof HTMLElement) return \"HTMLElement\";\n return getUnknownTag(object, tag);\n }\n function prototypeForTag(tag) {\n if (typeof window == \"undefined\") return null;\n if (typeof window[tag] == \"undefined\") return null;\n var constructor = window[tag];\n if (typeof constructor != \"function\") return null;\n return constructor.prototype;\n }\n function discriminator(tag) { return null; }\n var isBrowser = typeof navigator == \"object\";\n return {\n getTag: getTag,\n getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,\n prototypeForTag: prototypeForTag,\n discriminator: discriminator };\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 1133,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST0 = function() {\n var toStringFunction = Object.prototype.toString;\n function getTag(o) {\n var s = toStringFunction.call(o);\n return s.substring(8, s.length - 1);\n }\n function getUnknownTag(object, tag) {\n if (/^HTML[A-Z].*Element$/.test(tag)) {\n var name = toStringFunction.call(object);\n if (name == \"[object Object]\") return null;\n return \"HTMLElement\";\n }\n }\n function getUnknownTagGenericBrowser(object, tag) {\n if (self.HTMLElement && object instanceof HTMLElement) return \"HTMLElement\";\n return getUnknownTag(object, tag);\n }\n function prototypeForTag(tag) {\n if (typeof window == \"undefined\") return null;\n if (typeof window[tag] == \"undefined\") return null;\n var constructor = window[tag];\n if (typeof constructor != \"function\") return null;\n return constructor.prototype;\n }\n function discriminator(tag) { return null; }\n var isBrowser = typeof navigator == \"object\";\n return {\n getTag: getTag,\n getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,\n prototypeForTag: prototypeForTag,\n discriminator: discriminator };\n};\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST1 = function(hooks) {\n if (typeof dartExperimentalFixupGetTag != \"function\") return hooks;\n hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 167,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST1 = function(hooks) {\n if (typeof dartExperimentalFixupGetTag != \"function\") return hooks;\n hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);\n};\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST2 = function(hooks) {\n var getTag = hooks.getTag;\n var prototypeForTag = hooks.prototypeForTag;\n function getTagFixed(o) {\n var tag = getTag(o);\n if (tag == \"Document\") {\n if (!!o.xmlVersion) return \"!Document\";\n return \"!HTMLDocument\";\n }\n return tag;\n }\n function prototypeForTagFixed(tag) {\n if (tag == \"Document\") return null;\n return prototypeForTag(tag);\n }\n hooks.getTag = getTagFixed;\n hooks.prototypeForTag = prototypeForTagFixed;\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 491,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST2 = function(hooks) {\n var getTag = hooks.getTag;\n var prototypeForTag = hooks.prototypeForTag;\n function getTagFixed(o) {\n var tag = getTag(o);\n if (tag == \"Document\") {\n if (!!o.xmlVersion) return \"!Document\";\n return \"!HTMLDocument\";\n }\n return tag;\n }\n function prototypeForTagFixed(tag) {\n if (tag == \"Document\") return null;\n return prototypeForTag(tag);\n }\n hooks.getTag = getTagFixed;\n hooks.prototypeForTag = prototypeForTagFixed;\n};\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST3 = function(hooks) { return hooks; }\n;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 52,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST3 = function(hooks) { return hooks; }\n;\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST4 = function(hooks) {\n var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n if (userAgent.indexOf(\"Trident/\") == -1) return hooks;\n var getTag = hooks.getTag;\n var quickMap = {\n \"BeforeUnloadEvent\": \"Event\",\n \"DataTransfer\": \"Clipboard\",\n \"HTMLDDElement\": \"HTMLElement\",\n \"HTMLDTElement\": \"HTMLElement\",\n \"HTMLPhraseElement\": \"HTMLElement\",\n \"Position\": \"Geoposition\"\n };\n function getTagIE(o) {\n var tag = getTag(o);\n var newTag = quickMap[tag];\n if (newTag) return newTag;\n if (tag == \"Object\") {\n if (window.DataView && (o instanceof window.DataView)) return \"DataView\";\n }\n return tag;\n }\n function prototypeForTagIE(tag) {\n var constructor = window[tag];\n if (constructor == null) return null;\n return constructor.prototype;\n }\n hooks.getTag = getTagIE;\n hooks.prototypeForTag = prototypeForTagIE;\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 900,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST4 = function(hooks) {\n var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n if (userAgent.indexOf(\"Trident/\") == -1) return hooks;\n var getTag = hooks.getTag;\n var quickMap = {\n \"BeforeUnloadEvent\": \"Event\",\n \"DataTransfer\": \"Clipboard\",\n \"HTMLDDElement\": \"HTMLElement\",\n \"HTMLDTElement\": \"HTMLElement\",\n \"HTMLPhraseElement\": \"HTMLElement\",\n \"Position\": \"Geoposition\"\n };\n function getTagIE(o) {\n var tag = getTag(o);\n var newTag = quickMap[tag];\n if (newTag) return newTag;\n if (tag == \"Object\") {\n if (window.DataView && (o instanceof window.DataView)) return \"DataView\";\n }\n return tag;\n }\n function prototypeForTagIE(tag) {\n var constructor = window[tag];\n if (constructor == null) return null;\n return constructor.prototype;\n }\n hooks.getTag = getTagIE;\n hooks.prototypeForTag = prototypeForTagIE;\n};\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST5 = function(hooks) {\n var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n if (userAgent.indexOf(\"Firefox\") == -1) return hooks;\n var getTag = hooks.getTag;\n var quickMap = {\n \"BeforeUnloadEvent\": \"Event\",\n \"DataTransfer\": \"Clipboard\",\n \"GeoGeolocation\": \"Geolocation\",\n \"Location\": \"!Location\",\n \"WorkerMessageEvent\": \"MessageEvent\",\n \"XMLDocument\": \"!Document\"};\n function getTagFirefox(o) {\n var tag = getTag(o);\n return quickMap[tag] || tag;\n }\n hooks.getTag = getTagFirefox;\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 548,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST5 = function(hooks) {\n var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n if (userAgent.indexOf(\"Firefox\") == -1) return hooks;\n var getTag = hooks.getTag;\n var quickMap = {\n \"BeforeUnloadEvent\": \"Event\",\n \"DataTransfer\": \"Clipboard\",\n \"GeoGeolocation\": \"Geolocation\",\n \"Location\": \"!Location\",\n \"WorkerMessageEvent\": \"MessageEvent\",\n \"XMLDocument\": \"!Document\"};\n function getTagFirefox(o) {\n var tag = getTag(o);\n return quickMap[tag] || tag;\n }\n hooks.getTag = getTagFirefox;\n};\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST6 = function(getTagFallback) {\n return function(hooks) {\n if (typeof navigator != \"object\") return hooks;\n var ua = navigator.userAgent;\n if (ua.indexOf(\"DumpRenderTree\") >= 0) return hooks;\n if (ua.indexOf(\"Chrome\") >= 0) {\n function confirm(p) {\n return typeof window == \"object\" && window[p] && window[p].name == p;\n }\n if (confirm(\"Window\") && confirm(\"HTMLElement\")) return hooks;\n }\n hooks.getTag = getTagFallback;\n };\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 482,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST6 = function(getTagFallback) {\n return function(hooks) {\n if (typeof navigator != \"object\") return hooks;\n var ua = navigator.userAgent;\n if (ua.indexOf(\"DumpRenderTree\") >= 0) return hooks;\n if (ua.indexOf(\"Chrome\") >= 0) {\n function confirm(p) {\n return typeof window == \"object\" && window[p] && window[p].name == p;\n }\n if (confirm(\"Window\") && confirm(\"HTMLElement\")) return hooks;\n }\n hooks.getTag = getTagFallback;\n };\n};\n"
+},
+ {
+ "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 49,
+ "outputUnit": "outputUnit/main",
+ "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+ {
+ "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 41,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+ {
+ "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 43,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+ {
+ "id": "constant/B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 63,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;\n"
+},
+ {
+ "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 59,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+},
+ {
+ "id": "constant/B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 69,
+ "outputUnit": "outputUnit/main",
+ "code": "B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;\n"
+},
+ {
+ "id": "constant/B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 73,
+ "outputUnit": "outputUnit/main",
+ "code": "B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;\n"
+}],
+ deferredFiles=[{}],
+ dependencies=[{}],
+ library=[{
"id": "library/memory:sdk/tests/web/native/main.dart::",
"kind": "library",
"name": "js_parameters_test",
@@ -9,7 +133,16 @@
"function/memory:sdk/tests/web/native/main.dart::main"
],
"canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[{
+ "id": "outputUnit/main",
+ "kind": "outputUnit",
+ "name": "main",
+ "size": 112396,
+ "filename": "out",
+ "imports": []
+}]
+*/
@JS()
library js_parameters_test;
diff --git a/pkg/compiler/test/dump_info/data/members.dart b/pkg/compiler/test/dump_info/data/members.dart
index 6494321..4ac2296 100644
--- a/pkg/compiler/test/dump_info/data/members.dart
+++ b/pkg/compiler/test/dump_info/data/members.dart
@@ -1,4 +1,64 @@
-/*library: library=[{
+/*library:
+ constant=[
+ {
+ "id": "constant/B.C_A = new A.A();\n",
+ "kind": "constant",
+ "name": null,
+ "size": 19,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_A = new A.A();\n"
+},
+ {
+ "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n",
+ "kind": "constant",
+ "name": null,
+ "size": 131,
+ "outputUnit": "outputUnit/main",
+ "code": "B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
+},
+ {
+ "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 49,
+ "outputUnit": "outputUnit/main",
+ "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+ {
+ "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 41,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+ {
+ "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 43,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+ {
+ "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+ "kind": "constant",
+ "name": null,
+ "size": 59,
+ "outputUnit": "outputUnit/main",
+ "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+},
+ {
+ "id": "constant/B.List_A = A._setArrayType(makeConstList([B.C_A]), A.findType(\"JSArray<A>\"));\n",
+ "kind": "constant",
+ "name": null,
+ "size": 78,
+ "outputUnit": "outputUnit/main",
+ "code": "B.List_A = A._setArrayType(makeConstList([B.C_A]), A.findType(\"JSArray<A>\"));\n"
+}],
+ deferredFiles=[{}],
+ dependencies=[{}],
+ library=[{
"id": "library/memory:sdk/tests/web/native/main.dart::",
"kind": "library",
"name": "<unnamed>",
@@ -12,7 +72,16 @@
"function/memory:sdk/tests/web/native/main.dart::main"
],
"canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[{
+ "id": "outputUnit/main",
+ "kind": "outputUnit",
+ "name": "main",
+ "size": 91101,
+ "filename": "out",
+ "imports": []
+}]
+*/
/*class: C:class=[{
"id": "class/memory:sdk/tests/web/native/main.dart::C",
"kind": "class",
diff --git a/pkg/compiler/test/dump_info/dump_info_test.dart b/pkg/compiler/test/dump_info/dump_info_test.dart
index 411f65f..87e0585 100644
--- a/pkg/compiler/test/dump_info/dump_info_test.dart
+++ b/pkg/compiler/test/dump_info/dump_info_test.dart
@@ -66,6 +66,23 @@
features.addElement(
Tags.library, indentedEncoder.convert(libraryInfo.accept(converter)));
+ // Store program-wide information on the main library.
+ var name = '${library.canonicalUri.pathSegments.last}';
+ if (name.startsWith('main')) {
+ for (final constantInfo in dumpInfoState.info.constants) {
+ features.addElement(Tags.constant,
+ indentedEncoder.convert(constantInfo.accept(converter)));
+ }
+ features.addElement(Tags.dependencies,
+ indentedEncoder.convert(dumpInfoState.info.dependencies));
+ for (final outputUnit in dumpInfoState.info.outputUnits) {
+ features.addElement(Tags.outputUnits,
+ indentedEncoder.convert(outputUnit.accept(converter)));
+ }
+ features.addElement(Tags.deferredFiles,
+ indentedEncoder.convert(dumpInfoState.info.deferredFiles));
+ }
+
final id = LibraryId(library.canonicalUri);
actualMap[id] =
ActualData<Features>(id, features, library.canonicalUri, -1, library);
diff --git a/pkg/compiler/test/helpers/program_lookup.dart b/pkg/compiler/test/helpers/program_lookup.dart
index b575f55..600335d 100644
--- a/pkg/compiler/test/helpers/program_lookup.dart
+++ b/pkg/compiler/test/helpers/program_lookup.dart
@@ -5,7 +5,7 @@
// @dart = 2.7
import 'package:compiler/src/common/elements.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart' show OutputUnit;
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/js/js.dart' as js;
import 'package:compiler/src/js_backend/namer.dart';
diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md
index 895c2ab..c962060 100644
--- a/pkg/kernel/binary.md
+++ b/pkg/kernel/binary.md
@@ -1371,7 +1371,7 @@
type YieldStatement extends Statement {
Byte tag = 77;
FileOffset fileOffset;
- Byte flags (isYieldStar);
+ Byte flags (isYieldStar, isNative);
Expression expression;
}
diff --git a/pkg/vm/lib/transformations/continuation.dart b/pkg/vm/lib/transformations/continuation.dart
index f158e8e..4201896 100644
--- a/pkg/vm/lib/transformations/continuation.dart
+++ b/pkg/vm/lib/transformations/continuation.dart
@@ -158,9 +158,16 @@
return node;
}
case AsyncMarker.AsyncStar:
- return new AsyncStarFunctionRewriter(
- helper, node, staticTypeContext, desugarAsync)
- .rewrite();
+ if (desugarAsync) {
+ return new AsyncStarFunctionRewriter(
+ helper, node, staticTypeContext, desugarAsync)
+ .rewrite();
+ } else {
+ node.transformOrRemoveChildren(new RecursiveContinuationRewriter(
+ helper, staticTypeContext, desugarAsync,
+ desugarAwaitFor: true));
+ return node;
+ }
}
}
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h
index 9251781..e268ff0 100644
--- a/runtime/vm/code_descriptors.h
+++ b/runtime/vm/code_descriptors.h
@@ -77,7 +77,9 @@
};
explicit ExceptionHandlerList(const Function& function)
- : list_(), has_async_handler_(function.IsCompactAsyncFunction()) {}
+ : list_(),
+ has_async_handler_(function.IsCompactAsyncFunction() ||
+ function.IsCompactAsyncStarFunction()) {}
intptr_t Length() const { return list_.length(); }
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index c56be1c..771887e 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -2519,6 +2519,36 @@
}
}
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+ // Collect the longest descending sequences of registers and
+ // push them with a single STMDB instruction.
+ RegList pending_regs = 0;
+ Register lowest_pending_reg = kNumberOfCpuRegisters;
+ intptr_t num_pending_regs = 0;
+ for (Register reg : regs) {
+ if (reg >= lowest_pending_reg) {
+ ASSERT(pending_regs != 0);
+ if (num_pending_regs > 1) {
+ PushList(pending_regs);
+ } else {
+ Push(lowest_pending_reg);
+ }
+ pending_regs = 0;
+ num_pending_regs = 0;
+ }
+ pending_regs |= (1 << reg);
+ lowest_pending_reg = reg;
+ ++num_pending_regs;
+ }
+ if (pending_regs != 0) {
+ if (num_pending_regs > 1) {
+ PushList(pending_regs);
+ } else {
+ Push(lowest_pending_reg);
+ }
+ }
+}
+
void Assembler::PushNativeCalleeSavedRegisters() {
// Save new context and C++ ABI callee-saved registers.
PushList(kAbiPreservedCpuRegs);
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index f7f856e..821426e 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -1137,6 +1137,8 @@
void PushRegisters(const RegisterSet& regs);
void PopRegisters(const RegisterSet& regs);
+ void PushRegistersInOrder(std::initializer_list<Register> regs);
+
// Push all registers which are callee-saved according to the ARM ABI.
void PushNativeCalleeSavedRegisters();
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index efdeb2d..8d90c0f 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -2368,6 +2368,22 @@
ASSERT(vprev == kNoVRegister);
}
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+ // Use STP to push registers in pairs.
+ Register pending_reg = kNoRegister;
+ for (Register reg : regs) {
+ if (pending_reg != kNoRegister) {
+ PushPair(reg, pending_reg);
+ pending_reg = kNoRegister;
+ } else {
+ pending_reg = reg;
+ }
+ }
+ if (pending_reg != kNoRegister) {
+ Push(pending_reg);
+ }
+}
+
void Assembler::PushNativeCalleeSavedRegisters() {
// Save the callee-saved registers.
// We use str instead of the Push macro because we will be pushing the PP
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 980c22c..116083a 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -524,6 +524,8 @@
void PushRegisters(const RegisterSet& registers);
void PopRegisters(const RegisterSet& registers);
+ void PushRegistersInOrder(std::initializer_list<Register> regs);
+
// Push all registers which are callee-saved according to the ARM64 ABI.
void PushNativeCalleeSavedRegisters();
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc
index e004bb5..2ead117 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32.cc
@@ -1873,6 +1873,12 @@
popl(r);
}
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+ for (Register reg : regs) {
+ PushRegister(reg);
+ }
+}
+
void Assembler::AddImmediate(Register reg, const Immediate& imm) {
const intptr_t value = imm.value();
if (value == 0) {
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index bc35841..48f6a49 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -710,6 +710,8 @@
PopRegister(r1);
}
+ void PushRegistersInOrder(std::initializer_list<Register> regs);
+
void AddImmediate(Register reg, const Immediate& imm);
void AddImmediate(Register reg, int32_t value) {
AddImmediate(reg, Immediate(value));
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.cc b/runtime/vm/compiler/assembler/assembler_riscv.cc
index b9bf437..c87a472 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.cc
+++ b/runtime/vm/compiler/assembler/assembler_riscv.cc
@@ -2173,6 +2173,7 @@
}
ASSERT(offset == 0);
}
+
void Assembler::PopRegisters(const RegisterSet& regs) {
// The order in which the registers are pushed must match the order
// in which the registers are encoded in the safepoint's stack map.
@@ -2201,6 +2202,16 @@
addi(SP, SP, size);
}
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+ intptr_t offset = regs.size() * target::kWordSize;
+ subi(SP, SP, offset);
+ for (Register reg : regs) {
+ ASSERT(reg != SP);
+ offset -= target::kWordSize;
+ sx(reg, Address(SP, offset));
+ }
+}
+
void Assembler::PushNativeCalleeSavedRegisters() {
RegisterSet regs(kAbiPreservedCpuRegs, kAbiPreservedFpuRegs);
intptr_t size = (regs.CpuRegisterCount() * target::kWordSize) +
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.h b/runtime/vm/compiler/assembler/assembler_riscv.h
index 68ec777..9ae181f 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.h
+++ b/runtime/vm/compiler/assembler/assembler_riscv.h
@@ -778,6 +778,8 @@
void PushRegisters(const RegisterSet& registers);
void PopRegisters(const RegisterSet& registers);
+ void PushRegistersInOrder(std::initializer_list<Register> regs);
+
// Push all registers which are callee-saved according to the ARM64 ABI.
void PushNativeCalleeSavedRegisters();
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index ade5233..38a6af8 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -1887,6 +1887,12 @@
}
}
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+ for (Register reg : regs) {
+ PushRegister(reg);
+ }
+}
+
static const RegisterSet kVolatileRegisterSet(
CallingConventions::kVolatileCpuRegisters,
CallingConventions::kVolatileXmmRegisters);
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index c85db24..b906f6e 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -890,6 +890,8 @@
void PushRegisters(const RegisterSet& registers);
void PopRegisters(const RegisterSet& registers);
+ void PushRegistersInOrder(std::initializer_list<Register> regs);
+
void CheckCodePointer();
void EnterFrame(intptr_t frame_space);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index 7b14f31..c03025e0 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -376,7 +376,7 @@
} else if (parsed_function().suspend_state_var() != nullptr) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
- // InitAsync stub is called.
+ // InitSuspendableFunction stub is called.
const intptr_t slot_index =
compiler::target::frame_layout.FrameSlotForVariable(
parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index 67fed8a..362e199 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -366,7 +366,7 @@
} else if (parsed_function().suspend_state_var() != nullptr) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
- // InitAsync stub is called.
+ // InitSuspendableFunction stub is called.
const intptr_t slot_index =
compiler::target::frame_layout.FrameSlotForVariable(
parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index c23ff8a..257243a 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -453,7 +453,7 @@
} else if (parsed_function().suspend_state_var() != nullptr) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
- // InitAsync stub is called.
+ // InitSuspendableFunction stub is called.
const intptr_t slot_index =
compiler::target::frame_layout.FrameSlotForVariable(
parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
index 2c40fdc..c129e1b 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
@@ -360,7 +360,7 @@
} else if (parsed_function().suspend_state_var() != nullptr) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
- // InitAsync stub is called.
+ // InitSuspendableFunction stub is called.
const intptr_t slot_index =
compiler::target::frame_layout.FrameSlotForVariable(
parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index e6c3b1e..59db090 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -372,7 +372,7 @@
} else if (parsed_function().suspend_state_var() != nullptr) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
- // InitAsync stub is called.
+ // InitSuspendableFunction stub is called.
const intptr_t slot_index =
compiler::target::frame_layout.FrameSlotForVariable(
parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 768d5c4..4a8bc6c 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -6901,16 +6901,25 @@
}
const Code& ReturnInstr::GetReturnStub(FlowGraphCompiler* compiler) const {
- ASSERT(compiler->parsed_function().function().IsCompactAsyncFunction());
- if (!value()->Type()->CanBeFuture()) {
- return Code::ZoneHandle(compiler->zone(),
- compiler->isolate_group()
- ->object_store()
- ->return_async_not_future_stub());
+ const Function& function = compiler->parsed_function().function();
+ ASSERT(function.IsSuspendableFunction());
+ if (function.IsCompactAsyncFunction()) {
+ if (!value()->Type()->CanBeFuture()) {
+ return Code::ZoneHandle(compiler->zone(),
+ compiler->isolate_group()
+ ->object_store()
+ ->return_async_not_future_stub());
+ }
+ return Code::ZoneHandle(
+ compiler->zone(),
+ compiler->isolate_group()->object_store()->return_async_stub());
+ } else if (function.IsCompactAsyncStarFunction()) {
+ return Code::ZoneHandle(
+ compiler->zone(),
+ compiler->isolate_group()->object_store()->return_async_star_stub());
+ } else {
+ UNREACHABLE();
}
- return Code::ZoneHandle(
- compiler->zone(),
- compiler->isolate_group()->object_store()->return_async_stub());
}
void NativeReturnInstr::EmitReturnMoves(FlowGraphCompiler* compiler) {
@@ -7230,10 +7239,12 @@
LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
switch (stub_id_) {
case StubId::kInitAsync:
+ case StubId::kInitAsyncStar:
locs->set_in(0, Location::RegisterLocation(
InitSuspendableFunctionStubABI::kTypeArgsReg));
break;
- case StubId::kAwaitAsync:
+ case StubId::kAwait:
+ case StubId::kYieldAsyncStar:
locs->set_in(0, Location::RegisterLocation(SuspendStubABI::kArgumentReg));
break;
}
@@ -7248,15 +7259,21 @@
case StubId::kInitAsync:
stub = object_store->init_async_stub();
break;
- case StubId::kAwaitAsync:
- stub = object_store->await_async_stub();
+ case StubId::kAwait:
+ stub = object_store->await_stub();
+ break;
+ case StubId::kInitAsyncStar:
+ stub = object_store->init_async_star_stub();
+ break;
+ case StubId::kYieldAsyncStar:
+ stub = object_store->yield_async_star_stub();
break;
}
compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
locs(), deopt_id(), env());
#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_IA32)
- if (stub_id_ == StubId::kAwaitAsync) {
+ if ((stub_id_ == StubId::kAwait) || (stub_id_ == StubId::kYieldAsyncStar)) {
// On x86 (X64 and IA32) mismatch between calls and returns
// significantly regresses performance. So suspend stub
// does not return directly to the caller. Instead, a small
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index d0bbaed..6b6c9019 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -9567,8 +9567,10 @@
class Call1ArgStubInstr : public TemplateDefinition<1, Throws> {
public:
enum class StubId {
+ kAwait,
kInitAsync,
- kAwaitAsync,
+ kInitAsyncStar,
+ kYieldAsyncStar,
};
Call1ArgStubInstr(const InstructionSource& source,
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index cf3345c..493238e 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -484,7 +484,7 @@
ASSERT(result == CallingConventions::kReturnFpuReg);
}
- if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+ if (compiler->parsed_function().function().IsSuspendableFunction()) {
ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
const Code& stub = GetReturnStub(compiler);
compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index a6a35de..4d0bf7c 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -411,7 +411,7 @@
ASSERT(result == CallingConventions::kReturnFpuReg);
}
- if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+ if (compiler->parsed_function().function().IsSuspendableFunction()) {
ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
const Code& stub = GetReturnStub(compiler);
compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index 3a4a935..f2ebdda 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -233,7 +233,7 @@
Register result = locs()->in(0).reg();
ASSERT(result == EAX);
- if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+ if (compiler->parsed_function().function().IsSuspendableFunction()) {
ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
const Code& stub = GetReturnStub(compiler);
compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index a4ed678..76b1c00 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -1362,8 +1362,14 @@
case StubId::kInitAsync:
name = "InitAsync";
break;
- case StubId::kAwaitAsync:
- name = "AwaitAsync";
+ case StubId::kAwait:
+ name = "Await";
+ break;
+ case StubId::kInitAsyncStar:
+ name = "InitAsyncStar";
+ break;
+ case StubId::kYieldAsyncStar:
+ name = "YieldAsyncStar";
break;
}
f->Printf("%s(", name);
diff --git a/runtime/vm/compiler/backend/il_riscv.cc b/runtime/vm/compiler/backend/il_riscv.cc
index d646861..74459f7 100644
--- a/runtime/vm/compiler/backend/il_riscv.cc
+++ b/runtime/vm/compiler/backend/il_riscv.cc
@@ -464,7 +464,7 @@
ASSERT(result == CallingConventions::kReturnFpuReg);
}
- if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+ if (compiler->parsed_function().function().IsSuspendableFunction()) {
ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
const Code& stub = GetReturnStub(compiler);
compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 75475b1..170932f 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -338,7 +338,7 @@
ASSERT(result == CallingConventions::kReturnFpuReg);
}
- if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+ if (compiler->parsed_function().function().IsSuspendableFunction()) {
ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
const Code& stub = GetReturnStub(compiler);
compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 708308f..f2cf0ab 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -2814,7 +2814,7 @@
case Slot::Kind::kFunctionType_parameter_types:
case Slot::Kind::kFunctionType_type_parameters:
case Slot::Kind::kInstance_native_fields_array:
- case Slot::Kind::kSuspendState_future:
+ case Slot::Kind::kSuspendState_function_data:
case Slot::Kind::kSuspendState_then_callback:
case Slot::Kind::kSuspendState_error_callback:
case Slot::Kind::kTypedDataView_typed_data:
diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc
index 77d0153..74e10bc 100644
--- a/runtime/vm/compiler/backend/slot.cc
+++ b/runtime/vm/compiler/backend/slot.cc
@@ -243,7 +243,7 @@
case Slot::Kind::kFunctionType_named_parameter_names:
case Slot::Kind::kFunctionType_parameter_types:
case Slot::Kind::kFunctionType_type_parameters:
- case Slot::Kind::kSuspendState_future:
+ case Slot::Kind::kSuspendState_function_data:
case Slot::Kind::kSuspendState_then_callback:
case Slot::Kind::kSuspendState_error_callback:
case Slot::Kind::kType_arguments:
diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h
index 12609d6..e4efe29 100644
--- a/runtime/vm/compiler/backend/slot.h
+++ b/runtime/vm/compiler/backend/slot.h
@@ -73,7 +73,7 @@
V(ImmutableLinkedHashBase, UntaggedLinkedHashBase, index, \
TypedDataUint32Array, VAR) \
V(Instance, UntaggedInstance, native_fields_array, Dynamic, VAR) \
- V(SuspendState, UntaggedSuspendState, future, Dynamic, VAR) \
+ V(SuspendState, UntaggedSuspendState, function_data, Dynamic, VAR) \
V(SuspendState, UntaggedSuspendState, then_callback, Closure, VAR) \
V(SuspendState, UntaggedSuspendState, error_callback, Closure, VAR) \
V(Type, UntaggedType, arguments, TypeArguments, FINAL) \
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index ab59d68..6bbd861 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -684,6 +684,24 @@
body += B->Call1ArgStub(TokenPosition::kNoSource,
Call1ArgStubInstr::StubId::kInitAsync);
body += Drop();
+ } else if (dart_function.IsCompactAsyncStarFunction()) {
+ const auto& result_type =
+ AbstractType::Handle(Z, dart_function.result_type());
+ auto& type_args = TypeArguments::ZoneHandle(Z);
+ if (result_type.IsType() &&
+ (result_type.type_class() == IG->object_store()->stream_class())) {
+ ASSERT(result_type.IsFinalized());
+ type_args = result_type.arguments();
+ }
+
+ body += TranslateInstantiatedTypeArguments(type_args);
+ body += B->Call1ArgStub(TokenPosition::kNoSource,
+ Call1ArgStubInstr::StubId::kInitAsyncStar);
+ body += Drop();
+ body += NullConstant();
+ body += B->Call1ArgStub(TokenPosition::kNoSource,
+ Call1ArgStubInstr::StubId::kYieldAsyncStar);
+ body += Drop();
}
return body;
}
@@ -4322,7 +4340,8 @@
Fragment StreamingFlowGraphBuilder::BuildAwaitExpression(
TokenPosition* position) {
- ASSERT(parsed_function()->function().IsCompactAsyncFunction());
+ ASSERT(parsed_function()->function().IsCompactAsyncFunction() ||
+ parsed_function()->function().IsCompactAsyncStarFunction());
Fragment instructions;
const TokenPosition pos = ReadPosition(); // read file offset.
@@ -4330,7 +4349,7 @@
instructions += BuildExpression(); // read operand.
- instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwaitAsync);
+ instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwait);
return instructions;
}
@@ -5228,8 +5247,83 @@
const TokenPosition pos = ReadPosition(); // read position.
if (position != nullptr) *position = pos;
- uint8_t flags = ReadByte(); // read flags.
- ASSERT(flags == kNativeYieldFlags); // Must have been desugared.
+ const uint8_t flags = ReadByte(); // read flags.
+
+ if ((flags & kYieldStatementFlagNative) == 0) {
+ Fragment instructions;
+ // Generate the following code for yield <expr>:
+ //
+ // _AsyncStarStreamController controller = :suspend_state._functionData;
+ // if (controller.add(<expr>)) {
+ // return;
+ // }
+ // suspend();
+ //
+ // Generate the following code for yield* <expr>:
+ //
+ // _AsyncStarStreamController controller = :suspend_state._functionData;
+ // controller.addStream(<expr>);
+ // if (suspend()) {
+ // return;
+ // }
+ //
+
+ // Load :suspend_state variable using low-level FP-relative load
+ // in order to avoid confusing SSA construction (which cannot
+ // track its value as it is modified implicitly by stubs).
+ LocalVariable* suspend_state = parsed_function()->suspend_state_var();
+ ASSERT(suspend_state != nullptr);
+ instructions += IntConstant(0);
+ instructions += B->LoadFpRelativeSlot(
+ compiler::target::frame_layout.FrameSlotForVariable(suspend_state) *
+ compiler::target::kWordSize,
+ CompileType::Dynamic(), kTagged);
+ instructions += LoadNativeField(Slot::SuspendState_function_data());
+
+ instructions += BuildExpression(); // read expression.
+
+ auto& add_method = Function::ZoneHandle(Z);
+ const bool is_yield_star = (flags & kYieldStatementFlagYieldStar) != 0;
+ if (is_yield_star) {
+ add_method =
+ IG->object_store()->async_star_stream_controller_add_stream();
+ } else {
+ add_method = IG->object_store()->async_star_stream_controller_add();
+ }
+ instructions += StaticCall(pos, add_method, 2, ICData::kNoRebind);
+
+ if (is_yield_star) {
+ // Discard result of _AsyncStarStreamController.addStream().
+ instructions += Drop();
+ // Suspend and test value passed to the resumed async* body.
+ instructions += NullConstant();
+ instructions +=
+ B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+ } else {
+ // Test value returned by _AsyncStarStreamController.add().
+ }
+
+ TargetEntryInstr* exit;
+ TargetEntryInstr* continue_execution;
+ instructions += BranchIfTrue(&exit, &continue_execution, false);
+
+ Fragment do_exit(exit);
+ do_exit += TranslateFinallyFinalizers(nullptr, -1);
+ do_exit += NullConstant();
+ do_exit += Return(TokenPosition::kNoSource);
+
+ instructions = Fragment(instructions.entry, continue_execution);
+ if (!is_yield_star) {
+ instructions += NullConstant();
+ instructions +=
+ B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+ instructions += Drop();
+ }
+
+ return instructions;
+ }
+
+ ASSERT(flags == kYieldStatementFlagNative); // Must have been desugared.
// Setup yield/continue point:
//
@@ -5476,6 +5570,16 @@
function.set_is_inlinable(false);
function.set_is_visible(true);
ASSERT(function.IsCompactAsyncFunction());
+ } else if (function_node_helper.async_marker_ ==
+ FunctionNodeHelper::kAsyncStar) {
+ if (!FLAG_precompiled_mode) {
+ FATAL("Compact async* functions are only supported in AOT mode.");
+ }
+ function.set_modifier(UntaggedFunction::kAsyncGen);
+ function.set_is_debuggable(true);
+ function.set_is_inlinable(false);
+ function.set_is_visible(true);
+ ASSERT(function.IsCompactAsyncStarFunction());
} else {
ASSERT((function_node_helper.async_marker_ ==
FunctionNodeHelper::kSync) ||
@@ -5514,6 +5618,7 @@
function.set_is_inlinable(!FLAG_lazy_async_stacks);
}
ASSERT(!function.IsCompactAsyncFunction());
+ ASSERT(!function.IsCompactAsyncStarFunction());
}
// If the start token position is synthetic, the end token position
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 6f0e43c..86576be 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -834,7 +834,7 @@
V(LinkedHashBase_getIndex, LinkedHashBase_index) \
V(LinkedHashBase_getUsedData, LinkedHashBase_used_data) \
V(ObjectArrayLength, Array_length) \
- V(SuspendState_getFuture, SuspendState_future) \
+ V(SuspendState_getFunctionData, SuspendState_function_data) \
V(SuspendState_getThenCallback, SuspendState_then_callback) \
V(SuspendState_getErrorCallback, SuspendState_error_callback) \
V(TypedDataViewOffsetInBytes, TypedDataView_offset_in_bytes) \
@@ -852,7 +852,7 @@
V(NativeFinalizer_setCallback, NativeFinalizer_callback) \
V(LinkedHashBase_setData, LinkedHashBase_data) \
V(LinkedHashBase_setIndex, LinkedHashBase_index) \
- V(SuspendState_setFuture, SuspendState_future) \
+ V(SuspendState_setFunctionData, SuspendState_function_data) \
V(SuspendState_setThenCallback, SuspendState_then_callback) \
V(SuspendState_setErrorCallback, SuspendState_error_callback) \
V(WeakProperty_setKey, WeakProperty_key) \
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index c20ee54..6363a5e 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -89,7 +89,7 @@
scope_->set_begin_token_pos(function.token_pos());
scope_->set_end_token_pos(function.end_token_pos());
- if (function.IsCompactAsyncFunction()) {
+ if (function.IsSuspendableFunction()) {
LocalVariable* suspend_state_var =
MakeVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
Symbols::SuspendStateVar(), AbstractType::dynamic_type());
@@ -1276,15 +1276,16 @@
word flags = helper_.ReadByte(); // read flags.
VisitExpression(); // read expression.
- ASSERT(flags == kNativeYieldFlags);
- if (depth_.function_ == 0) {
- AddSwitchVariable();
- // Promote all currently visible local variables into the context.
- // TODO(27590) CaptureLocalVariables promotes to many variables into
- // the scope. Mark those variables as stack_local.
- // TODO(27590) we don't need to promote those variables that are
- // not used across yields.
- scope_->CaptureLocalVariables(current_function_scope_);
+ if ((flags & kYieldStatementFlagNative) != 0) {
+ if (depth_.function_ == 0) {
+ AddSwitchVariable();
+ // Promote all currently visible local variables into the context.
+ // TODO(27590) CaptureLocalVariables promotes to many variables into
+ // the scope. Mark those variables as stack_local.
+ // TODO(27590) we don't need to promote those variables that are
+ // not used across yields.
+ scope_->CaptureLocalVariables(current_function_scope_);
+ }
}
return;
}
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index f1ce6f5..e887d24 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -83,8 +83,10 @@
V(::, copyRangeFromUint8ListToOneByteString, \
CopyRangeFromUint8ListToOneByteString, 0x19a1bf41) \
V(_StringBase, _interpolate, StringBaseInterpolate, 0x7da2a580) \
- V(_SuspendState, get:_future, SuspendState_getFuture, 0x0e2a7e73) \
- V(_SuspendState, set:_future, SuspendState_setFuture, 0x179923b0) \
+ V(_SuspendState, get:_functionData, SuspendState_getFunctionData, \
+ 0x7290026e) \
+ V(_SuspendState, set:_functionData, SuspendState_setFunctionData, \
+ 0x2b6668ab) \
V(_SuspendState, get:_thenCallback, SuspendState_getThenCallback, \
0xff1dccec) \
V(_SuspendState, set:_thenCallback, SuspendState_setThenCallback, \
@@ -95,7 +97,9 @@
0x4935f88c) \
V(_SuspendState, _createAsyncCallbacks, SuspendState_createAsyncCallbacks, \
0x4add6c13) \
- V(_SuspendState, _resume, SuspendState_resume, 0x93d8c5e8) \
+ V(_SuspendState, _createAsyncStarCallback, \
+ SuspendState_createAsyncStarCallback, 0xfa7537e4) \
+ V(_SuspendState, _resume, SuspendState_resume, 0xc738e9d2) \
V(_IntegerImplementation, toDouble, IntegerToDouble, 0x97728b46) \
V(_Double, _add, DoubleAdd, 0xea666327) \
V(_Double, _sub, DoubleSub, 0x28474c2e) \
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 267337f..31c7822 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -992,7 +992,7 @@
public:
static word frame_size_offset();
static word pc_offset();
- static word future_offset();
+ static word function_data_offset();
static word then_callback_offset();
static word error_callback_offset();
static word payload_offset();
@@ -1239,9 +1239,14 @@
static word random_offset();
static word suspend_state_init_async_entry_point_offset();
- static word suspend_state_await_async_entry_point_offset();
+ static word suspend_state_await_entry_point_offset();
static word suspend_state_return_async_entry_point_offset();
static word suspend_state_return_async_not_future_entry_point_offset();
+
+ static word suspend_state_init_async_star_entry_point_offset();
+ static word suspend_state_yield_async_star_entry_point_offset();
+ static word suspend_state_return_async_star_entry_point_offset();
+
static word suspend_state_handle_exception_entry_point_offset();
static word OffsetFromThread(const dart::Object& object);
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 738ed65..2fc188c 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -248,7 +248,8 @@
SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
static constexpr dart::compiler::target::word
@@ -256,9 +257,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 780;
+ 792;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 784;
+ 796;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -281,7 +282,7 @@
Thread_allocate_object_slow_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 820;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -292,13 +293,13 @@
Thread_call_to_runtime_entry_point_offset = 276;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 824;
+ Thread_double_truncate_round_supported_offset = 836;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 852;
+ Thread_service_extension_stream_offset = 860;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -314,7 +315,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 800;
+ 812;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -336,13 +337,13 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 788;
+ 800;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 816;
+ 828;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
@@ -384,11 +385,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 796;
+ Thread_saved_shadow_call_stack_offset = 808;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 804;
+ 816;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -409,7 +410,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 764;
+ Thread_suspend_state_await_entry_point_offset = 764;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 760;
static constexpr dart::compiler::target::word
@@ -417,7 +418,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 776;
+ Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 788;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -432,13 +439,13 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 808;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word Thread_random_offset = 832;
+ Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word Thread_random_offset = 840;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -863,7 +870,8 @@
SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -871,9 +879,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1560;
+ 1584;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1568;
+ 1592;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -897,7 +905,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -908,13 +916,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1648;
+ Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1688;
+ Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -930,7 +938,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1600;
+ 1624;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -952,14 +960,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1576;
+ 1600;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -1001,11 +1009,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1592;
+ Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1608;
+ 1632;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -1026,7 +1034,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -1034,7 +1042,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -1050,13 +1064,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+ Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -1481,7 +1495,8 @@
SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
static constexpr dart::compiler::target::word
@@ -1489,9 +1504,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 748;
+ 760;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 752;
+ 764;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -1514,7 +1529,7 @@
Thread_allocate_object_slow_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -1525,13 +1540,13 @@
Thread_call_to_runtime_entry_point_offset = 276;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 816;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 792;
+ Thread_double_truncate_round_supported_offset = 804;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 820;
+ Thread_service_extension_stream_offset = 828;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -1547,7 +1562,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 768;
+ 780;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -1569,13 +1584,13 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 756;
+ 768;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 784;
+ 796;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 824;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
@@ -1617,11 +1632,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 764;
+ Thread_saved_shadow_call_stack_offset = 776;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 772;
+ 784;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -1642,7 +1657,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 732;
+ Thread_suspend_state_await_entry_point_offset = 732;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 728;
static constexpr dart::compiler::target::word
@@ -1650,7 +1665,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 744;
+ Thread_suspend_state_init_async_star_entry_point_offset = 744;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 752;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 756;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -1665,13 +1686,13 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 780;
-static constexpr dart::compiler::target::word Thread_random_offset = 800;
+ Thread_callback_stack_return_offset = 792;
+static constexpr dart::compiler::target::word Thread_random_offset = 808;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 808;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2093,7 +2114,8 @@
SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -2101,9 +2123,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1624;
+ 1648;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -2127,7 +2149,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2138,13 +2160,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1712;
+ Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1752;
+ Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -2160,7 +2182,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -2182,14 +2204,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -2231,11 +2253,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1656;
+ Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -2256,7 +2278,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -2264,7 +2286,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2280,13 +2308,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+ Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2713,7 +2741,8 @@
SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -2721,9 +2750,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1560;
+ 1584;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1568;
+ 1592;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -2747,7 +2776,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2758,13 +2787,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1648;
+ Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1688;
+ Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -2780,7 +2809,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1600;
+ 1624;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -2802,14 +2831,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1576;
+ 1600;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -2851,11 +2880,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1592;
+ Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1608;
+ 1632;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -2876,7 +2905,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -2884,7 +2913,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2900,13 +2935,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+ Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3332,7 +3367,8 @@
SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -3340,9 +3376,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1624;
+ 1648;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -3366,7 +3402,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -3377,13 +3413,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1712;
+ Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1752;
+ Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -3399,7 +3435,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -3421,14 +3457,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -3470,11 +3506,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1656;
+ Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -3495,7 +3531,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -3503,7 +3539,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -3519,13 +3561,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+ Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3951,7 +3993,8 @@
SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
static constexpr dart::compiler::target::word
@@ -3959,9 +4002,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 820;
+ 832;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 824;
+ 836;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -3984,7 +4027,7 @@
Thread_allocate_object_slow_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 860;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -3995,13 +4038,13 @@
Thread_call_to_runtime_entry_point_offset = 276;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 888;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 864;
+ Thread_double_truncate_round_supported_offset = 876;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 892;
+ Thread_service_extension_stream_offset = 900;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -4017,7 +4060,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 840;
+ 852;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -4039,13 +4082,13 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 828;
+ 840;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 856;
+ 868;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 896;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
@@ -4087,11 +4130,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 836;
+ Thread_saved_shadow_call_stack_offset = 848;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 844;
+ 856;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -4112,7 +4155,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 804;
+ Thread_suspend_state_await_entry_point_offset = 804;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 800;
static constexpr dart::compiler::target::word
@@ -4120,7 +4163,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 816;
+ Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 828;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -4135,13 +4184,13 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 848;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word Thread_random_offset = 872;
+ Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 880;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4568,7 +4617,8 @@
SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -4576,9 +4626,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1624;
+ 1648;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -4602,7 +4652,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -4613,13 +4663,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1736;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1704;
+ Thread_double_truncate_round_supported_offset = 1728;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1744;
+ Thread_service_extension_stream_offset = 1768;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -4635,7 +4685,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1656;
+ 1680;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -4657,14 +4707,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1688;
+ 1712;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1752;
+ 1776;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -4706,11 +4756,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1640;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1648;
+ Thread_saved_shadow_call_stack_offset = 1672;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -4731,7 +4781,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1584;
+ Thread_suspend_state_await_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
@@ -4739,7 +4789,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -4755,13 +4811,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word Thread_random_offset = 1712;
+ Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word Thread_random_offset = 1736;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1720;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5183,7 +5239,8 @@
SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
static constexpr dart::compiler::target::word
@@ -5191,9 +5248,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 780;
+ 792;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 784;
+ 796;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -5216,7 +5273,7 @@
Thread_allocate_object_slow_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 820;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -5227,13 +5284,13 @@
Thread_call_to_runtime_entry_point_offset = 276;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 824;
+ Thread_double_truncate_round_supported_offset = 836;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 852;
+ Thread_service_extension_stream_offset = 860;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -5249,7 +5306,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 800;
+ 812;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -5271,13 +5328,13 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 788;
+ 800;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 816;
+ 828;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
@@ -5319,11 +5376,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 796;
+ Thread_saved_shadow_call_stack_offset = 808;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 804;
+ 816;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -5344,7 +5401,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 764;
+ Thread_suspend_state_await_entry_point_offset = 764;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 760;
static constexpr dart::compiler::target::word
@@ -5352,7 +5409,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 776;
+ Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 788;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -5367,13 +5430,13 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 808;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word Thread_random_offset = 832;
+ Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word Thread_random_offset = 840;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5792,7 +5855,8 @@
SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -5800,9 +5864,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1560;
+ 1584;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1568;
+ 1592;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -5826,7 +5890,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5837,13 +5901,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1648;
+ Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1688;
+ Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -5859,7 +5923,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1600;
+ 1624;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -5881,14 +5945,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1576;
+ 1600;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -5930,11 +5994,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1592;
+ Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1608;
+ 1632;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -5955,7 +6019,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -5963,7 +6027,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -5979,13 +6049,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+ Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -6404,7 +6474,8 @@
SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
static constexpr dart::compiler::target::word
@@ -6412,9 +6483,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 748;
+ 760;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 752;
+ 764;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -6437,7 +6508,7 @@
Thread_allocate_object_slow_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -6448,13 +6519,13 @@
Thread_call_to_runtime_entry_point_offset = 276;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 816;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 792;
+ Thread_double_truncate_round_supported_offset = 804;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 820;
+ Thread_service_extension_stream_offset = 828;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -6470,7 +6541,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 768;
+ 780;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -6492,13 +6563,13 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 756;
+ 768;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 784;
+ 796;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 824;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
@@ -6540,11 +6611,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 764;
+ Thread_saved_shadow_call_stack_offset = 776;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 772;
+ 784;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -6565,7 +6636,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 732;
+ Thread_suspend_state_await_entry_point_offset = 732;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 728;
static constexpr dart::compiler::target::word
@@ -6573,7 +6644,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 744;
+ Thread_suspend_state_init_async_star_entry_point_offset = 744;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 752;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 756;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -6588,13 +6665,13 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 780;
-static constexpr dart::compiler::target::word Thread_random_offset = 800;
+ Thread_callback_stack_return_offset = 792;
+static constexpr dart::compiler::target::word Thread_random_offset = 808;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 808;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7010,7 +7087,8 @@
SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -7018,9 +7096,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1624;
+ 1648;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -7044,7 +7122,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -7055,13 +7133,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1712;
+ Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1752;
+ Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -7077,7 +7155,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -7099,14 +7177,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -7148,11 +7226,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1656;
+ Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -7173,7 +7251,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -7181,7 +7259,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7197,13 +7281,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+ Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7624,7 +7708,8 @@
SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -7632,9 +7717,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1560;
+ 1584;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1568;
+ 1592;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -7658,7 +7743,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -7669,13 +7754,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1648;
+ Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1688;
+ Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -7691,7 +7776,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1600;
+ 1624;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -7713,14 +7798,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1576;
+ 1600;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -7762,11 +7847,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1592;
+ Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1608;
+ 1632;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -7787,7 +7872,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -7795,7 +7880,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7811,13 +7902,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+ Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8237,7 +8328,8 @@
SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -8245,9 +8337,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1624;
+ 1648;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -8271,7 +8363,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -8282,13 +8374,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1712;
+ Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1752;
+ Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -8304,7 +8396,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -8326,14 +8418,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -8375,11 +8467,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1656;
+ Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -8400,7 +8492,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -8408,7 +8500,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -8424,13 +8522,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+ Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8850,7 +8948,8 @@
SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
static constexpr dart::compiler::target::word
@@ -8858,9 +8957,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 820;
+ 832;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 824;
+ 836;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -8883,7 +8982,7 @@
Thread_allocate_object_slow_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 860;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -8894,13 +8993,13 @@
Thread_call_to_runtime_entry_point_offset = 276;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 888;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 864;
+ Thread_double_truncate_round_supported_offset = 876;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 892;
+ Thread_service_extension_stream_offset = 900;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -8916,7 +9015,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 840;
+ 852;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -8938,13 +9037,13 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 828;
+ 840;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 856;
+ 868;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 896;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
@@ -8986,11 +9085,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 836;
+ Thread_saved_shadow_call_stack_offset = 848;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 844;
+ 856;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -9011,7 +9110,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 804;
+ Thread_suspend_state_await_entry_point_offset = 804;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 800;
static constexpr dart::compiler::target::word
@@ -9019,7 +9118,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 816;
+ Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 828;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -9034,13 +9139,13 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 848;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word Thread_random_offset = 872;
+ Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 880;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -9461,7 +9566,8 @@
SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+ SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
static constexpr dart::compiler::target::word
@@ -9469,9 +9575,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1624;
+ 1648;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -9495,7 +9601,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -9506,13 +9612,13 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1736;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1704;
+ Thread_double_truncate_round_supported_offset = 1728;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1744;
+ Thread_service_extension_stream_offset = 1768;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -9528,7 +9634,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1656;
+ 1680;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -9550,14 +9656,14 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1632;
+ 1656;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1688;
+ 1712;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1752;
+ 1776;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
@@ -9599,11 +9705,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1640;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1648;
+ Thread_saved_shadow_call_stack_offset = 1672;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -9624,7 +9730,7 @@
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_async_entry_point_offset = 1584;
+ Thread_suspend_state_await_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
Thread_suspend_state_init_async_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
@@ -9632,7 +9738,13 @@
static constexpr dart::compiler::target::word
Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ Thread_suspend_state_handle_exception_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -9648,13 +9760,13 @@
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word Thread_random_offset = 1712;
+ Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word Thread_random_offset = 1736;
static constexpr dart::compiler::target::word
Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1720;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -10112,8 +10224,8 @@
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 12;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
24;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -10122,9 +10234,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 780;
+ AOT_Thread_active_exception_offset = 792;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 784;
+ AOT_Thread_active_stacktrace_offset = 796;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -10148,7 +10260,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 820;
+ 832;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10161,13 +10273,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 848;
+ 856;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 824;
+ AOT_Thread_double_truncate_round_supported_offset = 836;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 852;
+ AOT_Thread_service_extension_stream_offset = 860;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10184,7 +10296,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 800;
+ AOT_Thread_execution_state_offset = 812;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -10206,14 +10318,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 788;
+ AOT_Thread_global_object_pool_offset = 800;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 816;
+ AOT_Thread_exit_through_ffi_offset = 828;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 856;
+ 864;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
@@ -10257,11 +10369,11 @@
112;
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 796;
+ AOT_Thread_saved_shadow_call_stack_offset = 808;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 804;
+ AOT_Thread_safepoint_state_offset = 816;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -10283,7 +10395,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 764;
+ AOT_Thread_suspend_state_await_entry_point_offset = 764;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
static constexpr dart::compiler::target::word
@@ -10291,7 +10403,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 776;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -10308,14 +10426,14 @@
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 808;
+ 820;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 832;
+ AOT_Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 328;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 840;
+ 848;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -10803,8 +10921,8 @@
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
48;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -10813,9 +10931,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1560;
+ AOT_Thread_active_exception_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1568;
+ AOT_Thread_active_stacktrace_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -10839,7 +10957,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10852,13 +10970,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1648;
+ AOT_Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1688;
+ AOT_Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10875,7 +10993,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1600;
+ AOT_Thread_execution_state_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -10897,14 +11015,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1576;
+ AOT_Thread_global_object_pool_offset = 1600;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1632;
+ AOT_Thread_exit_through_ffi_offset = 1656;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -10949,11 +11067,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1584;
+ 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1592;
+ AOT_Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1608;
+ AOT_Thread_safepoint_state_offset = 1632;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -10975,7 +11093,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -10983,7 +11101,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11000,14 +11124,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+ AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -11500,8 +11624,8 @@
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
48;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -11510,9 +11634,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1624;
+ AOT_Thread_active_exception_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1632;
+ AOT_Thread_active_stacktrace_offset = 1656;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -11536,7 +11660,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11549,13 +11673,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1744;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1712;
+ AOT_Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1752;
+ AOT_Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -11572,7 +11696,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1664;
+ AOT_Thread_execution_state_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -11594,14 +11718,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1640;
+ AOT_Thread_global_object_pool_offset = 1664;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1696;
+ AOT_Thread_exit_through_ffi_offset = 1720;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -11646,11 +11770,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1648;
+ 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1656;
+ AOT_Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1672;
+ AOT_Thread_safepoint_state_offset = 1696;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -11672,7 +11796,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -11680,7 +11804,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11697,14 +11827,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+ AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1728;
+ 1752;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -12194,8 +12324,8 @@
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
40;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -12204,9 +12334,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1560;
+ AOT_Thread_active_exception_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1568;
+ AOT_Thread_active_stacktrace_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -12230,7 +12360,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12243,13 +12373,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1648;
+ AOT_Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1688;
+ AOT_Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12266,7 +12396,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1600;
+ AOT_Thread_execution_state_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -12288,14 +12418,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1576;
+ AOT_Thread_global_object_pool_offset = 1600;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1632;
+ AOT_Thread_exit_through_ffi_offset = 1656;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -12340,11 +12470,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1584;
+ 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1592;
+ AOT_Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1608;
+ AOT_Thread_safepoint_state_offset = 1632;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -12366,7 +12496,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -12374,7 +12504,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -12391,14 +12527,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+ AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -12887,8 +13023,8 @@
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
40;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -12897,9 +13033,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1624;
+ AOT_Thread_active_exception_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1632;
+ AOT_Thread_active_stacktrace_offset = 1656;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -12923,7 +13059,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12936,13 +13072,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1744;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1712;
+ AOT_Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1752;
+ AOT_Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12959,7 +13095,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1664;
+ AOT_Thread_execution_state_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -12981,14 +13117,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1640;
+ AOT_Thread_global_object_pool_offset = 1664;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1696;
+ AOT_Thread_exit_through_ffi_offset = 1720;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -13033,11 +13169,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1648;
+ 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1656;
+ AOT_Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1672;
+ AOT_Thread_safepoint_state_offset = 1696;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -13059,7 +13195,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -13067,7 +13203,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -13084,14 +13226,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+ AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1728;
+ 1752;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -13581,8 +13723,8 @@
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 12;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
24;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -13591,9 +13733,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 820;
+ AOT_Thread_active_exception_offset = 832;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 824;
+ AOT_Thread_active_stacktrace_offset = 836;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -13617,7 +13759,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 860;
+ 872;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -13630,13 +13772,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 888;
+ 896;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 864;
+ AOT_Thread_double_truncate_round_supported_offset = 876;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 892;
+ AOT_Thread_service_extension_stream_offset = 900;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -13653,7 +13795,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 840;
+ AOT_Thread_execution_state_offset = 852;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -13675,14 +13817,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 828;
+ AOT_Thread_global_object_pool_offset = 840;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 856;
+ AOT_Thread_exit_through_ffi_offset = 868;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 896;
+ 904;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
@@ -13726,11 +13868,11 @@
112;
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 836;
+ AOT_Thread_saved_shadow_call_stack_offset = 848;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 844;
+ AOT_Thread_safepoint_state_offset = 856;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -13752,7 +13894,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 804;
+ AOT_Thread_suspend_state_await_entry_point_offset = 804;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
static constexpr dart::compiler::target::word
@@ -13760,7 +13902,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 816;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -13777,14 +13925,14 @@
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 848;
+ 860;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 872;
+ AOT_Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 328;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 880;
+ 888;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -14274,8 +14422,8 @@
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
48;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -14284,9 +14432,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1616;
+ AOT_Thread_active_exception_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1624;
+ AOT_Thread_active_stacktrace_offset = 1648;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -14310,7 +14458,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -14323,13 +14471,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1736;
+ 1760;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1704;
+ AOT_Thread_double_truncate_round_supported_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1744;
+ AOT_Thread_service_extension_stream_offset = 1768;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -14346,7 +14494,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1656;
+ AOT_Thread_execution_state_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -14368,14 +14516,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1632;
+ AOT_Thread_global_object_pool_offset = 1656;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1688;
+ AOT_Thread_exit_through_ffi_offset = 1712;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1752;
+ 1776;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -14420,11 +14568,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1648;
+ AOT_Thread_saved_shadow_call_stack_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1664;
+ AOT_Thread_safepoint_state_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -14446,7 +14594,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
@@ -14454,7 +14602,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -14471,14 +14625,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1712;
+ AOT_Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1720;
+ 1744;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -14963,8 +15117,8 @@
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 12;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
24;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -14973,9 +15127,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 780;
+ AOT_Thread_active_exception_offset = 792;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 784;
+ AOT_Thread_active_stacktrace_offset = 796;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -14999,7 +15153,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 820;
+ 832;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -15012,13 +15166,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 848;
+ 856;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 824;
+ AOT_Thread_double_truncate_round_supported_offset = 836;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 852;
+ AOT_Thread_service_extension_stream_offset = 860;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15035,7 +15189,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 800;
+ AOT_Thread_execution_state_offset = 812;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -15057,14 +15211,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 788;
+ AOT_Thread_global_object_pool_offset = 800;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 816;
+ AOT_Thread_exit_through_ffi_offset = 828;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 856;
+ 864;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
@@ -15108,11 +15262,11 @@
112;
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 796;
+ AOT_Thread_saved_shadow_call_stack_offset = 808;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 804;
+ AOT_Thread_safepoint_state_offset = 816;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -15134,7 +15288,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 764;
+ AOT_Thread_suspend_state_await_entry_point_offset = 764;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
static constexpr dart::compiler::target::word
@@ -15142,7 +15296,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 776;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -15159,14 +15319,14 @@
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 808;
+ 820;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 832;
+ AOT_Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 328;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 840;
+ 848;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -15647,8 +15807,8 @@
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
48;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -15657,9 +15817,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1560;
+ AOT_Thread_active_exception_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1568;
+ AOT_Thread_active_stacktrace_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -15683,7 +15843,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -15696,13 +15856,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1648;
+ AOT_Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1688;
+ AOT_Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15719,7 +15879,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1600;
+ AOT_Thread_execution_state_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -15741,14 +15901,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1576;
+ AOT_Thread_global_object_pool_offset = 1600;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1632;
+ AOT_Thread_exit_through_ffi_offset = 1656;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -15793,11 +15953,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1584;
+ 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1592;
+ AOT_Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1608;
+ AOT_Thread_safepoint_state_offset = 1632;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -15819,7 +15979,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -15827,7 +15987,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -15844,14 +16010,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+ AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -16337,8 +16503,8 @@
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
48;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -16347,9 +16513,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1624;
+ AOT_Thread_active_exception_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1632;
+ AOT_Thread_active_stacktrace_offset = 1656;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -16373,7 +16539,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -16386,13 +16552,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1744;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1712;
+ AOT_Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1752;
+ AOT_Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -16409,7 +16575,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1664;
+ AOT_Thread_execution_state_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -16431,14 +16597,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1640;
+ AOT_Thread_global_object_pool_offset = 1664;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1696;
+ AOT_Thread_exit_through_ffi_offset = 1720;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -16483,11 +16649,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1648;
+ 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1656;
+ AOT_Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1672;
+ AOT_Thread_safepoint_state_offset = 1696;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -16509,7 +16675,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -16517,7 +16683,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -16534,14 +16706,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+ AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1728;
+ 1752;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -17024,8 +17196,8 @@
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
40;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -17034,9 +17206,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1560;
+ AOT_Thread_active_exception_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1568;
+ AOT_Thread_active_stacktrace_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -17060,7 +17232,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -17073,13 +17245,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1648;
+ AOT_Thread_double_truncate_round_supported_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1688;
+ AOT_Thread_service_extension_stream_offset = 1712;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17096,7 +17268,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1600;
+ AOT_Thread_execution_state_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -17118,14 +17290,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1576;
+ AOT_Thread_global_object_pool_offset = 1600;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1632;
+ AOT_Thread_exit_through_ffi_offset = 1656;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -17170,11 +17342,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1584;
+ 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1592;
+ AOT_Thread_saved_shadow_call_stack_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1608;
+ AOT_Thread_safepoint_state_offset = 1632;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -17196,7 +17368,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1528;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
static constexpr dart::compiler::target::word
@@ -17204,7 +17376,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17221,14 +17399,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1616;
+ 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+ AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1664;
+ 1688;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -17710,8 +17888,8 @@
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
40;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -17720,9 +17898,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1624;
+ AOT_Thread_active_exception_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1632;
+ AOT_Thread_active_stacktrace_offset = 1656;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -17746,7 +17924,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1704;
+ 1728;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -17759,13 +17937,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1744;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1712;
+ AOT_Thread_double_truncate_round_supported_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1752;
+ AOT_Thread_service_extension_stream_offset = 1776;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17782,7 +17960,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1664;
+ AOT_Thread_execution_state_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -17804,14 +17982,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1640;
+ AOT_Thread_global_object_pool_offset = 1664;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1696;
+ AOT_Thread_exit_through_ffi_offset = 1720;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1760;
+ 1784;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -17856,11 +18034,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1648;
+ 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1656;
+ AOT_Thread_saved_shadow_call_stack_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1672;
+ AOT_Thread_safepoint_state_offset = 1696;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -17882,7 +18060,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
@@ -17890,7 +18068,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17907,14 +18091,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1680;
+ 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+ AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1728;
+ 1752;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -18397,8 +18581,8 @@
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 12;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 12;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
24;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -18407,9 +18591,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 820;
+ AOT_Thread_active_exception_offset = 832;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 824;
+ AOT_Thread_active_stacktrace_offset = 836;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 272;
static constexpr dart::compiler::target::word
@@ -18433,7 +18617,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 860;
+ 872;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -18446,13 +18630,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 888;
+ 896;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 864;
+ AOT_Thread_double_truncate_round_supported_offset = 876;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 892;
+ AOT_Thread_service_extension_stream_offset = 900;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
316;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -18469,7 +18653,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 840;
+ AOT_Thread_execution_state_offset = 852;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 256;
static constexpr dart::compiler::target::word
@@ -18491,14 +18675,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 376;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 828;
+ AOT_Thread_global_object_pool_offset = 840;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 856;
+ AOT_Thread_exit_through_ffi_offset = 868;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 896;
+ 904;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
@@ -18542,11 +18726,11 @@
112;
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 836;
+ AOT_Thread_saved_shadow_call_stack_offset = 848;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 844;
+ AOT_Thread_safepoint_state_offset = 856;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 244;
static constexpr dart::compiler::target::word
@@ -18568,7 +18752,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 804;
+ AOT_Thread_suspend_state_await_entry_point_offset = 804;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
static constexpr dart::compiler::target::word
@@ -18576,7 +18760,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 816;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -18593,14 +18783,14 @@
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 848;
+ 860;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 872;
+ AOT_Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 328;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 880;
+ 888;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -19083,8 +19273,8 @@
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
- 24;
+static constexpr dart::compiler::target::word
+ AOT_SuspendState_function_data_offset = 24;
static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
48;
static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -19093,9 +19283,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1616;
+ AOT_Thread_active_exception_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1624;
+ AOT_Thread_active_stacktrace_offset = 1648;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_entry_point_offset = 520;
static constexpr dart::compiler::target::word
@@ -19119,7 +19309,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1696;
+ 1720;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -19132,13 +19322,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1736;
+ 1760;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1704;
+ AOT_Thread_double_truncate_round_supported_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1744;
+ AOT_Thread_service_extension_stream_offset = 1768;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
608;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -19155,7 +19345,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1656;
+ AOT_Thread_execution_state_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
@@ -19177,14 +19367,14 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1632;
+ AOT_Thread_global_object_pool_offset = 1656;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1688;
+ AOT_Thread_exit_through_ffi_offset = 1712;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1752;
+ 1776;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
@@ -19229,11 +19419,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 672;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1640;
+ 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1648;
+ AOT_Thread_saved_shadow_call_stack_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1664;
+ AOT_Thread_safepoint_state_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 464;
static constexpr dart::compiler::target::word
@@ -19255,7 +19445,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_async_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
@@ -19263,7 +19453,13 @@
static constexpr dart::compiler::target::word
AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -19280,14 +19476,14 @@
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1672;
+ 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1712;
+ AOT_Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
static constexpr dart::compiler::target::word
AOT_Thread_jump_to_frame_entry_point_offset = 632;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 1720;
+ 1744;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index 8fa14a3..04aa47b 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -192,7 +192,7 @@
FIELD(SubtypeTestCache, cache_offset) \
FIELD(SuspendState, error_callback_offset) \
FIELD(SuspendState, frame_size_offset) \
- FIELD(SuspendState, future_offset) \
+ FIELD(SuspendState, function_data_offset) \
FIELD(SuspendState, payload_offset) \
FIELD(SuspendState, pc_offset) \
FIELD(SuspendState, then_callback_offset) \
@@ -281,10 +281,13 @@
\
FIELD(Thread, stack_overflow_shared_without_fpu_regs_stub_offset) \
FIELD(Thread, store_buffer_block_offset) \
- FIELD(Thread, suspend_state_await_async_entry_point_offset) \
+ FIELD(Thread, suspend_state_await_entry_point_offset) \
FIELD(Thread, suspend_state_init_async_entry_point_offset) \
FIELD(Thread, suspend_state_return_async_entry_point_offset) \
FIELD(Thread, suspend_state_return_async_not_future_entry_point_offset) \
+ FIELD(Thread, suspend_state_init_async_star_entry_point_offset) \
+ FIELD(Thread, suspend_state_yield_async_star_entry_point_offset) \
+ FIELD(Thread, suspend_state_return_async_star_entry_point_offset) \
FIELD(Thread, suspend_state_handle_exception_entry_point_offset) \
FIELD(Thread, top_exit_frame_info_offset) \
FIELD(Thread, top_offset) \
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index 1049101..fd5b486 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -112,8 +112,8 @@
void StubCodeCompiler::GenerateInitInstanceFieldStub(Assembler* assembler) {
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for result.
- __ PushRegister(InitInstanceFieldABI::kInstanceReg);
- __ PushRegister(InitInstanceFieldABI::kFieldReg);
+ __ PushRegistersInOrder(
+ {InitInstanceFieldABI::kInstanceReg, InitInstanceFieldABI::kFieldReg});
__ CallRuntime(kInitInstanceFieldRuntimeEntry, /*argument_count=*/2);
__ Drop(2);
__ PopRegister(InitInstanceFieldABI::kResultReg);
@@ -130,11 +130,9 @@
const Register kScratchReg = InitLateInstanceFieldInternalRegs::kScratchReg;
__ EnterStubFrame();
- // Save for later.
- __ PushRegisterPair(kInstanceReg, kFieldReg);
-
+ // Save kFieldReg and kInstanceReg for later.
// Call initializer function.
- __ PushRegister(kInstanceReg);
+ __ PushRegistersInOrder({kFieldReg, kInstanceReg, kInstanceReg});
static_assert(
InitInstanceFieldABI::kResultReg == CallingConventions::kReturnReg,
@@ -219,8 +217,8 @@
void StubCodeCompiler::GenerateReThrowStub(Assembler* assembler) {
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for (unused) result.
- __ PushRegister(ReThrowABI::kExceptionReg);
- __ PushRegister(ReThrowABI::kStackTraceReg);
+ __ PushRegistersInOrder(
+ {ReThrowABI::kExceptionReg, ReThrowABI::kStackTraceReg});
__ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
}
@@ -235,11 +233,11 @@
void StubCodeCompiler::GenerateAssertSubtypeStub(Assembler* assembler) {
__ EnterStubFrame();
- __ PushRegister(AssertSubtypeABI::kInstantiatorTypeArgumentsReg);
- __ PushRegister(AssertSubtypeABI::kFunctionTypeArgumentsReg);
- __ PushRegister(AssertSubtypeABI::kSubTypeReg);
- __ PushRegister(AssertSubtypeABI::kSuperTypeReg);
- __ PushRegister(AssertSubtypeABI::kDstNameReg);
+ __ PushRegistersInOrder({AssertSubtypeABI::kInstantiatorTypeArgumentsReg,
+ AssertSubtypeABI::kFunctionTypeArgumentsReg,
+ AssertSubtypeABI::kSubTypeReg,
+ AssertSubtypeABI::kSuperTypeReg,
+ AssertSubtypeABI::kDstNameReg});
__ CallRuntime(kSubtypeCheckRuntimeEntry, /*argument_count=*/5);
__ Drop(5); // Drop unused result as well as arguments.
__ LeaveStubFrame();
@@ -261,8 +259,8 @@
target::kWordSize * AssertAssignableStubABI::kInstantiatorTAVSlotFromFp));
__ pushl(Address(EBP, target::kWordSize *
AssertAssignableStubABI::kFunctionTAVSlotFromFp));
- __ PushRegister(AssertAssignableStubABI::kDstNameReg);
- __ PushRegister(AssertAssignableStubABI::kSubtypeTestReg);
+ __ PushRegistersInOrder({AssertAssignableStubABI::kDstNameReg,
+ AssertAssignableStubABI::kSubtypeTestReg});
__ PushObject(Smi::ZoneHandle(Smi::New(kTypeCheckFromInline)));
__ CallRuntime(kTypeCheckRuntimeEntry, /*argument_count=*/7);
__ Drop(8);
@@ -274,9 +272,9 @@
static void BuildInstantiateTypeRuntimeCall(Assembler* assembler) {
__ EnterStubFrame();
__ PushObject(Object::null_object());
- __ PushRegister(InstantiateTypeABI::kTypeReg);
- __ PushRegister(InstantiateTypeABI::kInstantiatorTypeArgumentsReg);
- __ PushRegister(InstantiateTypeABI::kFunctionTypeArgumentsReg);
+ __ PushRegistersInOrder({InstantiateTypeABI::kTypeReg,
+ InstantiateTypeABI::kInstantiatorTypeArgumentsReg,
+ InstantiateTypeABI::kFunctionTypeArgumentsReg});
__ CallRuntime(kInstantiateTypeRuntimeEntry, /*argument_count=*/3);
__ Drop(3);
__ PopRegister(InstantiateTypeABI::kResultTypeReg);
@@ -416,11 +414,10 @@
void StubCodeCompiler::GenerateInstanceOfStub(Assembler* assembler) {
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for the result.
- __ PushRegister(TypeTestABI::kInstanceReg);
- __ PushRegister(TypeTestABI::kDstTypeReg);
- __ PushRegister(TypeTestABI::kInstantiatorTypeArgumentsReg);
- __ PushRegister(TypeTestABI::kFunctionTypeArgumentsReg);
- __ PushRegister(TypeTestABI::kSubtypeTestCacheReg);
+ __ PushRegistersInOrder({TypeTestABI::kInstanceReg, TypeTestABI::kDstTypeReg,
+ TypeTestABI::kInstantiatorTypeArgumentsReg,
+ TypeTestABI::kFunctionTypeArgumentsReg,
+ TypeTestABI::kSubtypeTestCacheReg});
__ CallRuntime(kInstanceofRuntimeEntry, /*argument_count=*/5);
__ Drop(5);
__ PopRegister(TypeTestABI::kInstanceOfResultReg);
@@ -816,10 +813,9 @@
static void InvokeTypeCheckFromTypeTestStub(Assembler* assembler,
TypeCheckMode mode) {
__ PushObject(NullObject()); // Make room for result.
- __ PushRegister(TypeTestABI::kInstanceReg);
- __ PushRegister(TypeTestABI::kDstTypeReg);
- __ PushRegister(TypeTestABI::kInstantiatorTypeArgumentsReg);
- __ PushRegister(TypeTestABI::kFunctionTypeArgumentsReg);
+ __ PushRegistersInOrder({TypeTestABI::kInstanceReg, TypeTestABI::kDstTypeReg,
+ TypeTestABI::kInstantiatorTypeArgumentsReg,
+ TypeTestABI::kFunctionTypeArgumentsReg});
__ PushObject(NullObject());
__ PushRegister(TypeTestABI::kSubtypeTestCacheReg);
__ PushImmediate(target::ToRawSmi(mode));
@@ -1015,8 +1011,8 @@
__ Comment("Closure allocation via runtime");
__ EnterStubFrame();
__ PushObject(NullObject()); // Space on the stack for the return value.
- __ PushRegister(AllocateClosureABI::kFunctionReg);
- __ PushRegister(AllocateClosureABI::kContextReg);
+ __ PushRegistersInOrder(
+ {AllocateClosureABI::kFunctionReg, AllocateClosureABI::kContextReg});
__ CallRuntime(kAllocateClosureRuntimeEntry, 2);
__ PopRegister(AllocateClosureABI::kContextReg);
__ PopRegister(AllocateClosureABI::kFunctionReg);
@@ -1287,7 +1283,7 @@
const Register kTemp = SuspendStubABI::kTempReg;
const Register kFrameSize = SuspendStubABI::kFrameSizeReg;
const Register kSuspendState = SuspendStubABI::kSuspendStateReg;
- const Register kFuture = SuspendStubABI::kFutureReg;
+ const Register kFunctionData = SuspendStubABI::kFunctionDataReg;
const Register kSrcFrame = SuspendStubABI::kSrcFrameReg;
const Register kDstFrame = SuspendStubABI::kDstFrameReg;
Label alloc_slow_case, alloc_done, init_done, old_gen_object, call_await;
@@ -1308,7 +1304,7 @@
__ CompareClassId(kSuspendState, kSuspendStateCid, kTemp);
__ BranchIf(EQUAL, &init_done);
- __ MoveRegister(kFuture, kSuspendState);
+ __ MoveRegister(kFunctionData, kSuspendState);
__ Comment("Allocate SuspendState");
// Check for allocation tracing.
@@ -1361,8 +1357,8 @@
FieldAddress(kSuspendState, target::SuspendState::frame_size_offset()));
__ StoreCompressedIntoObjectNoBarrier(
kSuspendState,
- FieldAddress(kSuspendState, target::SuspendState::future_offset()),
- kFuture);
+ FieldAddress(kSuspendState, target::SuspendState::function_data_offset()),
+ kFunctionData);
{
#if defined(TARGET_ARCH_ARM64) || defined(TARGET_ARCH_RISCV32) || \
@@ -1444,8 +1440,7 @@
#endif
// Push arguments for _SuspendState._await* method.
- __ PushRegister(kSuspendState);
- __ PushRegister(kArgument);
+ __ PushRegistersInOrder({kSuspendState, kArgument});
// Write barrier.
__ BranchIfBit(kSuspendState, target::ObjectAlignment::kNewObjectBitPosition,
@@ -1470,12 +1465,12 @@
#endif
__ Bind(&alloc_slow_case);
__ Comment("SuspendState Allocation slow case");
- __ PushRegister(kArgument); // Save argument.
- __ PushRegister(kFrameSize); // Save frame size.
+ // Save argument and frame size.
+ __ PushRegistersInOrder({kArgument, kFrameSize});
__ PushObject(NullObject()); // Make space on stack for the return value.
__ SmiTag(kFrameSize);
- __ PushRegister(kFrameSize); // Pass frame size to runtime entry.
- __ PushRegister(kFuture); // Pass future.
+ // Pass frame size and function data to runtime entry.
+ __ PushRegistersInOrder({kFrameSize, kFunctionData});
__ CallRuntime(kAllocateSuspendStateRuntimeEntry, 2);
__ Drop(2); // Drop arguments
__ PopRegister(kSuspendState); // Get result.
@@ -1502,10 +1497,15 @@
__ Jump(&call_await);
}
-void StubCodeCompiler::GenerateAwaitAsyncStub(Assembler* assembler) {
+void StubCodeCompiler::GenerateAwaitStub(Assembler* assembler) {
+ GenerateSuspendStub(assembler,
+ target::Thread::suspend_state_await_entry_point_offset());
+}
+
+void StubCodeCompiler::GenerateYieldAsyncStarStub(Assembler* assembler) {
GenerateSuspendStub(
assembler,
- target::Thread::suspend_state_await_async_entry_point_offset());
+ target::Thread::suspend_state_yield_async_star_entry_point_offset());
}
void StubCodeCompiler::GenerateInitSuspendableFunctionStub(
@@ -1531,6 +1531,12 @@
assembler, target::Thread::suspend_state_init_async_entry_point_offset());
}
+void StubCodeCompiler::GenerateInitAsyncStarStub(Assembler* assembler) {
+ GenerateInitSuspendableFunctionStub(
+ assembler,
+ target::Thread::suspend_state_init_async_star_entry_point_offset());
+}
+
void StubCodeCompiler::GenerateResumeStub(Assembler* assembler) {
const Register kSuspendState = ResumeStubABI::kSuspendStateReg;
const Register kTemp = ResumeStubABI::kTempReg;
@@ -1636,8 +1642,7 @@
#endif
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for (unused) result.
- __ PushRegister(kException);
- __ PushRegister(kStackTrace);
+ __ PushRegistersInOrder({kException, kStackTrace});
__ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
}
@@ -1654,8 +1659,7 @@
__ LeaveDartFrame();
__ EnterStubFrame();
- __ PushRegister(kSuspendState);
- __ PushRegister(CallingConventions::kReturnReg);
+ __ PushRegistersInOrder({kSuspendState, CallingConventions::kReturnReg});
__ Call(Address(THR, return_entry_point_offset));
__ LeaveStubFrame();
__ Ret();
@@ -1674,6 +1678,12 @@
suspend_state_return_async_not_future_entry_point_offset());
}
+void StubCodeCompiler::GenerateReturnAsyncStarStub(Assembler* assembler) {
+ GenerateReturnStub(
+ assembler,
+ target::Thread::suspend_state_return_async_star_entry_point_offset());
+}
+
void StubCodeCompiler::GenerateAsyncExceptionHandlerStub(Assembler* assembler) {
const Register kSuspendState = AsyncExceptionHandlerStubABI::kSuspendStateReg;
ASSERT(kSuspendState != kExceptionObjectReg);
@@ -1694,9 +1704,8 @@
__ LeaveDartFrame();
__ EnterStubFrame();
- __ PushRegister(kSuspendState);
- __ PushRegister(kExceptionObjectReg);
- __ PushRegister(kStackTraceObjectReg);
+ __ PushRegistersInOrder(
+ {kSuspendState, kExceptionObjectReg, kStackTraceObjectReg});
__ Call(Address(
THR,
target::Thread::suspend_state_handle_exception_entry_point_offset()));
@@ -1712,8 +1721,7 @@
__ LeaveDartFrame();
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for (unused) result.
- __ PushRegister(kExceptionObjectReg);
- __ PushRegister(kStackTraceObjectReg);
+ __ PushRegistersInOrder({kExceptionObjectReg, kStackTraceObjectReg});
__ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
}
diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc
index 177186a..c252342 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm.cc
@@ -507,8 +507,8 @@
bool with_fpu_regs) {
auto perform_runtime_call = [&]() {
ASSERT(!GenericCheckBoundInstr::UseUnboxedRepresentation());
- __ PushRegister(RangeErrorABI::kLengthReg);
- __ PushRegister(RangeErrorABI::kIndexReg);
+ __ PushRegistersInOrder(
+ {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
__ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
};
@@ -1849,11 +1849,10 @@
__ LoadObject(AllocateObjectABI::kResultReg, NullObject());
- // Pushes result slot, then parameter class.
- __ PushRegisterPair(kClsReg, AllocateObjectABI::kResultReg);
-
- // Should be Object::null() if class is non-parameterized.
- __ Push(AllocateObjectABI::kTypeArgumentsReg);
+ // Pushes result slot, then parameter class and type arguments.
+ // Type arguments should be Object::null() if class is non-parameterized.
+ __ PushRegistersInOrder({AllocateObjectABI::kResultReg, kClsReg,
+ AllocateObjectABI::kTypeArgumentsReg});
__ CallRuntime(kAllocateObjectRuntimeEntry, 2);
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index a3cb533..0779276 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -723,8 +723,8 @@
__ Bind(&length);
__ SmiTag(RangeErrorABI::kLengthReg);
}
- __ PushRegister(RangeErrorABI::kLengthReg);
- __ PushRegister(RangeErrorABI::kIndexReg);
+ __ PushRegistersInOrder(
+ {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
__ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
};
diff --git a/runtime/vm/compiler/stub_code_compiler_riscv.cc b/runtime/vm/compiler/stub_code_compiler_riscv.cc
index 55fc441..9fcc71b 100644
--- a/runtime/vm/compiler/stub_code_compiler_riscv.cc
+++ b/runtime/vm/compiler/stub_code_compiler_riscv.cc
@@ -440,8 +440,7 @@
__ Bind(&no_type_args);
// Push type arguments & extracted method.
- __ PushRegister(T3);
- __ PushRegister(T1);
+ __ PushRegistersInOrder({T3, T1});
// Allocate context.
{
@@ -563,8 +562,8 @@
__ SmiTag(RangeErrorABI::kLengthReg);
}
#endif // XLEN != 32
- __ PushRegister(RangeErrorABI::kLengthReg);
- __ PushRegister(RangeErrorABI::kIndexReg);
+ __ PushRegistersInOrder(
+ {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
__ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
};
@@ -732,8 +731,7 @@
// calling into the runtime.
__ EnterStubFrame();
// Setup space on stack for return value and preserve arguments descriptor.
- __ PushRegister(S4);
- __ PushRegister(ZR);
+ __ PushRegistersInOrder({S4, ZR});
__ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
// Get Code object result and restore arguments descriptor array.
__ PopRegister(CODE_REG);
@@ -753,9 +751,9 @@
// Create a stub frame as we are pushing some objects on the stack before
// calling into the runtime.
__ EnterStubFrame();
- __ PushRegister(ZR); // Result slot.
- __ PushRegister(A0); // Preserve receiver.
- __ PushRegister(S5); // Old cache value (also 2nd return value).
+ // Setup result slot, preserve receiver and
+ // push old cache value (also 2nd return value).
+ __ PushRegistersInOrder({ZR, A0, S5});
__ CallRuntime(kFixCallersTargetMonomorphicRuntimeEntry, 2);
__ PopRegister(S5); // Get target cache object.
__ PopRegister(A0); // Restore receiver.
@@ -928,8 +926,9 @@
if (kind == kLazyDeoptFromReturn) {
__ PushRegister(T1); // Preserve result as first local.
} else if (kind == kLazyDeoptFromThrow) {
- __ PushRegister(T1); // Preserve exception as first local.
- __ PushRegister(T2); // Preserve stacktrace as second local.
+ // Preserve exception as first local.
+ // Preserve stacktrace as second local.
+ __ PushRegistersInOrder({T1, T2});
}
{
__ mv(A0, FP); // Pass last FP as parameter in R0.
@@ -963,8 +962,9 @@
if (kind == kLazyDeoptFromReturn) {
__ PushRegister(T1); // Preserve result, it will be GC-d here.
} else if (kind == kLazyDeoptFromThrow) {
- __ PushRegister(T1); // Preserve exception, it will be GC-d here.
- __ PushRegister(T2); // Preserve stacktrace, it will be GC-d here.
+ // Preserve exception, it will be GC-d here.
+ // Preserve stacktrace, it will be GC-d here.
+ __ PushRegistersInOrder({T1, T2});
}
__ PushRegister(ZR); // Space for the result.
@@ -1035,10 +1035,9 @@
__ add(TMP, TMP, FP);
__ LoadFromOffset(A0, TMP,
target::frame_layout.param_end_from_fp * target::kWordSize);
- __ PushRegister(ZR); // Result slot.
- __ PushRegister(A0); // Receiver.
- __ PushRegister(S5); // ICData/MegamorphicCache.
- __ PushRegister(S4); // Arguments descriptor.
+ // Push: result slot, receiver, ICData/MegamorphicCache,
+ // arguments descriptor.
+ __ PushRegistersInOrder({ZR, A0, S5, S4});
// Adjust arguments count.
__ LoadCompressedSmiFieldFromOffset(
@@ -2069,10 +2068,8 @@
// Load the function.
__ LoadCompressedFieldFromOffset(TMP, A0, target::Closure::function_offset());
- __ PushRegister(ZR); // Result slot.
- __ PushRegister(A0); // Receiver.
- __ PushRegister(TMP); // Function
- __ PushRegister(S4); // Arguments descriptor.
+ // Push result slot, receiver, function, arguments descriptor.
+ __ PushRegistersInOrder({ZR, A0, TMP, S4});
// Adjust arguments count.
__ LoadCompressedSmiFieldFromOffset(
@@ -2382,8 +2379,7 @@
__ EnterStubFrame();
// Preserve IC data object and arguments descriptor array and
// setup space on stack for result (target code object).
- __ PushRegister(ARGS_DESC_REG); // Preserve arguments descriptor array.
- __ PushRegister(IC_DATA_REG); // Preserve IC Data.
+ __ PushRegistersInOrder({ARGS_DESC_REG, IC_DATA_REG});
if (save_entry_point) {
__ SmiTag(T6);
__ PushRegister(T6);
@@ -2667,8 +2663,8 @@
void StubCodeCompiler::GenerateLazyCompileStub(Assembler* assembler) {
// Preserve arg desc.
__ EnterStubFrame();
- __ PushRegister(ARGS_DESC_REG); // Save arg. desc.
- __ PushRegister(T0); // Pass function.
+ // Save arguments descriptor and pass function.
+ __ PushRegistersInOrder({ARGS_DESC_REG, T0});
__ CallRuntime(kCompileFunctionRuntimeEntry, 1);
__ PopRegister(T0); // Restore argument.
__ PopRegister(ARGS_DESC_REG); // Restore arg desc.
@@ -3371,11 +3367,9 @@
__ lx(CODE_REG,
Address(THR, target::Thread::switchable_call_miss_stub_offset()));
__ EnterStubFrame();
- __ PushRegister(A0); // Preserve receiver.
-
- __ PushRegister(ZR); // Result slot.
- __ PushRegister(ZR); // Arg0: stub out.
- __ PushRegister(A0); // Arg1: Receiver
+ // Preserve receiver, setup result slot,
+ // pass Arg0: stub out and Arg1: Receiver.
+ __ PushRegistersInOrder({A0, ZR, ZR, A0});
__ CallRuntime(kSwitchableCallMissRuntimeEntry, 2);
__ Drop(1);
__ PopRegister(CODE_REG); // result = stub
@@ -3409,11 +3403,9 @@
__ Bind(&miss);
__ EnterStubFrame();
- __ PushRegister(A0); // Preserve receiver.
-
- __ PushRegister(ZR); // Result slot.
- __ PushRegister(ZR); // Arg0: Stub out.
- __ PushRegister(A0); // Arg1: Receiver
+ // Preserve receiver, setup result slot,
+ // pass Arg0: Stub out and Arg1: Receiver.
+ __ PushRegistersInOrder({A0, ZR, ZR, A0});
__ CallRuntime(kSwitchableCallMissRuntimeEntry, 2);
__ Drop(1);
__ PopRegister(CODE_REG); // result = stub
@@ -3471,10 +3463,10 @@
// A runtime call to instantiate the type arguments is required.
__ Bind(&call_runtime);
__ EnterStubFrame();
- __ PushRegisterPair(InstantiationABI::kUninstantiatedTypeArgumentsReg,
- NULL_REG);
- __ PushRegisterPair(InstantiationABI::kFunctionTypeArgumentsReg,
- InstantiationABI::kInstantiatorTypeArgumentsReg);
+ __ PushRegistersInOrder({NULL_REG,
+ InstantiationABI::kUninstantiatedTypeArgumentsReg,
+ InstantiationABI::kInstantiatorTypeArgumentsReg,
+ InstantiationABI::kFunctionTypeArgumentsReg});
__ CallRuntime(kInstantiateTypeArgumentsRuntimeEntry, 3);
__ Drop(3); // Drop 2 type vectors, and uninstantiated type.
__ PopRegister(InstantiationABI::kResultTypeArgumentsReg);
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 0dc8e25..ebbf71e 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -657,8 +657,8 @@
__ Bind(&length);
__ SmiTag(RangeErrorABI::kLengthReg);
}
- __ PushRegister(RangeErrorABI::kLengthReg);
- __ PushRegister(RangeErrorABI::kIndexReg);
+ __ PushRegistersInOrder(
+ {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
__ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
__ Breakpoint();
};
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 722f126..b63efec 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -532,18 +532,18 @@
static const Register kResultReg = R0;
};
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
struct SuspendStubABI {
static const Register kArgumentReg = R0;
static const Register kTempReg = R1;
static const Register kFrameSizeReg = R2;
static const Register kSuspendStateReg = R3;
- static const Register kFutureReg = R4;
+ static const Register kFunctionDataReg = R4;
static const Register kSrcFrameReg = R8;
static const Register kDstFrameReg = R9;
};
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
struct InitSuspendableFunctionStubABI {
static const Register kTypeArgsReg = R0;
};
@@ -563,7 +563,8 @@
static const Register kStackTraceReg = R4;
};
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
struct ReturnStubABI {
static const Register kSuspendStateReg = R2;
};
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index da0c132..8ec2b3e 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -366,18 +366,18 @@
static const Register kResultReg = R0;
};
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
struct SuspendStubABI {
static const Register kArgumentReg = R0;
static const Register kTempReg = R1;
static const Register kFrameSizeReg = R2;
static const Register kSuspendStateReg = R3;
- static const Register kFutureReg = R4;
+ static const Register kFunctionDataReg = R4;
static const Register kSrcFrameReg = R5;
static const Register kDstFrameReg = R6;
};
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
struct InitSuspendableFunctionStubABI {
static const Register kTypeArgsReg = R0;
};
@@ -397,7 +397,8 @@
static const Register kStackTraceReg = R4;
};
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
struct ReturnStubABI {
static const Register kSuspendStateReg = R2;
};
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 2fa9890..1169aa4 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -260,16 +260,16 @@
static const Register kResultReg = EAX;
};
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
struct SuspendStubABI {
static const Register kArgumentReg = EAX;
static const Register kTempReg = EDX;
static const Register kFrameSizeReg = ECX;
static const Register kSuspendStateReg = EBX;
- static const Register kFutureReg = EDI;
+ static const Register kFunctionDataReg = EDI;
// Can reuse THR.
static const Register kSrcFrameReg = ESI;
- // Can reuse kFutureReg.
+ // Can reuse kFunctionDataReg.
static const Register kDstFrameReg = EDI;
// Number of bytes to skip after
@@ -278,7 +278,7 @@
static const intptr_t kResumePcDistance = 5;
};
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
struct InitSuspendableFunctionStubABI {
static const Register kTypeArgsReg = EAX;
};
@@ -298,7 +298,8 @@
static const Register kStackTraceReg = EDI;
};
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
struct ReturnStubABI {
static const Register kSuspendStateReg = EBX;
};
diff --git a/runtime/vm/constants_riscv.h b/runtime/vm/constants_riscv.h
index 8d7a085..4fb57fc 100644
--- a/runtime/vm/constants_riscv.h
+++ b/runtime/vm/constants_riscv.h
@@ -378,18 +378,18 @@
static constexpr Register kResultReg = A0;
};
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
struct SuspendStubABI {
static const Register kArgumentReg = A0;
static const Register kTempReg = T0;
static const Register kFrameSizeReg = T1;
static const Register kSuspendStateReg = T2;
- static const Register kFutureReg = T3;
+ static const Register kFunctionDataReg = T3;
static const Register kSrcFrameReg = T4;
static const Register kDstFrameReg = T5;
};
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
struct InitSuspendableFunctionStubABI {
static const Register kTypeArgsReg = A0;
};
@@ -409,7 +409,8 @@
static const Register kStackTraceReg = T4;
};
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
struct ReturnStubABI {
static const Register kSuspendStateReg = T1;
};
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index 1f22126..51828ea 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -335,13 +335,13 @@
static const Register kResultReg = RAX;
};
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
struct SuspendStubABI {
static const Register kArgumentReg = RAX;
static const Register kTempReg = RDX;
static const Register kFrameSizeReg = RCX;
static const Register kSuspendStateReg = RBX;
- static const Register kFutureReg = R8;
+ static const Register kFunctionDataReg = R8;
static const Register kSrcFrameReg = RSI;
static const Register kDstFrameReg = RDI;
@@ -351,7 +351,7 @@
static const intptr_t kResumePcDistance = 5;
};
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
struct InitSuspendableFunctionStubABI {
static const Register kTypeArgsReg = RAX;
};
@@ -371,7 +371,8 @@
static const Register kStackTraceReg = RDI;
};
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
struct ReturnStubABI {
static const Register kSuspendStateReg = RBX;
};
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index d9b9ddf..bb496ef 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -56,8 +56,6 @@
int value_;
};
-const uint8_t kNativeYieldFlags = 0x2;
-
enum LogicalOperator { kAnd, kOr };
struct ProgramBinary {
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index 6d7b33e..08d9da7 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -213,6 +213,12 @@
};
// Keep in sync with package:kernel/lib/ast.dart
+enum YieldStatementFlags {
+ kYieldStatementFlagYieldStar = 1 << 0,
+ kYieldStatementFlagNative = 1 << 1,
+};
+
+// Keep in sync with package:kernel/lib/ast.dart
enum class NamedTypeFlags : uint8_t {
kIsRequired = 1 << 0,
};
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 3dcbc81..a9835fa 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -1377,15 +1377,19 @@
// Build implemented interface types
intptr_t interface_count = helper_.ReadListLength();
- const Array& interfaces =
- Array::Handle(Z, Array::New(interface_count, Heap::kOld));
- for (intptr_t i = 0; i < interface_count; i++) {
- const AbstractType& type =
- T.BuildTypeWithoutFinalization(); // read ith type.
- interfaces.SetAt(i, type);
+ if (interface_count == 0) {
+ klass->set_interfaces(Object::empty_array());
+ } else {
+ const Array& interfaces =
+ Array::Handle(Z, Array::New(interface_count, Heap::kOld));
+ for (intptr_t i = 0; i < interface_count; i++) {
+ const AbstractType& type =
+ T.BuildTypeWithoutFinalization(); // read ith type.
+ interfaces.SetAt(i, type);
+ }
+ klass->set_interfaces(interfaces);
}
class_helper->SetJustRead(ClassHelper::kImplementedClasses);
- klass->set_interfaces(interfaces);
if (class_helper->is_abstract()) klass->set_is_abstract();
@@ -2039,6 +2043,16 @@
function.set_is_inlinable(false);
function.set_is_visible(true);
ASSERT(function.IsCompactAsyncFunction());
+ } else if (function_node_helper.async_marker_ ==
+ FunctionNodeHelper::kAsyncStar) {
+ if (!FLAG_precompiled_mode) {
+ FATAL("Compact async* functions are only supported in AOT mode.");
+ }
+ function.set_modifier(UntaggedFunction::kAsyncGen);
+ function.set_is_debuggable(true);
+ function.set_is_inlinable(false);
+ function.set_is_visible(true);
+ ASSERT(function.IsCompactAsyncStarFunction());
} else {
ASSERT(function_node_helper.async_marker_ == FunctionNodeHelper::kSync);
function.set_is_debuggable(function_node_helper.dart_async_marker_ ==
@@ -2063,6 +2077,7 @@
break;
}
ASSERT(!function.IsCompactAsyncFunction());
+ ASSERT(!function.IsCompactAsyncStarFunction());
}
if (!native_name.IsNull()) {
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index a9fffe2..da4f734 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -26036,7 +26036,7 @@
"symbolize stack traces in the precompiled runtime.");
SuspendStatePtr SuspendState::New(intptr_t frame_size,
- const Instance& future,
+ const Instance& function_data,
Heap::Space space) {
SuspendState& result = SuspendState::Handle();
{
@@ -26047,7 +26047,7 @@
result ^= raw;
result.set_frame_size(frame_size);
result.set_pc(0);
- result.set_future(future);
+ result.set_function_data(function_data);
}
return result.ptr();
}
@@ -26061,8 +26061,8 @@
StoreNonPointer(&untag()->pc_, pc);
}
-void SuspendState::set_future(const Instance& future) const {
- untag()->set_future(future.ptr());
+void SuspendState::set_function_data(const Instance& function_data) const {
+ untag()->set_function_data(function_data.ptr());
}
const char* SuspendState::ToCString() const {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 0ea4197..b5eaa99 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -3171,7 +3171,7 @@
// Returns true if parameters of this function are copied into the frame
// in the function prologue.
bool MakesCopyOfParameters() const {
- return HasOptionalParameters() || IsCompactAsyncFunction();
+ return HasOptionalParameters() || IsSuspendableFunction();
}
#if defined(DART_PRECOMPILED_RUNTIME)
@@ -3570,12 +3570,25 @@
return modifier() == UntaggedFunction::kAsync;
}
- // TODO(alexmarkov): replace this predicate with IsAsyncFunction() after
- // old async functions are removed.
+ // TODO(dartbug.com/48378): replace this predicate with IsAsyncFunction()
+ // after old async functions are removed.
bool IsCompactAsyncFunction() const {
return IsAsyncFunction() && is_debuggable();
}
+ // TODO(dartbug.com/48378): replace this predicate with IsAsyncGenerator()
+ // after old async* functions are removed.
+ bool IsCompactAsyncStarFunction() const {
+ return IsAsyncGenerator() && is_debuggable();
+ }
+
+ // Returns true for functions which execution can be suspended
+ // using Suspend/Resume stubs. Such functions have an artificial
+ // :suspend_state local variable at the fixed location of the frame.
+ bool IsSuspendableFunction() const {
+ return IsCompactAsyncFunction() || IsCompactAsyncStarFunction();
+ }
+
// Recognise synthetic sync-yielding functions like the inner-most:
// user_func /* was async */ {
// :async_op(..) yielding {
@@ -9260,11 +9273,6 @@
return raw_smi;
}
- static SmiPtr FromAlignedAddress(uword address) {
- ASSERT((address & kSmiTagMask) == kSmiTag);
- return static_cast<SmiPtr>(address);
- }
-
static ClassPtr Class();
static intptr_t Value(const SmiPtr raw_smi) { return RawSmiValue(raw_smi); }
@@ -11809,8 +11817,8 @@
return OFFSET_OF(UntaggedSuspendState, frame_size_);
}
static intptr_t pc_offset() { return OFFSET_OF(UntaggedSuspendState, pc_); }
- static intptr_t future_offset() {
- return OFFSET_OF(UntaggedSuspendState, future_);
+ static intptr_t function_data_offset() {
+ return OFFSET_OF(UntaggedSuspendState, function_data_);
}
static intptr_t then_callback_offset() {
return OFFSET_OF(UntaggedSuspendState, then_callback_);
@@ -11823,10 +11831,10 @@
}
static SuspendStatePtr New(intptr_t frame_size,
- const Instance& future,
+ const Instance& function_data,
Heap::Space space = Heap::kNew);
- InstancePtr future() const { return untag()->future(); }
+ InstancePtr function_data() const { return untag()->function_data(); }
uword pc() const { return untag()->pc_; }
// Returns Code object corresponding to the suspended function.
@@ -11835,7 +11843,7 @@
private:
void set_frame_size(intptr_t frame_size) const;
void set_pc(uword pc) const;
- void set_future(const Instance& future) const;
+ void set_function_data(const Instance& function_data) const;
FINAL_HEAP_OBJECT_IMPLEMENTATION(SuspendState, Instance);
friend class Class;
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index 7cc7f02..f2959f4 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -286,8 +286,17 @@
cls =
async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController());
ASSERT(!cls.IsNull());
+ RELEASE_ASSERT(cls.EnsureIsFinalized(thread) == Error::null());
set_async_star_stream_controller(cls);
+ function = cls.LookupFunctionAllowPrivate(Symbols::add());
+ ASSERT(!function.IsNull());
+ set_async_star_stream_controller_add(function);
+
+ function = cls.LookupFunctionAllowPrivate(Symbols::addStream());
+ ASSERT(!function.IsNull());
+ set_async_star_stream_controller_add_stream(function);
+
if (FLAG_async_debugger) {
// Disable debugging and inlining of all functions on the
// _AsyncStarStreamController class.
@@ -301,6 +310,10 @@
}
}
+ cls = async_lib.LookupClassAllowPrivate(Symbols::Stream());
+ ASSERT(!cls.IsNull());
+ set_stream_class(cls);
+
cls = async_lib.LookupClassAllowPrivate(Symbols::_SuspendState());
ASSERT(!cls.IsNull());
const auto& error = cls.EnsureIsFinalized(thread);
@@ -310,9 +323,9 @@
ASSERT(!function.IsNull());
set_suspend_state_init_async(function);
- function = cls.LookupFunctionAllowPrivate(Symbols::_awaitAsync());
+ function = cls.LookupFunctionAllowPrivate(Symbols::_await());
ASSERT(!function.IsNull());
- set_suspend_state_await_async(function);
+ set_suspend_state_await(function);
function = cls.LookupFunctionAllowPrivate(Symbols::_returnAsync());
ASSERT(!function.IsNull());
@@ -322,6 +335,18 @@
ASSERT(!function.IsNull());
set_suspend_state_return_async_not_future(function);
+ function = cls.LookupFunctionAllowPrivate(Symbols::_initAsyncStar());
+ ASSERT(!function.IsNull());
+ set_suspend_state_init_async_star(function);
+
+ function = cls.LookupFunctionAllowPrivate(Symbols::_yieldAsyncStar());
+ ASSERT(!function.IsNull());
+ set_suspend_state_yield_async_star(function);
+
+ function = cls.LookupFunctionAllowPrivate(Symbols::_returnAsyncStar());
+ ASSERT(!function.IsNull());
+ set_suspend_state_return_async_star(function);
+
function = cls.LookupFunctionAllowPrivate(Symbols::_handleException());
ASSERT(!function.IsNull());
set_suspend_state_handle_exception(function);
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index ee7844a..674d1b4 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -165,15 +165,21 @@
RW(Function, simple_instance_of_true_function) \
RW(Function, simple_instance_of_false_function) \
RW(Function, async_star_move_next_helper) \
+ RW(Function, async_star_stream_controller_add) \
+ RW(Function, async_star_stream_controller_add_stream) \
RW(Function, complete_on_async_return) \
RW(Function, complete_with_no_future_on_async_return) \
RW(Function, complete_on_async_error) \
RW(Function, suspend_state_init_async) \
- RW(Function, suspend_state_await_async) \
+ RW(Function, suspend_state_await) \
RW(Function, suspend_state_return_async) \
RW(Function, suspend_state_return_async_not_future) \
+ RW(Function, suspend_state_init_async_star) \
+ RW(Function, suspend_state_yield_async_star) \
+ RW(Function, suspend_state_return_async_star) \
RW(Function, suspend_state_handle_exception) \
RW(Class, async_star_stream_controller) \
+ RW(Class, stream_class) \
ARW_RELAXED(Smi, future_timeout_future_index) \
ARW_RELAXED(Smi, future_wait_future_index) \
RW(CompressedStackMaps, canonicalized_stack_map_entries) \
@@ -244,11 +250,14 @@
RW(Code, type_parameter_tts_stub) \
RW(Code, unreachable_tts_stub) \
RW(Code, slow_tts_stub) \
- RW(Code, await_async_stub) \
+ RW(Code, await_stub) \
RW(Code, init_async_stub) \
RW(Code, resume_stub) \
RW(Code, return_async_stub) \
RW(Code, return_async_not_future_stub) \
+ RW(Code, init_async_star_stub) \
+ RW(Code, yield_async_star_stub) \
+ RW(Code, return_async_star_stub) \
RW(Array, dispatch_table_code_entries) \
RW(GrowableObjectArray, instructions_tables) \
RW(Array, obfuscation_map) \
@@ -324,11 +333,14 @@
DO(init_instance_field_stub, InitInstanceField) \
DO(init_late_instance_field_stub, InitLateInstanceField) \
DO(init_late_final_instance_field_stub, InitLateFinalInstanceField) \
- DO(await_async_stub, AwaitAsync) \
+ DO(await_stub, Await) \
DO(init_async_stub, InitAsync) \
DO(resume_stub, Resume) \
DO(return_async_stub, ReturnAsync) \
DO(return_async_not_future_stub, ReturnAsyncNotFuture) \
+ DO(init_async_star_stub, InitAsyncStar) \
+ DO(yield_async_star_stub, YieldAsyncStar) \
+ DO(return_async_star_stub, ReturnAsyncStar) \
DO(instance_of_stub, InstanceOf)
#define ISOLATE_OBJECT_STORE_FIELD_LIST(R_, RW) \
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 5677ff9..6b5dab8 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -3292,10 +3292,15 @@
intptr_t frame_size_;
uword pc_;
- COMPRESSED_POINTER_FIELD(InstancePtr, future)
+ // Holds function-specific object which is returned from
+ // SuspendState.init* method.
+ // For async functions: _Future instance.
+ // For async* functions: _AsyncStarStreamController instance.
+ COMPRESSED_POINTER_FIELD(InstancePtr, function_data)
+
COMPRESSED_POINTER_FIELD(ClosurePtr, then_callback)
COMPRESSED_POINTER_FIELD(ClosurePtr, error_callback)
- VISIT_FROM(future)
+ VISIT_FROM(function_data)
VISIT_TO(error_callback)
public:
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index 749e1d2..a7e7a92 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -191,7 +191,7 @@
F(RegExp, two_byte_sticky_) \
F(RegExp, external_one_byte_sticky_) \
F(RegExp, external_two_byte_sticky_) \
- F(SuspendState, future_) \
+ F(SuspendState, function_data_) \
F(SuspendState, then_callback_) \
F(SuspendState, error_callback_) \
F(WeakProperty, key_) \
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index b1b3345..ac9d41a 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -711,13 +711,14 @@
// Allocate a SuspendState object.
// Arg0: frame size.
-// Arg1: future.
+// Arg1: function data.
// Return value: newly allocated object.
DEFINE_RUNTIME_ENTRY(AllocateSuspendState, 2) {
const Smi& frame_size = Smi::CheckedHandle(zone, arguments.ArgAt(0));
- const Instance& future = Instance::CheckedHandle(zone, arguments.ArgAt(1));
+ const Instance& function_data =
+ Instance::CheckedHandle(zone, arguments.ArgAt(1));
const SuspendState& result = SuspendState::Handle(
- zone, SuspendState::New(frame_size.Value(), future,
+ zone, SuspendState::New(frame_size.Value(), function_data,
SpaceForRuntimeAllocation()));
arguments.SetReturn(result);
}
diff --git a/runtime/vm/stack_trace.cc b/runtime/vm/stack_trace.cc
index d172704..a5c7bdd 100644
--- a/runtime/vm/stack_trace.cc
+++ b/runtime/vm/stack_trace.cc
@@ -70,7 +70,7 @@
callback_instance_(Object::Handle(zone)),
future_impl_class(Class::Handle(zone)),
future_listener_class(Class::Handle(zone)),
- async_start_stream_controller_class(Class::Handle(zone)),
+ async_star_stream_controller_class(Class::Handle(zone)),
stream_controller_class(Class::Handle(zone)),
sync_stream_controller_class(Class::Handle(zone)),
controller_subscription_class(Class::Handle(zone)),
@@ -95,9 +95,9 @@
async_lib.LookupClassAllowPrivate(Symbols::_FutureListener());
ASSERT(!future_listener_class.IsNull());
// - async*:
- async_start_stream_controller_class =
+ async_star_stream_controller_class =
async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController());
- ASSERT(!async_start_stream_controller_class.IsNull());
+ ASSERT(!async_star_stream_controller_class.IsNull());
stream_controller_class =
async_lib.LookupClassAllowPrivate(Symbols::_StreamController());
ASSERT(!stream_controller_class.IsNull());
@@ -130,7 +130,7 @@
ASSERT(!future_listener_result_field.IsNull());
// - async*:
controller_controller_field =
- async_start_stream_controller_class.LookupFieldAllowPrivate(
+ async_star_stream_controller_class.LookupFieldAllowPrivate(
Symbols::controller());
ASSERT(!controller_controller_field.IsNull());
state_field =
@@ -163,14 +163,19 @@
ClosurePtr CallerClosureFinder::FindCallerInAsyncGenClosure(
const Context& receiver_context) {
- // Get the async* _StreamController.
+ // Get the async* _AsyncStarStreamController.
context_entry_ = receiver_context.At(Context::kControllerIndex);
- ASSERT(context_entry_.IsInstance());
- ASSERT(context_entry_.GetClassId() ==
- async_start_stream_controller_class.id());
+ return FindCallerInAsyncStarStreamController(context_entry_);
+}
- const Instance& controller = Instance::Cast(context_entry_);
- controller_ = controller.GetField(controller_controller_field);
+ClosurePtr CallerClosureFinder::FindCallerInAsyncStarStreamController(
+ const Object& async_star_stream_controller) {
+ ASSERT(async_star_stream_controller.IsInstance());
+ ASSERT(async_star_stream_controller.GetClassId() ==
+ async_star_stream_controller_class.id());
+
+ controller_ = Instance::Cast(async_star_stream_controller)
+ .GetField(controller_controller_field);
ASSERT(!controller_.IsNull());
ASSERT(controller_.GetClassId() == sync_stream_controller_class.id());
@@ -269,8 +274,15 @@
ClosurePtr CallerClosureFinder::FindCallerFromSuspendState(
const SuspendState& suspend_state) {
- future_ = suspend_state.future();
- return GetCallerInFutureImpl(future_);
+ context_entry_ = suspend_state.function_data();
+ if (context_entry_.GetClassId() == future_impl_class.id()) {
+ return GetCallerInFutureImpl(context_entry_);
+ } else if (context_entry_.GetClassId() ==
+ async_star_stream_controller_class.id()) {
+ return FindCallerInAsyncStarStreamController(context_entry_);
+ } else {
+ UNREACHABLE();
+ }
}
ClosurePtr CallerClosureFinder::UnwrapAsyncThen(const Closure& closure) {
@@ -289,14 +301,15 @@
bool CallerClosureFinder::IsCompactAsyncCallback(const Function& function) {
parent_function_ = function.parent_function();
- return parent_function_.recognized_kind() ==
- MethodRecognizer::kSuspendState_createAsyncCallbacks;
+ auto kind = parent_function_.recognized_kind();
+ return (kind == MethodRecognizer::kSuspendState_createAsyncCallbacks) ||
+ (kind == MethodRecognizer::kSuspendState_createAsyncStarCallback);
}
SuspendStatePtr CallerClosureFinder::GetSuspendStateFromAsyncCallback(
const Closure& closure) {
ASSERT(IsCompactAsyncCallback(Function::Handle(closure.function())));
- // Async handler only captures the receiver (SuspendState).
+ // Async/async* handler only captures the receiver (SuspendState).
receiver_context_ = closure.context();
RELEASE_ASSERT(receiver_context_.num_variables() == 1);
return SuspendState::RawCast(receiver_context_.At(0));
@@ -469,7 +482,8 @@
return Closure::null();
}
- if (function.IsCompactAsyncFunction()) {
+ if (function.IsCompactAsyncFunction() ||
+ function.IsCompactAsyncStarFunction()) {
auto& suspend_state = Object::Handle(
zone, *reinterpret_cast<ObjectPtr*>(LocalVarAddress(
frame->fp(), runtime_frame_layout.FrameSlotForVariableIndex(
diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h
index bab4fd1..2e33b71 100644
--- a/runtime/vm/stack_trace.h
+++ b/runtime/vm/stack_trace.h
@@ -31,6 +31,12 @@
// Returns either the `onData` or the Future awaiter.
ClosurePtr FindCallerInAsyncGenClosure(const Context& receiver_context);
+ // Find caller closure from an _AsyncStarStreamController instance
+ // corresponding to async* function.
+ // Returns either the `onData` or the Future awaiter.
+ ClosurePtr FindCallerInAsyncStarStreamController(
+ const Object& async_star_stream_controller);
+
// Find caller closure from a function receiver closure.
// For async* functions, async functions, `Future.timeout` and `Future.wait`,
// we can do this by finding and following their awaited Futures.
@@ -40,11 +46,11 @@
ClosurePtr FindCallerFromSuspendState(const SuspendState& suspend_state);
// Returns true if given closure function is a Future callback
- // corresponding to an async function.
+ // corresponding to an async/async* function or async* body callback.
bool IsCompactAsyncCallback(const Function& function);
- // Returns SuspendState from the given Future callback which corresponds
- // to an async function.
+ // Returns SuspendState from the given callback which corresponds
+ // to an async/async* function.
SuspendStatePtr GetSuspendStateFromAsyncCallback(const Closure& closure);
// Finds the awaited Future from an async function receiver closure.
@@ -88,7 +94,7 @@
Class& future_impl_class;
Class& future_listener_class;
- Class& async_start_stream_controller_class;
+ Class& async_star_stream_controller_class;
Class& stream_controller_class;
Class& sync_stream_controller_class;
Class& controller_subscription_class;
diff --git a/runtime/vm/stub_code_list.h b/runtime/vm/stub_code_list.h
index b035700..f9110be 100644
--- a/runtime/vm/stub_code_list.h
+++ b/runtime/vm/stub_code_list.h
@@ -149,11 +149,14 @@
V(InstantiateTypeArgumentsMayShareInstantiatorTA) \
V(InstantiateTypeArgumentsMayShareFunctionTA) \
V(NoSuchMethodDispatcher) \
- V(AwaitAsync) \
+ V(Await) \
V(InitAsync) \
V(Resume) \
V(ReturnAsync) \
V(ReturnAsyncNotFuture) \
+ V(InitAsyncStar) \
+ V(YieldAsyncStar) \
+ V(ReturnAsyncStar) \
V(AsyncExceptionHandler) \
V(UnknownDartCode)
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 34053dc..7eb6d2d 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -241,6 +241,7 @@
V(SpaceWhereNewLine, " where\n") \
V(StackOverflowError, "StackOverflowError") \
V(StackTraceParameter, ":stack_trace") \
+ V(Stream, "Stream") \
V(StringBase, "_StringBase") \
V(Struct, "Struct") \
V(SubtypeTestCache, "SubtypeTestCache") \
@@ -410,7 +411,7 @@
V(_WeakProperty, "_WeakProperty") \
V(_WeakReferenceImpl, "_WeakReferenceImpl") \
V(_typedDataBase, "_typedDataBase") \
- V(_awaitAsync, "_awaitAsync") \
+ V(_await, "_await") \
V(_classRangeCheck, "_classRangeCheck") \
V(_ensureScheduleImmediate, "_ensureScheduleImmediate") \
V(_future, "_future") \
@@ -420,6 +421,7 @@
V(_handleNativeFinalizerMessage, "_handleNativeFinalizerMessage") \
V(_hasValue, "_hasValue") \
V(_initAsync, "_initAsync") \
+ V(_initAsyncStar, "_initAsyncStar") \
V(_instanceOf, "_instanceOf") \
V(_listGetAt, "_listGetAt") \
V(_listLength, "_listLength") \
@@ -439,6 +441,7 @@
V(_resultOrListeners, "_resultOrListeners") \
V(_returnAsync, "_returnAsync") \
V(_returnAsyncNotFuture, "_returnAsyncNotFuture") \
+ V(_returnAsyncStar, "_returnAsyncStar") \
V(_runExtension, "_runExtension") \
V(_runPendingImmediateCallback, "_runPendingImmediateCallback") \
V(_scanFlags, "_scanFlags") \
@@ -451,6 +454,9 @@
V(_toString, "_toString") \
V(_varData, "_varData") \
V(_wordCharacterMap, "_wordCharacterMap") \
+ V(_yieldAsyncStar, "_yieldAsyncStar") \
+ V(add, "add") \
+ V(addStream, "addStream") \
V(callback, "callback") \
V(capture_length, ":capture_length") \
V(capture_start_index, ":capture_start_index") \
diff --git a/runtime/vm/tagged_pointer.h b/runtime/vm/tagged_pointer.h
index 172831f..fab7da6 100644
--- a/runtime/vm/tagged_pointer.h
+++ b/runtime/vm/tagged_pointer.h
@@ -9,6 +9,7 @@
#include "platform/assert.h"
#include "platform/utils.h"
#include "vm/class_id.h"
+#include "vm/globals.h"
#include "vm/pointer_tagging.h"
namespace dart {
@@ -66,13 +67,29 @@
return (addr & kObjectAlignmentMask) != kOldObjectBits; \
} \
\
- bool operator==(const type& other) { return ptr == other.ptr; } \
- bool operator!=(const type& other) { return ptr != other.ptr; } \
+ bool operator==(const type& other) { \
+ return (ptr & kSmiTagMask) == kHeapObjectTag \
+ ? ptr == other.ptr \
+ : static_cast<compressed_uword>(ptr) == \
+ static_cast<compressed_uword>(other.ptr); \
+ } \
+ bool operator!=(const type& other) { \
+ return (ptr & kSmiTagMask) == kHeapObjectTag \
+ ? ptr != other.ptr \
+ : static_cast<compressed_uword>(ptr) != \
+ static_cast<compressed_uword>(other.ptr); \
+ } \
constexpr bool operator==(const type& other) const { \
- return ptr == other.ptr; \
+ return (ptr & kSmiTagMask) == kHeapObjectTag \
+ ? ptr == other.ptr \
+ : static_cast<compressed_uword>(ptr) == \
+ static_cast<compressed_uword>(other.ptr); \
} \
constexpr bool operator!=(const type& other) const { \
- return ptr != other.ptr; \
+ return (ptr & kSmiTagMask) == kHeapObjectTag \
+ ? ptr != other.ptr \
+ : static_cast<compressed_uword>(ptr) != \
+ static_cast<compressed_uword>(other.ptr); \
}
class ObjectPtr {
@@ -251,11 +268,6 @@
: compressed_pointer_(static_cast<uint32_t>(tagged)) {}
ObjectPtr Decompress(uword heap_base) const {
- if ((compressed_pointer_ & kSmiTagMask) != kHeapObjectTag) {
- // TODO(liama): Make all native code robust to junk in the upper 32-bits
- // of SMIs, then remove this special casing.
- return DecompressSmi();
- }
return static_cast<ObjectPtr>(static_cast<uword>(compressed_pointer_) +
heap_base);
}
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 32dc3ba..dc5b90b 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -168,9 +168,12 @@
#define CACHED_FUNCTION_ENTRY_POINTS_LIST(V) \
V(suspend_state_init_async) \
- V(suspend_state_await_async) \
+ V(suspend_state_await) \
V(suspend_state_return_async) \
V(suspend_state_return_async_not_future) \
+ V(suspend_state_init_async_star) \
+ V(suspend_state_yield_async_star) \
+ V(suspend_state_return_async_star) \
V(suspend_state_handle_exception)
// This assertion marks places which assume that boolean false immediate
diff --git a/sdk/lib/_internal/vm/lib/async_patch.dart b/sdk/lib/_internal/vm/lib/async_patch.dart
index 27eb7e6..d6f6c74 100644
--- a/sdk/lib/_internal/vm/lib/async_patch.dart
+++ b/sdk/lib/_internal/vm/lib/async_patch.dart
@@ -110,7 +110,7 @@
class _AsyncStarStreamController<T> {
@pragma("vm:entry-point")
StreamController<T> controller;
- Function asyncStarBody;
+ Function? asyncStarBody;
bool isAdding = false;
bool onListenReceived = false;
bool isScheduled = false;
@@ -127,7 +127,7 @@
Stream<T> get stream {
final Stream<T> local = controller.stream;
if (local is _StreamImpl<T>) {
- local._generator = asyncStarBody;
+ local._generator = asyncStarBody!;
}
return local;
}
@@ -137,7 +137,7 @@
isSuspendedAtYield = false;
final bool? argument = continuationArgument;
continuationArgument = null;
- asyncStarBody(argument, null);
+ asyncStarBody!(argument, null);
}
void scheduleGenerator() {
@@ -158,6 +158,7 @@
// controller.add(e);
// suspend;
// if (controller.isCancelled) return;
+ @pragma("vm:entry-point", "call")
bool add(T event) {
if (!onListenReceived) _fatal("yield before stream is listened to");
if (isSuspendedAtYield) _fatal("unexpected yield");
@@ -174,6 +175,7 @@
// Adds the elements of stream into this controller's stream.
// The generator will be scheduled again when all of the
// elements of the added stream have been consumed.
+ @pragma("vm:entry-point", "call")
void addStream(Stream<T> stream) {
if (!onListenReceived) _fatal("yield before stream is listened to");
@@ -327,7 +329,7 @@
@pragma("vm:invisible")
static Object? _initAsync<T>() {
if (_trace) print('_initAsync<$T>');
- return new _Future<T>();
+ return _Future<T>();
}
@pragma("vm:invisible")
@@ -371,14 +373,14 @@
@pragma("vm:entry-point", "call")
@pragma("vm:invisible")
- Object? _awaitAsync(Object? object) {
+ Object? _await(Object? object) {
if (_trace) print('_awaitAsync (object=$object)');
if (_thenCallback == null) {
_createAsyncCallbacks();
}
_awaitHelper(object, unsafeCast<dynamic Function(dynamic)>(_thenCallback),
unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback));
- return _future;
+ return _functionData;
}
@pragma("vm:entry-point", "call")
@@ -391,7 +393,7 @@
_Future future;
bool isSync = true;
if (suspendState is _SuspendState) {
- future = suspendState._future;
+ future = unsafeCast<_Future>(suspendState._functionData);
} else {
future = unsafeCast<_Future>(suspendState);
isSync = false;
@@ -411,7 +413,7 @@
_Future future;
bool isSync = true;
if (suspendState is _SuspendState) {
- future = suspendState._future;
+ future = unsafeCast<_Future>(suspendState._functionData);
} else {
future = unsafeCast<_Future>(suspendState);
isSync = false;
@@ -422,31 +424,79 @@
@pragma("vm:entry-point", "call")
@pragma("vm:invisible")
- static Future _handleException(
+ static Object? _initAsyncStar<T>() {
+ if (_trace) print('_initAsyncStar<$T>');
+ return _AsyncStarStreamController<T>(null);
+ }
+
+ @pragma("vm:invisible")
+ @pragma("vm:recognized", "other")
+ _createAsyncStarCallback(_AsyncStarStreamController controller) {
+ controller.asyncStarBody = (value, _) {
+ if (_trace) print('asyncStarBody callback (value=$value)');
+ _resume(value, null, null);
+ };
+ }
+
+ @pragma("vm:entry-point", "call")
+ @pragma("vm:invisible")
+ Object? _yieldAsyncStar(Object? object) {
+ final controller = unsafeCast<_AsyncStarStreamController>(_functionData);
+ if (controller.asyncStarBody == null) {
+ _createAsyncStarCallback(controller);
+ return controller.stream;
+ }
+ return null;
+ }
+
+ @pragma("vm:entry-point", "call")
+ @pragma("vm:invisible")
+ static void _returnAsyncStar(Object suspendState, Object? returnValue) {
+ if (_trace) {
+ print('_returnAsyncStar (suspendState=$suspendState, '
+ 'returnValue=$returnValue)');
+ }
+ final controller = unsafeCast<_AsyncStarStreamController>(
+ unsafeCast<_SuspendState>(suspendState)._functionData);
+ controller.close();
+ }
+
+ @pragma("vm:entry-point", "call")
+ @pragma("vm:invisible")
+ static Object? _handleException(
Object suspendState, Object exception, StackTrace stackTrace) {
if (_trace) {
print('_handleException (suspendState=$suspendState, '
'exception=$exception, stackTrace=$stackTrace)');
}
- _Future future;
+ Object? functionData;
bool isSync = true;
if (suspendState is _SuspendState) {
- future = suspendState._future;
+ functionData = suspendState._functionData;
} else {
- future = unsafeCast<_Future>(suspendState);
+ functionData = suspendState;
isSync = false;
}
- _completeOnAsyncError(future, exception, stackTrace, isSync);
- return future;
+ if (functionData is _Future) {
+ // async function.
+ _completeOnAsyncError(functionData, exception, stackTrace, isSync);
+ } else if (functionData is _AsyncStarStreamController) {
+ // async* function.
+ functionData.addError(exception, stackTrace);
+ functionData.close();
+ } else {
+ throw 'Unexpected function data ${functionData.runtimeType} $functionData';
+ }
+ return functionData;
}
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
- external set _future(_Future value);
+ external set _functionData(Object value);
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
- external _Future get _future;
+ external Object get _functionData;
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@@ -467,5 +517,5 @@
@pragma("vm:recognized", "other")
@pragma("vm:never-inline")
external void _resume(
- dynamic value, Object? exception, StackTrace? stackTrace);
+ Object? value, Object? exception, StackTrace? stackTrace);
}
diff --git a/sdk/lib/io/file_system_entity.dart b/sdk/lib/io/file_system_entity.dart
index 573457d..0b9ae80 100644
--- a/sdk/lib/io/file_system_entity.dart
+++ b/sdk/lib/io/file_system_entity.dart
@@ -792,7 +792,7 @@
return _getTypeSyncHelper(rawPath, followLinks);
}
return overrides.fseGetTypeSync(
- utf8.decode(rawPath, allowMalformed: true), followLinks);
+ _toStringFromUtf8Array(rawPath), followLinks);
}
static Future<FileSystemEntityType> _getTypeRequest(
@@ -813,8 +813,7 @@
if (overrides == null) {
return _getTypeRequest(rawPath, followLinks);
}
- return overrides.fseGetType(
- utf8.decode(rawPath, allowMalformed: true), followLinks);
+ return overrides.fseGetType(_toStringFromUtf8Array(rawPath), followLinks);
}
static _throwIfError(Object result, String msg, [String? path]) {
diff --git a/tests/standalone/io/regress_34885_test.dart b/tests/standalone/io/regress_34885_test.dart
new file mode 100644
index 0000000..dadf8f0
--- /dev/null
+++ b/tests/standalone/io/regress_34885_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+import 'dart:typed_data';
+
+import "package:async_helper/async_helper.dart";
+import "package:expect/expect.dart";
+
+class FileSystemEntityMock {
+ static Future<FileSystemEntityType> getType(String path, bool followLinks) {
+ Expect.equals(path.length, 4);
+ return new Future.value(FileSystemEntityType.file);
+ }
+
+ static FileSystemEntityType getTypeSync(String path, bool followLinks) {
+ Expect.equals(path.length, 4);
+ return FileSystemEntityType.file;
+ }
+}
+
+main() async {
+ Future<Null> f = IOOverrides.runZoned(
+ () async {
+ Expect.equals(
+ await FileSystemEntity.type("file"), FileSystemEntityType.file);
+ Expect.equals(
+ FileSystemEntity.typeSync("file"), FileSystemEntityType.file);
+ },
+ fseGetType: FileSystemEntityMock.getType,
+ fseGetTypeSync: FileSystemEntityMock.getTypeSync,
+ );
+ await f;
+}
diff --git a/tests/standalone_2/io/regress_34885_test.dart b/tests/standalone_2/io/regress_34885_test.dart
new file mode 100644
index 0000000..dadf8f0
--- /dev/null
+++ b/tests/standalone_2/io/regress_34885_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+import 'dart:typed_data';
+
+import "package:async_helper/async_helper.dart";
+import "package:expect/expect.dart";
+
+class FileSystemEntityMock {
+ static Future<FileSystemEntityType> getType(String path, bool followLinks) {
+ Expect.equals(path.length, 4);
+ return new Future.value(FileSystemEntityType.file);
+ }
+
+ static FileSystemEntityType getTypeSync(String path, bool followLinks) {
+ Expect.equals(path.length, 4);
+ return FileSystemEntityType.file;
+ }
+}
+
+main() async {
+ Future<Null> f = IOOverrides.runZoned(
+ () async {
+ Expect.equals(
+ await FileSystemEntity.type("file"), FileSystemEntityType.file);
+ Expect.equals(
+ FileSystemEntity.typeSync("file"), FileSystemEntityType.file);
+ },
+ fseGetType: FileSystemEntityMock.getType,
+ fseGetTypeSync: FileSystemEntityMock.getTypeSync,
+ );
+ await f;
+}
diff --git a/tools/VERSION b/tools/VERSION
index cbf25bd..cb98d08 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 79
+PRERELEASE 80
PRERELEASE_PATCH 0
\ No newline at end of file