| 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;
|
|
|