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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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/tree_ir/tree_ir_nodes.dart ('k') | pkg/compiler/lib/src/typechecker.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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 tree_ir_tracer; 5 library tree_ir_tracer;
6 6
7 import 'dart:async' show EventSink; 7 import 'dart:async' show EventSink;
8 import '../tracer.dart'; 8 import '../tracer.dart';
9 import 'tree_ir_nodes.dart'; 9 import 'tree_ir_nodes.dart';
10 10
11 class Block { 11 class Block {
12 Label label; 12 Label label;
13 int index; 13 int index;
14
14 /// Mixed list of [Statement] and [Block]. 15 /// Mixed list of [Statement] and [Block].
15 /// A [Block] represents a synthetic goto statement. 16 /// A [Block] represents a synthetic goto statement.
16 final List statements = []; 17 final List statements = [];
17 final List<Block> predecessors = <Block>[]; 18 final List<Block> predecessors = <Block>[];
18 final List<Block> successors = <Block>[]; 19 final List<Block> successors = <Block>[];
19 20
20 /// The catch block associated with the immediately enclosing try block or 21 /// The catch block associated with the immediately enclosing try block or
21 /// `null` if not inside a try block. 22 /// `null` if not inside a try block.
22 Block catcher; 23 Block catcher;
23 24
(...skipping 20 matching lines...) Expand all
44 // (if targets) to blocks. 45 // (if targets) to blocks.
45 final Map<Label, Block> breakTargets = <Label, Block>{}; 46 final Map<Label, Block> breakTargets = <Label, Block>{};
46 final Map<Label, Block> continueTargets = <Label, Block>{}; 47 final Map<Label, Block> continueTargets = <Label, Block>{};
47 final Map<Statement, Block> substatements = <Statement, Block>{}; 48 final Map<Statement, Block> substatements = <Statement, Block>{};
48 49
49 Block catcher; 50 Block catcher;
50 51
51 void _addStatement(Statement statement) { 52 void _addStatement(Statement statement) {
52 blocks.last.statements.add(statement); 53 blocks.last.statements.add(statement);
53 } 54 }
55
54 void _addGotoStatement(Block target) { 56 void _addGotoStatement(Block target) {
55 blocks.last.statements.add(target); 57 blocks.last.statements.add(target);
56 } 58 }
57 59
58 void _addBlock(Block block) { 60 void _addBlock(Block block) {
59 block.index = blocks.length; 61 block.index = blocks.length;
60 block.catcher = catcher; 62 block.catcher = catcher;
61 blocks.add(block); 63 blocks.add(block);
62 } 64 }
63 65
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 printProperty("size", 0); 225 printProperty("size", 0);
224 printProperty("method", "None"); 226 printProperty("method", "None");
225 }); 227 });
226 }); 228 });
227 tag("HIR", () { 229 tag("HIR", () {
228 if (block.isEntryPoint) { 230 if (block.isEntryPoint) {
229 String params = parameters.map(names.varName).join(', '); 231 String params = parameters.map(names.varName).join(', ');
230 printStatement(null, 'Entry ($params)'); 232 printStatement(null, 'Entry ($params)');
231 } 233 }
232 if (block.label != null) { 234 if (block.label != null) {
233 printStatement(null, 235 printStatement(
234 "Label ${block.name}, useCount=${block.label.useCount}"); 236 null, "Label ${block.name}, useCount=${block.label.useCount}");
235 } 237 }
236 if (block.catcher != null) { 238 if (block.catcher != null) {
237 printStatement(null, 'Catch exceptions at ${block.catcher.name}'); 239 printStatement(null, 'Catch exceptions at ${block.catcher.name}');
238 } 240 }
239 block.statements.forEach(visitBlockMember); 241 block.statements.forEach(visitBlockMember);
240 }); 242 });
241 }); 243 });
242 } 244 }
243 245
244 void visitBlockMember(member) { 246 void visitBlockMember(member) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 printStatement(null, "unreachable"); 278 printStatement(null, "unreachable");
277 } 279 }
278 280
279 visitBreak(Break node) { 281 visitBreak(Break node) {
280 Block block = collector.breakTargets[node.target]; 282 Block block = collector.breakTargets[node.target];
281 String name = block != null ? block.name : '<missing label>'; 283 String name = block != null ? block.name : '<missing label>';
282 printStatement(null, "break $name"); 284 printStatement(null, "break $name");
283 } 285 }
284 286
285 visitContinue(Continue node) { 287 visitContinue(Continue node) {
286 printStatement(null, 288 printStatement(
287 "continue ${collector.continueTargets[node.target].name}"); 289 null, "continue ${collector.continueTargets[node.target].name}");
288 } 290 }
289 291
290 visitIf(If node) { 292 visitIf(If node) {
291 String condition = expr(node.condition); 293 String condition = expr(node.condition);
292 String thenTarget = collector.substatements[node.thenStatement].name; 294 String thenTarget = collector.substatements[node.thenStatement].name;
293 String elseTarget = collector.substatements[node.elseStatement].name; 295 String elseTarget = collector.substatements[node.elseStatement].name;
294 printStatement(null, "if $condition then $thenTarget else $elseTarget"); 296 printStatement(null, "if $condition then $thenTarget else $elseTarget");
295 } 297 }
296 298
297 visitWhileTrue(WhileTrue node) { 299 visitWhileTrue(WhileTrue node) {
298 printStatement(null, "while true do"); 300 printStatement(null, "while true do");
299 } 301 }
300 302
301 visitFor(For node) { 303 visitFor(For node) {
302 String bodyTarget = collector.substatements[node.body].name; 304 String bodyTarget = collector.substatements[node.body].name;
303 String nextTarget = collector.substatements[node.next].name; 305 String nextTarget = collector.substatements[node.next].name;
304 String updates = node.updates.map(expr).join(', '); 306 String updates = node.updates.map(expr).join(', ');
305 printStatement(null, "while ${expr(node.condition)}"); 307 printStatement(null, "while ${expr(node.condition)}");
306 printStatement(null, "do $bodyTarget"); 308 printStatement(null, "do $bodyTarget");
307 printStatement(null, "updates ($updates)"); 309 printStatement(null, "updates ($updates)");
308 printStatement(null, "then $nextTarget" ); 310 printStatement(null, "then $nextTarget");
309 } 311 }
310 312
311 visitTry(Try node) { 313 visitTry(Try node) {
312 String tryTarget = collector.substatements[node.tryBody].name; 314 String tryTarget = collector.substatements[node.tryBody].name;
313 String catchParams = node.catchParameters.map(names.varName).join(','); 315 String catchParams = node.catchParameters.map(names.varName).join(',');
314 String catchTarget = collector.substatements[node.catchBody].name; 316 String catchTarget = collector.substatements[node.catchBody].name;
315 printStatement(null, 'try $tryTarget catch($catchParams) $catchTarget'); 317 printStatement(null, 'try $tryTarget catch($catchParams) $catchTarget');
316 } 318 }
317 319
318 visitExpressionStatement(ExpressionStatement node) { 320 visitExpressionStatement(ExpressionStatement node) {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 String visitConstant(Constant node) { 419 String visitConstant(Constant node) {
418 return "${node.value.toStructuredString()}"; 420 return "${node.value.toStructuredString()}";
419 } 421 }
420 422
421 String visitThis(This node) { 423 String visitThis(This node) {
422 return "this"; 424 return "this";
423 } 425 }
424 426
425 static bool usesInfixNotation(Expression node) { 427 static bool usesInfixNotation(Expression node) {
426 return node is Conditional || 428 return node is Conditional ||
427 node is LogicalOperator || 429 node is LogicalOperator ||
428 node is Assign || 430 node is Assign ||
429 node is SetField; 431 node is SetField;
430 } 432 }
431 433
432 String visitConditional(Conditional node) { 434 String visitConditional(Conditional node) {
433 String condition = visitExpression(node.condition); 435 String condition = visitExpression(node.condition);
434 String thenExpr = visitExpression(node.thenExpression); 436 String thenExpr = visitExpression(node.thenExpression);
435 String elseExpr = visitExpression(node.elseExpression); 437 String elseExpr = visitExpression(node.elseExpression);
436 return "$condition ? $thenExpr : $elseExpr"; 438 return "$condition ? $thenExpr : $elseExpr";
437 } 439 }
438 440
439 String visitLogicalOperator(LogicalOperator node) { 441 String visitLogicalOperator(LogicalOperator node) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 String prefix = v.element == null ? 'v' : '${v.element.name}_'; 612 String prefix = v.element == null ? 'v' : '${v.element.name}_';
611 while (name == null || _usedNames.contains(name)) { 613 while (name == null || _usedNames.contains(name)) {
612 name = "$prefix${_counter++}"; 614 name = "$prefix${_counter++}";
613 } 615 }
614 _names[v] = name; 616 _names[v] = name;
615 _usedNames.add(name); 617 _usedNames.add(name);
616 } 618 }
617 return name; 619 return name;
618 } 620 }
619 } 621 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart ('k') | pkg/compiler/lib/src/typechecker.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698