| Index: pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart b/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
|
| index b9b6b09c378c616acfcca8d7b99027923a292bfc..0c70e67964a3d926e932756a845227bad669b10c 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
|
| @@ -48,8 +48,6 @@ class ScalarReplacer extends Pass {
|
|
|
| @override
|
| void rewrite(FunctionDefinition root) {
|
| - // Set all parent pointers.
|
| - new ParentVisitor().visit(root);
|
| ScalarReplacementVisitor analyzer =
|
| new ScalarReplacementVisitor(_internalError, _classWorld);
|
| analyzer.analyze(root);
|
| @@ -61,7 +59,7 @@ class ScalarReplacer extends Pass {
|
| * Do scalar replacement of aggregates on instances. Since scalar replacement
|
| * can create new candidiates, iterate until all scalar replacements are done.
|
| */
|
| -class ScalarReplacementVisitor extends RecursiveVisitor {
|
| +class ScalarReplacementVisitor extends TrampolineRecursiveVisitor {
|
|
|
| final dart2js.InternalErrorFunction internalError;
|
| final World classWorld;
|
| @@ -192,6 +190,7 @@ class ScalarReplacementVisitor extends RecursiveVisitor {
|
| void replacePrimitive(Primitive old, Primitive primitive) {
|
| LetPrim letPrim = old.parent;
|
| letPrim.primitive = primitive;
|
| + primitive.parent = letPrim;
|
| }
|
|
|
| void deleteLetPrimOf(Primitive primitive) {
|
| @@ -233,7 +232,7 @@ class ScalarReplacementVisitor extends RecursiveVisitor {
|
|
|
| /// Visit a just-deleted subterm and unlink all [Reference]s in it. Reconsider
|
| /// allocations for scalar replacement.
|
| -class ScalarReplacementRemovalVisitor extends RecursiveVisitor {
|
| +class ScalarReplacementRemovalVisitor extends TrampolineRecursiveVisitor {
|
| ScalarReplacementVisitor process;
|
|
|
| ScalarReplacementRemovalVisitor(this.process);
|
|
|