| Index: pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
|
| index e2b906912415c30c9c21fe21d36ce5aee5f73605..5a6431ad261b6f515e0ea08173077d99971fa96f 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
|
| @@ -21,20 +21,20 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
|
|
|
| visit(cps_ir.Node node) => node.accept(this);
|
|
|
| - void traceGraph(String name, cps_ir.FunctionDefinition graph) {
|
| + void traceGraph(String name, cps_ir.ExecutableDefinition graph) {
|
| tag("cfg", () {
|
| printProperty("name", name);
|
| - visitFunctionDefinition(graph);
|
| + visit(graph);
|
| });
|
| }
|
|
|
| // Temporary field used during tree walk
|
| Names names;
|
|
|
| - visitFunctionDefinition(cps_ir.FunctionDefinition f) {
|
| + visitExecutableDefinition(cps_ir.ExecutableDefinition node) {
|
| names = new Names();
|
| BlockCollector builder = new BlockCollector(names);
|
| - builder.visit(f);
|
| + builder.visit(node);
|
|
|
| printNode(builder.entry);
|
| for (Block block in builder.cont2block.values) {
|
| @@ -43,6 +43,14 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
|
| names = null;
|
| }
|
|
|
| + visitFieldDefinition(cps_ir.FieldDefinition node) {
|
| + visitExecutableDefinition(node);
|
| + }
|
| +
|
| + visitFunctionDefinition(cps_ir.FunctionDefinition node) {
|
| + visitExecutableDefinition(node);
|
| + }
|
| +
|
| int countUses(cps_ir.Definition definition) {
|
| int count = 0;
|
| cps_ir.Reference ref = definition.firstRef;
|
| @@ -329,9 +337,17 @@ class BlockCollector extends cps_ir.Visitor {
|
| return block;
|
| }
|
|
|
| - visitFunctionDefinition(cps_ir.FunctionDefinition f) {
|
| - entry = current_block = new Block(names.name(f), [], f.body);
|
| - visit(f.body);
|
| + visitExecutableDefinition(cps_ir.ExecutableDefinition node) {
|
| + entry = current_block = new Block(names.name(node), [], node.body);
|
| + visit(node.body);
|
| + }
|
| +
|
| + visitFieldDefinition(cps_ir.FieldDefinition node) {
|
| + visitExecutableDefinition(node);
|
| + }
|
| +
|
| + visitFunctionDefinition(cps_ir.FunctionDefinition node) {
|
| + visitExecutableDefinition(node);
|
| }
|
|
|
| visitLetPrim(cps_ir.LetPrim exp) {
|
|
|