diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 0cd31080278..4cf71afd19d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -797,7 +797,7 @@ public class ExpressionCodegen extends JetVisitor implem private class ForInRangeLiteralLoopGenerator extends AbstractForLoopGenerator { private final RangeCodegenUtil.BinaryCall rangeCall; - private int lastVar; + protected int endVar; private ForInRangeLiteralLoopGenerator( @NotNull JetForExpression forExpression, @@ -811,18 +811,22 @@ public class ExpressionCodegen extends JetVisitor implem public void beforeLoop() { super.beforeLoop(); + endVar = createLoopTempVariable(asmElementType); + storeRangeStartAndEnd(); + } + + protected void storeRangeStartAndEnd() { gen(rangeCall.left, asmElementType); v.store(loopParameterVar, asmElementType); - lastVar = createLoopTempVariable(asmElementType); gen(rangeCall.right, asmElementType); - v.store(lastVar, asmElementType); + v.store(endVar, asmElementType); } @Override public void conditionAndJump(@NotNull Label loopExit) { v.load(loopParameterVar, asmElementType); - v.load(lastVar, asmElementType); + v.load(endVar, asmElementType); int sort = asmElementType.getSort(); switch (sort) {