| Index: pkg/compiler/lib/src/cps_ir/insert_refinements.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/insert_refinements.dart b/pkg/compiler/lib/src/cps_ir/insert_refinements.dart
|
| index ec12543275f6e585eb251b777b09d364a4ace61f..afea3976dee6bb0de887eee47d1d8de6b271ba79 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/insert_refinements.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/insert_refinements.dart
|
| @@ -68,17 +68,9 @@ class InsertRefinements extends RecursiveVisitor implements Pass {
|
| let = new LetCont(cont, null);
|
| cont.parent = let;
|
| } else {
|
| - // Remove LetCont from current position.
|
| - InteriorNode letParent = let.parent;
|
| - letParent.body = let.body;
|
| - let.body.parent = letParent;
|
| + let.remove(); // Reuse the existing LetCont.
|
| }
|
| -
|
| - // Insert LetCont before use.
|
| - useParent.body = let;
|
| - let.body = use;
|
| - use.parent = let;
|
| - let.parent = useParent;
|
| + let.insertAbove(use);
|
| }
|
|
|
| Primitive unfoldInterceptor(Primitive prim) {
|
| @@ -94,11 +86,11 @@ class InsertRefinements extends RecursiveVisitor implements Pass {
|
| refinementFor[value] = currentRefinement;
|
| if (refined.hasNoUses) {
|
| // Clean up refinements that are not used.
|
| - refined.value.unlink();
|
| + refined.destroy();
|
| } else {
|
| - cont.body = new LetPrim(refined, cont.body);
|
| - refined.parent = cont.body;
|
| - refined.value.parent = refined;
|
| + LetPrim let = new LetPrim(refined);
|
| + refined.parent = let;
|
| + let.insertBelow(cont);
|
| }
|
| });
|
| push(cont);
|
|
|