| Index: pkg/kernel/lib/binary/ast_from_binary.dart
|
| diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart
|
| index 35423709ee242fbfd4ff3e4bafb4de7139905fdc..1be6b2aba8f0ad8c867250249becafff6c572864 100644
|
| --- a/pkg/kernel/lib/binary/ast_from_binary.dart
|
| +++ b/pkg/kernel/lib/binary/ast_from_binary.dart
|
| @@ -159,16 +159,27 @@ class BinaryBuilder {
|
|
|
| void _fillTreeNodeList(
|
| List<TreeNode> list, TreeNode buildObject(), TreeNode parent) {
|
| - list.length = readUInt();
|
| - for (int i = 0; i < list.length; ++i) {
|
| - list[i] = buildObject()..parent = parent;
|
| + var length = readUInt();
|
| + list.length = length;
|
| + for (int i = 0; i < length; ++i) {
|
| + TreeNode object = buildObject();
|
| + list[i] = object..parent = parent;
|
| }
|
| }
|
|
|
| void _fillNonTreeNodeList(List<Node> list, Node buildObject()) {
|
| - list.length = readUInt();
|
| - for (int i = 0; i < list.length; ++i) {
|
| - list[i] = buildObject();
|
| + var length = readUInt();
|
| + list.length = length;
|
| + for (int i = 0; i < length; ++i) {
|
| + Node object = buildObject();
|
| + list[i] = object;
|
| + }
|
| + }
|
| +
|
| + void _skipNodeList(Node skipObject()) {
|
| + var length = readUInt();
|
| + for (int i = 0; i < length; ++i) {
|
| + skipObject();
|
| }
|
| }
|
|
|
| @@ -370,7 +381,11 @@ class BinaryBuilder {
|
|
|
| debugPath.add(library.name ?? library.importUri?.toString() ?? 'library');
|
|
|
| - _fillTreeNodeList(library.annotations, readExpression, library);
|
| + if (shouldWriteData) {
|
| + _fillTreeNodeList(library.annotations, readExpression, library);
|
| + } else {
|
| + _skipNodeList(readExpression);
|
| + }
|
| _readLibraryDependencies(library);
|
| _mergeNamedNodeList(library.typedefs, readTypedef, library);
|
| _mergeNamedNodeList(library.classes, readClass, library);
|
| @@ -460,7 +475,11 @@ class BinaryBuilder {
|
| readAndPushTypeParameterList(node.typeParameters, node);
|
| var supertype = readSupertypeOption();
|
| var mixedInType = readSupertypeOption();
|
| - _fillNonTreeNodeList(node.implementedTypes, readSupertype);
|
| + if (shouldWriteData) {
|
| + _fillNonTreeNodeList(node.implementedTypes, readSupertype);
|
| + } else {
|
| + _skipNodeList(readSupertype);
|
| + }
|
| _mergeNamedNodeList(node.fields, readField, node);
|
| _mergeNamedNodeList(node.constructors, readConstructor, node);
|
| _mergeNamedNodeList(node.procedures, readProcedure, node);
|
| @@ -544,7 +563,11 @@ class BinaryBuilder {
|
| var function = readFunctionNode();
|
| pushVariableDeclarations(function.positionalParameters);
|
| pushVariableDeclarations(function.namedParameters);
|
| - _fillTreeNodeList(node.initializers, readInitializer, node);
|
| + if (shouldWriteData) {
|
| + _fillTreeNodeList(node.initializers, readInitializer, node);
|
| + } else {
|
| + _skipNodeList(readInitializer);
|
| + }
|
| variableStack.length = 0;
|
| var transformerFlags = getAndResetTransformerFlags();
|
| debugPath.removeLast();
|
|
|