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 c68ce94770cdca468927646e77f4d66f25054964..c4d5f1f0fd53144106b4512c83a93d530d9b637d 100644 |
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart |
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart |
@@ -251,6 +251,31 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor { |
return "IsTrue(${names.name(node.value.definition)})"; |
} |
+ visitSetField(cps_ir.SetField node) { |
+ String dummy = names.name(node); |
+ String object = formatReference(node.object); |
+ String field = node.field.name; |
+ String value = formatReference(node.value); |
+ printStmt(dummy, 'SetField $object.$field = $value'); |
+ visit(node.body); |
+ } |
+ |
+ visitGetField(cps_ir.GetField node) { |
+ String object = formatReference(node.object); |
+ String field = node.field.name; |
+ return 'GetField($object.$field)'; |
+ } |
+ |
+ visitCreateBox(cps_ir.CreateBox node) { |
+ return 'CreateBox'; |
+ } |
+ |
+ visitCreateClosureClass(cps_ir.CreateClosureClass node) { |
+ String className = node.classElement.name; |
+ String arguments = node.arguments.map(formatReference).join(', '); |
+ return 'CreateClosureClass $className ($arguments)'; |
+ } |
+ |
visitIdentical(cps_ir.Identical node) { |
String left = formatReference(node.left); |
String right = formatReference(node.right); |
@@ -258,7 +283,7 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor { |
} |
visitInterceptor(cps_ir.Interceptor node) { |
- return "Interceptor(${node.input})"; |
+ return "Interceptor(${formatReference(node.input)})"; |
} |
visitThis(cps_ir.This node) { |
@@ -432,6 +457,10 @@ class BlockCollector extends cps_ir.Visitor { |
visit(exp.body); |
} |
+ visitSetField(cps_ir.SetField exp) { |
+ visit(exp.body); |
+ } |
+ |
visitDeclareFunction(cps_ir.DeclareFunction exp) { |
visit(exp.body); |
} |