Replace increment with step in For Loop codegen for progressions
This commit is contained in:
@@ -765,13 +765,6 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
v.invokevirtual(loopRangeType.getInternalName(), getterName, "()" + elementType.getDescriptor(), false);
|
v.invokevirtual(loopRangeType.getInternalName(), getterName, "()" + elementType.getDescriptor(), false);
|
||||||
v.store(varToStore, elementType);
|
v.store(varToStore, elementType);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateRangeOrProgressionBoxedProperty(Type loopRangeType, String getterName, Type elementType, int varToStore) {
|
|
||||||
Type boxedType = boxType(elementType);
|
|
||||||
v.invokevirtual(loopRangeType.getInternalName(), getterName, "()" + boxedType.getDescriptor(), false);
|
|
||||||
StackValue.coerce(boxedType, elementType, v);
|
|
||||||
v.store(varToStore, elementType);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateLoopBody(@Nullable KtExpression body) {
|
private void generateLoopBody(@Nullable KtExpression body) {
|
||||||
@@ -1084,7 +1077,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
|
|
||||||
generateRangeOrProgressionProperty(asmLoopRangeType, "getFirst", asmElementType, loopParameterVar);
|
generateRangeOrProgressionProperty(asmLoopRangeType, "getFirst", asmElementType, loopParameterVar);
|
||||||
generateRangeOrProgressionProperty(asmLoopRangeType, "getLast", asmElementType, endVar);
|
generateRangeOrProgressionProperty(asmLoopRangeType, "getLast", asmElementType, endVar);
|
||||||
generateRangeOrProgressionBoxedProperty(asmLoopRangeType, "getIncrement", incrementType, incrementVar);
|
generateRangeOrProgressionProperty(asmLoopRangeType, "getStep", incrementType, incrementVar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ fun f() {
|
|||||||
// 0 iterator
|
// 0 iterator
|
||||||
// 2 getFirst
|
// 2 getFirst
|
||||||
// 2 getLast
|
// 2 getLast
|
||||||
// 2 getIncrement
|
// 2 getStep
|
||||||
Reference in New Issue
Block a user