Index: pkg/compiler/lib/src/cps_ir/type_propagation.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/type_propagation.dart b/pkg/compiler/lib/src/cps_ir/type_propagation.dart |
index 7f788189c94067f1bc2290eec4351887202fa743..c732db2c46ac29f33b5b47cfddb24a5afedcd569 100644 |
--- a/pkg/compiler/lib/src/cps_ir/type_propagation.dart |
+++ b/pkg/compiler/lib/src/cps_ir/type_propagation.dart |
@@ -832,12 +832,13 @@ class TransformingVisitor extends RecursiveVisitor { |
if (target.isFinal) return false; |
assert(cont.parameters.single.hasNoUses); |
cont.parameters.clear(); |
- SetField set = new SetField(getDartReceiver(node), |
- target, |
- getDartArgument(node, 0)); |
- set.body = new InvokeContinuation(cont, <Primitive>[]); |
- replaceSubtree(node, set); |
- visitSetField(set); |
+ CpsFragment cps = new CpsFragment(node.sourceInformation); |
+ cps.letPrim(new SetField(getDartReceiver(node), |
+ target, |
+ getDartArgument(node, 0))); |
+ cps.invokeContinuation(cont); |
+ replaceSubtree(node, cps.result); |
+ visit(cps.result); |
return true; |
} |
} |
@@ -2008,7 +2009,6 @@ class TypePropagationVisitor implements Visitor { |
void visitSetMutableVariable(SetMutableVariable node) { |
setValue(node.variable.definition, getValue(node.value.definition)); |
- setReachable(node.body); |
} |
void visitLiteralList(LiteralList node) { |
@@ -2096,9 +2096,7 @@ class TypePropagationVisitor implements Visitor { |
} |
} |
- void visitSetStatic(SetStatic node) { |
- setReachable(node.body); |
- } |
+ void visitSetStatic(SetStatic node) {} |
void visitGetLazyStatic(GetLazyStatic node) { |
Continuation cont = node.continuation.definition; |
@@ -2126,9 +2124,7 @@ class TypePropagationVisitor implements Visitor { |
setValue(node, nonConstant(typeSystem.getFieldType(node.field))); |
} |
- void visitSetField(SetField node) { |
- setReachable(node.body); |
- } |
+ void visitSetField(SetField node) {} |
void visitCreateBox(CreateBox node) { |
setValue(node, nonConstant(typeSystem.nonNullType)); |