Chromium Code Reviews| Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
| index d804f448911c40d868fd12137f4d539873529d52..ee22d98d389973857ab747c28f64ca34f9acc0bb 100644 |
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
| @@ -1866,7 +1866,8 @@ abstract class IrBuilder { |
| List<ir.Parameter> catchParameters = |
| <ir.Parameter>[exceptionParameter, traceParameter]; |
| ir.Continuation catchContinuation = new ir.Continuation(catchParameters); |
| - catchContinuation.body = catchBody; |
| + catchBuilder.add(catchBody); |
| + catchContinuation.body = catchBuilder._root; |
|
asgerf
2015/05/19 09:54:55
The fragment in catchBuilder was previously lost i
|
| tryCatchBuilder.add( |
| new ir.LetHandler(catchContinuation, tryBuilder._root)); |
| @@ -2482,6 +2483,8 @@ class JsIrBuilder extends IrBuilder { |
| location.field); |
| result.useElementAsHint(local); |
| return addPrimitive(result); |
| + } else if (isInMutableVariable(local)) { |
| + return addPrimitive(new ir.GetMutableVariable(getMutableVariable(local))); |
|
asgerf
2015/05/19 09:54:55
This is independent of the other change.
|
| } else { |
| return environment.lookup(local); |
| } |
| @@ -2497,6 +2500,8 @@ class JsIrBuilder extends IrBuilder { |
| add(new ir.SetField(environment.lookup(location.box), |
| location.field, |
| value)); |
| + } else if (isInMutableVariable(local)) { |
| + add(new ir.SetMutableVariable(getMutableVariable(local), value)); |
| } else { |
| value.useElementAsHint(local); |
| environment.update(local, value); |