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

Unified Diff: sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart

Issue 312793002: dart2dart: Preserve variable names throughout the IR. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Properly linearize phi assignments, remove unused write count Created 6 years, 6 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: sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
index 134a8bd4cc21f252a52702a669d409357570be9f..192a07e45c38df49e8006dddde548bbf355a660f 100644
--- a/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
+++ b/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
@@ -9,6 +9,7 @@ import '../tracer.dart';
import 'dart_tree.dart';
class Block {
+ Label label;
int index;
final List<Statement> statements = <Statement>[];
final List<Block> predecessors = <Block>[];
@@ -16,6 +17,8 @@ class Block {
String get name => 'B$index';
+ Block([this.label]);
+
void addEdgeTo(Block successor) {
successors.add(successor);
successor.predecessors.add(this);
@@ -60,7 +63,7 @@ class BlockCollector extends Visitor {
visitNot(Not node) {}
visitLabeledStatement(LabeledStatement node) {
- Block target = new Block();
+ Block target = new Block(node.label);
breakTargets[node.label] = target;
visitStatement(node.body);
_addBlock(target);
@@ -153,6 +156,10 @@ class TreeTracer extends TracerUtil with Visitor {
});
});
tag("HIR", () {
+ if (block.label != null) {
+ printStatement(null,
+ "Label ${block.name}, breakCount=${block.label.breakCount}");
+ }
block.statements.forEach(visitStatement);
});
});
@@ -187,7 +194,8 @@ class TreeTracer extends TracerUtil with Visitor {
visitAssign(Assign node) {
String name = names.varName(node.variable);
String rhs = expr(node.definition);
- printStatement(name, "let $name = $rhs");
+ String extra = node.hasExactlyOneUse ? "[single-use]" : "";
+ printStatement(null, "assign $name = $rhs $extra");
}
visitInvokeMethod(InvokeMethod node) {
@@ -236,7 +244,7 @@ class TreeTracer extends TracerUtil with Visitor {
visitContinue(Continue node) {
printStatement(null,
- "continue ${collector.breakTargets[node.target].name}");
+ "continue ${collector.continueTargets[node.target].name}");
}
visitIf(If node) {
@@ -404,12 +412,9 @@ class Names {
String varName(Variable v) {
String name = _names[v];
if (name == null) {
- name = v.name;
- if (v.cachedName != null) {
- name = v.cachedName;
- }
+ String prefix = v.element == null ? 'v' : '${v.element.name}_';
while (name == null || _usedNames.contains(name)) {
- name = "v${_counter++}";
+ name = "$prefix${_counter++}";
}
_names[v] = name;
_usedNames.add(name);

Powered by Google App Engine
This is Rietveld 408576698