| Index: pkg/compiler/lib/src/ssa/locals_handler.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/locals_handler.dart b/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| index d75549764b314e63f7e0e868a3035dcd6211d2e6..5e0266b75c2b957f73e8e08fdadf53e097a66a25 100644
|
| --- a/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| +++ b/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| @@ -130,7 +130,7 @@ class LocalsHandler {
|
| assert(isStoredInClosureField(from) || isBoxed(from));
|
| }
|
|
|
| - HInstruction createBox() {
|
| + HInstruction createBoxObject() {
|
| HInstruction box = new HCreateBox(commonMasks.nonNullType);
|
| builder.add(box);
|
| return box;
|
| @@ -142,18 +142,19 @@ class LocalsHandler {
|
| {bool forGenerativeConstructorBody: false}) {
|
| // See if any variable in the top-scope of the function is captured. If yes
|
| // we need to create a box-object.
|
| - if (!closureInfo.requiresContextBox) return;
|
| - HInstruction box;
|
| + if (!closureInfo.hasBox) return;
|
| + HInstruction boxObject;
|
| // The scope has captured variables.
|
| if (forGenerativeConstructorBody) {
|
| // The box is passed as a parameter to a generative
|
| // constructor body.
|
| - box = builder.addParameter(closureInfo.context, commonMasks.nonNullType);
|
| + boxObject =
|
| + builder.addParameter(closureInfo.box, commonMasks.nonNullType);
|
| } else {
|
| - box = createBox();
|
| + boxObject = createBoxObject();
|
| }
|
| // Add the box to the known locals.
|
| - directLocals[closureInfo.context] = box;
|
| + directLocals[closureInfo.box] = boxObject;
|
| // Make sure that accesses to the boxed locals go into the box. We also
|
| // need to make sure that parameters are copied into the box if necessary.
|
| closureInfo.forEachBoxedVariable((_from, _to) {
|
| @@ -190,7 +191,7 @@ class LocalsHandler {
|
| // Create a new box and copy over the values from the old box into the
|
| // new one.
|
| HInstruction oldBox = readLocal(currentBox);
|
| - HInstruction newBox = createBox();
|
| + HInstruction newBox = createBoxObject();
|
| for (Local boxedVariable in toBeCopiedElements) {
|
| // [readLocal] uses the [currentBox] to find its box. By replacing it
|
| // behind its back we can still get to the old values.
|
| @@ -551,7 +552,7 @@ class LocalsHandler {
|
| // In all other cases a new box will be created when entering the body of
|
| // the next iteration.
|
| if (loopInfo.hasBoxedLoopVariables) {
|
| - updateCaptureBox(loopInfo.context, loopInfo.boxedLoopVariables);
|
| + updateCaptureBox(loopInfo.box, loopInfo.boxedLoopVariables);
|
| }
|
| }
|
|
|
|
|