Skip to content

Commit 9cc3b14

Browse files
rakudramaCommit Bot
authored and
Commit Bot
committed
[dart2js] Prepare to migrate ir/impact_data.dart
Add the required methods to serialization_interfaces.dart Change-Id: I201461f7a534d02cbfef4d095c670e0c60c40f22 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249664 Reviewed-by: Nate Biggs <[email protected]> Commit-Queue: Stephen Adams <[email protected]>
1 parent e40fd30 commit 9cc3b14

File tree

6 files changed

+130
-43
lines changed

6 files changed

+130
-43
lines changed

pkg/compiler/lib/src/ir/impact.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import 'package:kernel/ast.dart' as ir;
88
import 'package:kernel/type_environment.dart' as ir;
99

10-
import '../serialization/serialization.dart';
10+
import '../serialization/serialization_interfaces.dart';
1111
import 'class_relation.dart';
1212
import 'constants.dart';
1313
import 'impact_data.dart';

pkg/compiler/lib/src/ir/impact_data.dart

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import '../common/elements.dart';
1313
import '../elements/entities.dart';
1414
import '../elements/types.dart';
1515
import '../ir/scope.dart';
16-
import '../kernel/element_map.dart';
16+
import '../kernel/element_map.dart' show KernelToElementMap;
1717
import '../options.dart';
18-
import '../serialization/serialization.dart';
18+
import '../serialization/serialization_interfaces.dart';
1919
import '../util/enumset.dart';
2020
import 'class_relation.dart';
2121
import 'constants.dart';
@@ -1103,12 +1103,12 @@ class ImpactData {
11031103
_typeUses = source.readListOrNull(() => _TypeUse.fromDataSource(source));
11041104
_redirectingInitializers = source
11051105
.readListOrNull(() => _RedirectingInitializer.fromDataSource(source));
1106-
_fieldInitializers = source.readMemberNodes<ir.Field>(emptyAsNull: true);
1106+
_fieldInitializers = source.readMemberNodesOrNull<ir.Field>();
11071107
_fieldConstantInitializers =
1108-
source.readMemberNodeMap(source.readTreeNodes, emptyAsNull: true);
1108+
source.readMemberNodeMapOrNull(source.readTreeNodes);
11091109
_typeLiterals =
11101110
source.readListOrNull(() => _TypeLiteral.fromDataSource(source));
1111-
_localFunctions = source.readTreeNodes(emptyAsNull: true);
1111+
_localFunctions = source.readTreeNodesOrNull();
11121112
_genericInstantiations = source
11131113
.readListOrNull(() => _GenericInstantiation.fromDataSource(source));
11141114
_staticSets =
@@ -1135,14 +1135,11 @@ class ImpactData {
11351135
_forInData = source.readListOrNull(() => _ForInData.fromDataSource(source));
11361136

11371137
// TODO(johnniwinther): Remove these when CFE provides constants.
1138-
_constructorNodes =
1139-
source.readMemberNodes<ir.Constructor>(emptyAsNull: true);
1140-
_fieldNodes = source.readMemberNodes<ir.Field>(emptyAsNull: true);
1141-
_procedureNodes = source.readMemberNodes<ir.Procedure>(emptyAsNull: true);
1142-
_switchStatementNodes =
1143-
source.readTreeNodes<ir.SwitchStatement>(emptyAsNull: true);
1144-
_staticInvocationNodes =
1145-
source.readTreeNodes<ir.StaticInvocation>(emptyAsNull: true);
1138+
_constructorNodes = source.readMemberNodesOrNull<ir.Constructor>();
1139+
_fieldNodes = source.readMemberNodesOrNull<ir.Field>();
1140+
_procedureNodes = source.readMemberNodesOrNull<ir.Procedure>();
1141+
_switchStatementNodes = source.readTreeNodesOrNull<ir.SwitchStatement>();
1142+
_staticInvocationNodes = source.readTreeNodesOrNull<ir.StaticInvocation>();
11461143
_hasConstSymbolConstructorInvocation = source.readBool();
11471144
source.end(tag);
11481145
}

pkg/compiler/lib/src/js_model/locals.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import '../elements/indexed.dart';
1515
import '../elements/jumps.dart';
1616
import '../elements/types.dart';
1717
import '../serialization/deferrable.dart';
18-
import '../serialization/serialization.dart';
18+
import '../serialization/serialization_interfaces.dart';
1919

2020
import 'element_map.dart';
2121
import 'elements.dart' show JGeneratorBody;

pkg/compiler/lib/src/serialization/serialization_interfaces.dart

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:kernel/ast.dart' as ir show DartType, Member, TreeNode;
5+
import 'package:kernel/ast.dart' as ir
6+
show DartType, LibraryDependency, Member, Name, TreeNode;
67

78
import '../constants/values.dart' show ConstantValue;
89
import '../elements/entities.dart';
@@ -49,6 +50,19 @@ abstract class DataSinkWriter {
4950
void writeEnum(dynamic value);
5051
void writeUri(Uri value);
5152

53+
void writeMemberNode(ir.Member nvalue);
54+
void writeMemberNodes(Iterable<ir.Member>? values, {bool allowNull = false});
55+
void writeMemberNodeMap<V>(Map<ir.Member, V>? map, void f(V value),
56+
{bool allowNull = false});
57+
58+
void writeName(ir.Name value);
59+
void writeLibraryDependencyNode(ir.LibraryDependency value);
60+
void writeLibraryDependencyNodeOrNull(ir.LibraryDependency? value);
61+
62+
void writeTreeNode(ir.TreeNode value);
63+
void writeTreeNodeOrNull(ir.TreeNode value);
64+
void writeTreeNodes(Iterable<ir.TreeNode>? values, {bool allowNull = false});
65+
5266
// TODO(48820): 'covariant ClassEntity' is used below because the
5367
// implementation takes IndexedClass. What this means is that in pre-NNBD
5468
// code, the call site to the implementation DataSinkWriter has an implicit
@@ -85,6 +99,8 @@ abstract class DataSinkWriter {
8599

86100
void writeDartTypeNode(ir.DartType value);
87101
void writeDartTypeNodeOrNull(ir.DartType? value);
102+
void writeDartTypeNodes(Iterable<ir.DartType>? values,
103+
{bool allowNull = false});
88104

89105
void writeDartType(DartType value);
90106
void writeDartTypeOrNull(DartType? value);
@@ -107,6 +123,9 @@ abstract class DataSinkWriter {
107123

108124
void writeValueOrNull<E>(E? value, void f(E value));
109125

126+
void writeDoubleValue(double value);
127+
void writeIntegerValue(int value);
128+
110129
void writeImport(ImportEntity import);
111130
void writeImportOrNull(ImportEntity? import);
112131
void writeImports(Iterable<ImportEntity>? values, {bool allowNull = false});
@@ -137,6 +156,21 @@ abstract class DataSourceReader {
137156
E readEnum<E>(List<E> values);
138157
Uri readUri();
139158

159+
ir.Member readMemberNode();
160+
List<E> readMemberNodes<E extends ir.Member>();
161+
List<E>? readMemberNodesOrNull<E extends ir.Member>();
162+
Map<K, V> readMemberNodeMap<K extends ir.Member, V>(V f());
163+
Map<K, V>? readMemberNodeMapOrNull<K extends ir.Member, V>(V f());
164+
165+
ir.Name readName();
166+
ir.LibraryDependency readLibraryDependencyNode();
167+
ir.LibraryDependency readLibraryDependencyNodeOrNull();
168+
169+
ir.TreeNode readTreeNode();
170+
ir.TreeNode? readTreeNodeOrNull();
171+
List<E> readTreeNodes<E extends ir.TreeNode>();
172+
List<E>? readTreeNodesOrNull<E extends ir.TreeNode>();
173+
140174
ClassEntity readClass(); // IndexedClass
141175
ClassEntity? readClassOrNull(); // IndexedClass
142176
List<E> readClasses<E extends ClassEntity>();
@@ -161,6 +195,8 @@ abstract class DataSourceReader {
161195

162196
ir.DartType readDartTypeNode();
163197
ir.DartType? readDartTypeNodeOrNull();
198+
List<ir.DartType> readDartTypeNodes();
199+
List<ir.DartType>? readDartTypeNodesOrNull();
164200

165201
DartType readDartType();
166202
DartType? readDartTypeOrNull();
@@ -184,6 +220,9 @@ abstract class DataSourceReader {
184220

185221
E? readValueOrNull<E>(E f());
186222

223+
double readDoubleValue();
224+
int readIntegerValue();
225+
187226
ImportEntity readImport();
188227
ImportEntity? readImportOrNull();
189228
List<ImportEntity> readImports();

pkg/compiler/lib/src/serialization/sink.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
340340
}
341341

342342
/// Writes a reference to the kernel member node [value] to this data sink.
343+
@override
343344
void writeMemberNode(ir.Member value) {
344345
_writeDataKind(DataKind.memberNode);
345346
_writeMemberNode(value);
@@ -367,6 +368,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
367368
///
368369
/// This is a convenience method to be used together with
369370
/// [DataSourceReader.readMemberNodes].
371+
@override
370372
void writeMemberNodes(Iterable<ir.Member> values, {bool allowNull = false}) {
371373
if (values == null) {
372374
assert(allowNull);
@@ -385,6 +387,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
385387
///
386388
/// This is a convenience method to be used together with
387389
/// [DataSourceReader.readMemberNodeMap].
390+
@override
388391
void writeMemberNodeMap<V>(Map<ir.Member, V> map, void f(V value),
389392
{bool allowNull = false}) {
390393
if (map == null) {
@@ -400,12 +403,14 @@ class DataSinkWriter implements migrated.DataSinkWriter {
400403
}
401404

402405
/// Writes a kernel name node to this data sink.
406+
@override
403407
void writeName(ir.Name value) {
404408
writeString(value.text);
405409
writeValueOrNull(value.library, writeLibraryNode);
406410
}
407411

408412
/// Writes a kernel library dependency node [value] to this data sink.
413+
@override
409414
void writeLibraryDependencyNode(ir.LibraryDependency value) {
410415
ir.Library library = value.parent;
411416
writeLibraryNode(library);
@@ -414,11 +419,13 @@ class DataSinkWriter implements migrated.DataSinkWriter {
414419

415420
/// Writes a potentially `null` kernel library dependency node [value] to
416421
/// this data sink.
422+
@override
417423
void writeLibraryDependencyNodeOrNull(ir.LibraryDependency value) {
418424
writeValueOrNull(value, writeLibraryDependencyNode);
419425
}
420426

421427
/// Writes a reference to the kernel tree node [value] to this data sink.
428+
@override
422429
void writeTreeNode(ir.TreeNode value) {
423430
_writeDataKind(DataKind.treeNode);
424431
_writeTreeNode(value, null);
@@ -465,6 +472,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
465472
///
466473
/// This is a convenience method to be used together with
467474
/// [DataSourceReader.readTreeNodeOrNull].
475+
@override
468476
void writeTreeNodeOrNull(ir.TreeNode value) {
469477
writeBool(value != null);
470478
if (value != null) {
@@ -477,6 +485,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
477485
///
478486
/// This is a convenience method to be used together with
479487
/// [DataSourceReader.readTreeNodes].
488+
@override
480489
void writeTreeNodes(Iterable<ir.TreeNode> values, {bool allowNull = false}) {
481490
if (values == null) {
482491
assert(allowNull);
@@ -692,6 +701,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
692701
///
693702
/// This is a convenience method to be used together with
694703
/// [DataSourceReader.readDartTypeNodes].
704+
@override
695705
void writeDartTypeNodes(Iterable<ir.DartType> values,
696706
{bool allowNull = false}) {
697707
if (values == null) {
@@ -1112,6 +1122,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
11121122
}
11131123

11141124
/// Writes a double value to this data sink.
1125+
@override
11151126
void writeDoubleValue(double value) {
11161127
_writeDataKind(DataKind.double);
11171128
_writeDoubleValue(value);
@@ -1130,6 +1141,7 @@ class DataSinkWriter implements migrated.DataSinkWriter {
11301141
///
11311142
/// This is should only when the value is not known to be a non-negative
11321143
/// 30 bit integer. Otherwise [writeInt] should be used.
1144+
@override
11331145
void writeIntegerValue(int value) {
11341146
_writeDataKind(DataKind.int);
11351147
_writeBigInt(BigInt.from(value));

0 commit comments

Comments
 (0)