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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart

Issue 787603003: Generative constructors in the new dart backend. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years 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 side-by-side diff with in-line comments
Download patch
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 d9efa8322675a962d8558acf7d1b3d882c622718..3cb5ed7535afa1098a1234f8320cacbc6ad7b3d9 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
@@ -36,7 +36,9 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
BlockCollector builder = new BlockCollector(names);
builder.visit(node);
- printNode(builder.entry);
+ for (Block block in builder.entries) {
+ printNode(block);
+ }
for (Block block in builder.cont2block.values) {
printNode(block);
}
@@ -50,6 +52,12 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
}
visitFunctionDefinition(cps_ir.FunctionDefinition node) {
+ if (node.isAbstract) return;
+ visitExecutableDefinition(node);
+ }
+
+ visitConstructorDefinition(cps_ir.ConstructorDefinition node) {
+ if (node.isAbstract) return;
visitExecutableDefinition(node);
}
@@ -266,11 +274,14 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
return 'GetClosureVariable $variable';
}
-
+ visitRunnableBody(cps_ir.RunnableBody node) {}
+ visitFieldInitializer(cps_ir.FieldInitializer node) {}
+ visitSuperInitializer(cps_ir.SuperInitializer node) {}
visitCondition(cps_ir.Condition c) {}
visitExpression(cps_ir.Expression e) {}
visitPrimitive(cps_ir.Primitive p) {}
visitDefinition(cps_ir.Definition d) {}
+ visitInitializer(cps_ir.Initializer i) {}
visitNode(cps_ir.Node n) {}
}
@@ -328,9 +339,9 @@ class Block {
}
class BlockCollector extends cps_ir.Visitor {
- Block entry;
final Map<cps_ir.Continuation, Block> cont2block =
<cps_ir.Continuation, Block>{};
+ final Set<Block> entries = new Set<Block>();
Block current_block;
Names names;
@@ -345,8 +356,21 @@ class BlockCollector extends cps_ir.Visitor {
return block;
}
+ visitRunnableBody(cps_ir.RunnableBody node) {
+ current_block = new Block(names.name(node), [], node.body);
+ entries.add(current_block);
+ visit(node.body);
+ }
+
+ visitFieldInitializer(cps_ir.FieldInitializer node) {
+ visit(node.body);
+ }
+
+ visitSuperInitializer(cps_ir.SuperInitializer node) {
+ node.arguments.forEach(visit);
+ }
+
visitExecutableDefinition(cps_ir.ExecutableDefinition node) {
- entry = current_block = new Block(names.name(node), [], node.body);
visit(node.body);
}
@@ -360,6 +384,10 @@ class BlockCollector extends cps_ir.Visitor {
visitExecutableDefinition(node);
}
+ visitConstructorDefinition(cps_ir.ConstructorDefinition node) {
+ visitExecutableDefinition(node);
+ }
+
visitLetPrim(cps_ir.LetPrim exp) {
visit(exp.body);
}

Powered by Google App Engine
This is Rietveld 408576698