Index: pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart b/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart |
index 5a9fe920bf752846a6be785145bd6e74e0699266..ea14f3c948dcce15ea2163b7cea4f4ab3b59b3df 100644 |
--- a/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart |
+++ b/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart |
@@ -2,7 +2,10 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-part of dart2js.cps_ir.optimizers; |
+library dart2js.cps_ir.shrinking_reductions; |
+ |
+import 'cps_ir_nodes.dart'; |
+import 'optimizers.dart'; |
/** |
* [ShrinkingReducer] applies shrinking reductions to CPS terms as described |
@@ -17,9 +20,7 @@ class ShrinkingReducer extends Pass { |
/// Applies shrinking reductions to root, mutating root in the process. |
@override |
- void rewrite(RootNode root) { |
- if (root.isEmpty) return; |
- |
+ void rewrite(FunctionDefinition root) { |
_worklist = new Set<_ReductionTask>(); |
_RedexVisitor redexVisitor = new _RedexVisitor(_worklist); |
@@ -494,33 +495,10 @@ class ParentVisitor extends RecursiveVisitor { |
parameter.parent = node; |
if (parameter is Parameter) parameter.parentIndex = index++; |
}); |
- } |
- |
- processBody(Body node) { |
node.returnContinuation.parent = node; |
node.body.parent = node; |
} |
- processConstructorDefinition(ConstructorDefinition node) { |
- node.body.parent = node; |
- int index = 0; |
- node.parameters.forEach((Definition parameter) { |
- parameter.parent = node; |
- if (parameter is Parameter) parameter.parentIndex = index++; |
- }); |
- node.initializers.forEach((Initializer i) => i.parent = node); |
- } |
- |
- // Expressions. |
- |
- processFieldInitializer(FieldInitializer node) { |
- node.body.parent = node; |
- } |
- |
- processSuperInitializer(SuperInitializer node) { |
- node.arguments.forEach((Body argument) => argument.parent = node); |
- } |
- |
processLetPrim(LetPrim node) { |
node.primitive.parent = node; |
node.body.parent = node; |
@@ -596,12 +574,6 @@ class ParentVisitor extends RecursiveVisitor { |
node.value.parent = node; |
} |
- processDeclareFunction(DeclareFunction node) { |
- node.variable.parent = node; |
- node.definition.parent = node; |
- node.body.parent = node; |
- } |
- |
processThrow(Throw node) { |
node.value.parent = node; |
} |
@@ -610,8 +582,6 @@ class ParentVisitor extends RecursiveVisitor { |
node.continuation.parent = node; |
} |
- // Definitions. |
- |
processLiteralList(LiteralList node) { |
node.values.forEach((Reference ref) => ref.parent = node); |
} |
@@ -636,14 +606,10 @@ class ParentVisitor extends RecursiveVisitor { |
}); |
} |
- // Conditions. |
- |
processIsTrue(IsTrue node) { |
node.value.parent = node; |
} |
- // JavaScript specific nodes. |
- |
processIdentical(Identical node) { |
node.left.parent = node; |
node.right.parent = node; |