Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart

Issue 1967073002: Check closure data for serialization (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/compiler/lib/src/serialization/modelz.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.serialization.resolved_ast; 5 library dart2js.serialization.resolved_ast;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/resolution.dart'; 8 import '../common/resolution.dart';
9 import '../constants/expressions.dart'; 9 import '../constants/expressions.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 FunctionExpression functionExpression = root.asFunctionExpression(); 139 FunctionExpression functionExpression = root.asFunctionExpression();
140 if (functionExpression.getOrSet != null) { 140 if (functionExpression.getOrSet != null) {
141 // Getters/setters need the get/set token to be parsed. 141 // Getters/setters need the get/set token to be parsed.
142 objectEncoder.setInt( 142 objectEncoder.setInt(
143 Key.GET_OR_SET, functionExpression.getOrSet.charOffset); 143 Key.GET_OR_SET, functionExpression.getOrSet.charOffset);
144 } 144 }
145 } 145 }
146 } 146 }
147 objectEncoder.setEnum(Key.SUB_KIND, kind); 147 objectEncoder.setEnum(Key.SUB_KIND, kind);
148 root.accept(indexComputer); 148 root.accept(indexComputer);
149 objectEncoder.setBool(Key.CONTAINS_TRY, elements.containsTryStatement);
149 if (resolvedAst.body != null) { 150 if (resolvedAst.body != null) {
150 int index = nodeIndices[resolvedAst.body]; 151 int index = nodeIndices[resolvedAst.body];
151 assert(invariant(element, index != null, 152 assert(invariant(element, index != null,
152 message: 153 message: "No index for body of $element: "
153 "No index for body of $element: ${resolvedAst.body} ($nodeIndices) .")); 154 "${resolvedAst.body} ($nodeIndices)."));
154 objectEncoder.setInt(Key.BODY, index); 155 objectEncoder.setInt(Key.BODY, index);
155 } 156 }
156 root.accept(this); 157 root.accept(this);
157 if (jumpTargetMap.isNotEmpty) { 158 if (jumpTargetMap.isNotEmpty) {
158 ListEncoder list = objectEncoder.createList(Key.JUMP_TARGETS); 159 ListEncoder list = objectEncoder.createList(Key.JUMP_TARGETS);
159 for (JumpTarget jumpTarget in jumpTargetMap.keys) { 160 for (JumpTarget jumpTarget in jumpTargetMap.keys) {
160 serializeJumpTarget(jumpTarget, list.createObject()); 161 serializeJumpTarget(jumpTarget, list.createObject());
161 } 162 }
162 } 163 }
163 if (labelDefinitionMap.isNotEmpty) { 164 if (labelDefinitionMap.isNotEmpty) {
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 } 522 }
522 } 523 }
523 524
524 AstKind kind = objectDecoder.getEnum(Key.SUB_KIND, AstKind.values); 525 AstKind kind = objectDecoder.getEnum(Key.SUB_KIND, AstKind.values);
525 Node root = computeNode(kind); 526 Node root = computeNode(kind);
526 TreeElementMapping elements = new TreeElementMapping(element); 527 TreeElementMapping elements = new TreeElementMapping(element);
527 AstIndexComputer indexComputer = new AstIndexComputer(); 528 AstIndexComputer indexComputer = new AstIndexComputer();
528 Map<Node, int> nodeIndices = indexComputer.nodeIndices; 529 Map<Node, int> nodeIndices = indexComputer.nodeIndices;
529 List<Node> nodeList = indexComputer.nodeList; 530 List<Node> nodeList = indexComputer.nodeList;
530 root.accept(indexComputer); 531 root.accept(indexComputer);
532 elements.containsTryStatement = objectDecoder.getBool(Key.CONTAINS_TRY);
533
531 Node body; 534 Node body;
532 int bodyNodeIndex = objectDecoder.getInt(Key.BODY, isOptional: true); 535 int bodyNodeIndex = objectDecoder.getInt(Key.BODY, isOptional: true);
533 if (bodyNodeIndex != null) { 536 if (bodyNodeIndex != null) {
534 assert(invariant(element, bodyNodeIndex < nodeList.length, 537 assert(invariant(element, bodyNodeIndex < nodeList.length,
535 message: "Body node index ${bodyNodeIndex} out of range. " 538 message: "Body node index ${bodyNodeIndex} out of range. "
536 "Node count: ${nodeList.length}")); 539 "Node count: ${nodeList.length}"));
537 body = nodeList[bodyNodeIndex]; 540 body = nodeList[bodyNodeIndex];
538 } 541 }
539 542
540 List<JumpTarget> jumpTargets = <JumpTarget>[]; 543 List<JumpTarget> jumpTargets = <JumpTarget>[];
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 } 685 }
683 assert(invariant(element, !resolvedAstMap.containsKey(element), 686 assert(invariant(element, !resolvedAstMap.containsKey(element),
684 message: "ResolvedAst has already been computed for $element.")); 687 message: "ResolvedAst has already been computed for $element."));
685 resolvedAstMap[element] = 688 resolvedAstMap[element] =
686 new ParsedResolvedAst(element, root, body, elements, uri); 689 new ParsedResolvedAst(element, root, body, elements, uri);
687 } 690 }
688 } 691 }
689 692
690 const Key PARAMETER_NODE = const Key('parameter.node'); 693 const Key PARAMETER_NODE = const Key('parameter.node');
691 const Key PARAMETER_INITIALIZER = const Key('parameter.initializer'); 694 const Key PARAMETER_INITIALIZER = const Key('parameter.initializer');
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/serialization/modelz.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698