| Index: pkg/compiler/lib/src/cps_ir/mutable_ssa.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/mutable_ssa.dart b/pkg/compiler/lib/src/cps_ir/mutable_ssa.dart
|
| index abf85cd611c1bec8c1aaf9436bd15871af01e08a..690172b8ff8a915846590a9b4d6c771041c199c2 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/mutable_ssa.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/mutable_ssa.dart
|
| @@ -155,15 +155,17 @@ class MutableVariableEliminator implements Pass {
|
| // Remove the mutable variable binding.
|
| node.value.unlink();
|
| removeNode(node);
|
| - } else if (node is SetMutableVariable &&
|
| - shouldRewrite(node.variable.definition)) {
|
| - // As above, update the environment, preserve variables and remove
|
| - // the mutable variable assignment.
|
| - MutableVariable variable = node.variable.definition;
|
| - environment[variable] = node.value.definition;
|
| - mergeHints(variable, node.value.definition);
|
| - node.value.unlink();
|
| - removeNode(node);
|
| + } else if (node is LetPrim && node.primitive is SetMutableVariable) {
|
| + SetMutableVariable setter = node.primitive;
|
| + MutableVariable variable = setter.variable.definition;
|
| + if (shouldRewrite(variable)) {
|
| + // As above, update the environment, preserve variables and remove
|
| + // the mutable variable assignment.
|
| + environment[variable] = setter.value.definition;
|
| + mergeHints(variable, setter.value.definition);
|
| + setter.value.unlink();
|
| + removeNode(node);
|
| + }
|
| } else if (node is LetPrim && node.primitive is GetMutableVariable) {
|
| GetMutableVariable getter = node.primitive;
|
| MutableVariable variable = getter.variable.definition;
|
|
|