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

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

Issue 1092023002: CPS implementation of throw and rethrow. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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 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 92b81e2c76378684c06be9124bad8bbac488b2d4..ae35ea7d9a4d4fe989e40ed45572979103cd8b58 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
@@ -204,6 +204,17 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
printStmt(dummy, "ConcatenateStrings ($args) $kont");
}
+ visitThrow(cps_ir.Throw node) {
+ String dummy = names.name(node);
+ String value = formatReference(node.value);
+ printStmt(dummy, "Throw $value");
+ }
+
+ visitRethrow(cps_ir.Rethrow node) {
+ String dummy = names.name(node);
+ printStmt(dummy, "Rethrow");
+ }
+
visitLiteralList(cps_ir.LiteralList node) {
String dummy = names.name(node);
String values = node.values.map(formatReference).join(', ');
@@ -340,22 +351,24 @@ class IRTracer extends TracerUtil implements cps_ir.Visitor {
return 'GetMutableVariable $variable';
}
- @override
visitReadTypeVariable(cps_ir.ReadTypeVariable node) {
return "ReadTypeVariable ${node.variable.element} "
"${formatReference(node.target)}";
}
- @override
visitReifyRuntimeType(cps_ir.ReifyRuntimeType node) {
return "ReifyRuntimeType ${formatReference(node.value)}";
}
- @override
visitTypeExpression(cps_ir.TypeExpression node) {
return "TypeExpression ${node.dartType} "
"${node.arguments.map(formatReference).join(', ')}";
}
+
+ visitNonTailThrow(cps_ir.NonTailThrow node) {
+ String value = formatReference(node.value);
+ return "NonTailThrow($value)";
+ }
}
/**
@@ -507,6 +520,12 @@ class BlockCollector implements cps_ir.Visitor {
addEdgeToContinuation(exp.continuation);
}
+ visitThrow(cps_ir.Throw exp) {
+ }
+
+ visitRethrow(cps_ir.Rethrow exp) {
+ }
+
visitSetMutableVariable(cps_ir.SetMutableVariable exp) {
visit(exp.body);
}
@@ -590,18 +609,19 @@ class BlockCollector implements cps_ir.Visitor {
unexpectedNode(node);
}
- @override
visitReadTypeVariable(cps_ir.ReadTypeVariable node) {
unexpectedNode(node);
}
- @override
visitReifyRuntimeType(cps_ir.ReifyRuntimeType node) {
unexpectedNode(node);
}
- @override
visitTypeExpression(cps_ir.TypeExpression node) {
unexpectedNode(node);
}
+
+ visitNonTailThrow(cps_ir.NonTailThrow node) {
+ unexpectedNode(node);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698