Code cleanup: unnecessary local variable applied
This commit is contained in:
+2
-6
@@ -126,9 +126,7 @@ class LocalFunctionsLowering(val context: BackendContext): DeclarationContainerL
|
||||
|
||||
val newCallee = localFunctionData.transformedDescriptor
|
||||
|
||||
val newCall = createNewCall(expression, newCallee).fillArguments(localFunctionData, expression)
|
||||
|
||||
return newCall
|
||||
return createNewCall(expression, newCallee).fillArguments(localFunctionData, expression)
|
||||
}
|
||||
|
||||
private fun <T : IrMemberAccessExpression> T.fillArguments(calleeContext: LocalFunctionContext, oldExpression: IrMemberAccessExpression): T {
|
||||
@@ -160,15 +158,13 @@ class LocalFunctionsLowering(val context: BackendContext): DeclarationContainerL
|
||||
val localFunctionData = localFunctions[oldCallee] ?: return expression
|
||||
val newCallee = localFunctionData.transformedDescriptor
|
||||
|
||||
val newCallableReference = IrFunctionReferenceImpl(
|
||||
return IrFunctionReferenceImpl(
|
||||
expression.startOffset, expression.endOffset,
|
||||
expression.type, // TODO functional type for transformed descriptor
|
||||
newCallee,
|
||||
remapTypeArguments(expression, newCallee),
|
||||
expression.origin
|
||||
).fillArguments(localFunctionData, expression)
|
||||
|
||||
return newCallableReference
|
||||
}
|
||||
|
||||
override fun visitReturn(expression: IrReturn): IrExpression {
|
||||
|
||||
+3
-5
@@ -341,10 +341,9 @@ class ExpressionCodegen(
|
||||
}
|
||||
|
||||
private fun findLocalIndex(descriptor: CallableDescriptor): Int {
|
||||
val index = frame.getIndex(descriptor).apply {
|
||||
return frame.getIndex(descriptor).apply {
|
||||
if (this < 0) throw AssertionError("Non-mapped local variable descriptor: $descriptor")
|
||||
}
|
||||
return index
|
||||
}
|
||||
|
||||
override fun visitGetObjectValue(expression: IrGetObjectValue, data: BlockInfo): StackValue {
|
||||
@@ -453,13 +452,12 @@ class ExpressionCodegen(
|
||||
}
|
||||
else {
|
||||
mv.iconst(size)
|
||||
val asmType = elementType
|
||||
newArrayInstruction(expression.type)
|
||||
for ((i, element) in expression.elements.withIndex()) {
|
||||
mv.dup()
|
||||
StackValue.constant(i, Type.INT_TYPE).put(Type.INT_TYPE, mv)
|
||||
val rightSide = gen(element, asmType, data)
|
||||
StackValue.arrayElement(asmType, StackValue.onStack(asmType), StackValue.onStack(Type.INT_TYPE)).store(rightSide, mv)
|
||||
val rightSide = gen(element, elementType, data)
|
||||
StackValue.arrayElement(elementType, StackValue.onStack(elementType), StackValue.onStack(Type.INT_TYPE)).store(rightSide, mv)
|
||||
}
|
||||
}
|
||||
return expression.onStack
|
||||
|
||||
+1
-3
@@ -125,14 +125,12 @@ class SpecialDescriptorsFactory(
|
||||
private fun createObjectInstanceFieldDescriptor(objectDescriptor: ClassDescriptor): PropertyDescriptor {
|
||||
assert(objectDescriptor.kind == ClassKind.OBJECT) { "Should be an object: $objectDescriptor" }
|
||||
|
||||
val instanceFieldDescriptor = PropertyDescriptorImpl.create(
|
||||
return PropertyDescriptorImpl.create(
|
||||
objectDescriptor,
|
||||
Annotations.EMPTY, Modality.FINAL, Visibilities.PUBLIC, false,
|
||||
Name.identifier("INSTANCE"),
|
||||
CallableMemberDescriptor.Kind.SYNTHESIZED, SourceElement.NO_SOURCE, /* lateInit = */ false, /* isConst = */ false,
|
||||
/* isHeader = */ false, /* isImpl = */ false, /* isExternal = */ false, /* isDelegated = */ false
|
||||
).initialize(objectDescriptor.defaultType)
|
||||
|
||||
return instanceFieldDescriptor
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -99,11 +99,10 @@ open class IrIntrinsicFunction(
|
||||
|
||||
fun IrMemberAccessExpression.argTypes(context: JvmBackendContext): ArrayList<Type> {
|
||||
val callableMethod = context.state.typeMapper.mapToCallableMethod(descriptor as FunctionDescriptor, false)
|
||||
val args = arrayListOf<Type>().apply {
|
||||
return arrayListOf<Type>().apply {
|
||||
callableMethod.dispatchReceiverType?.let { add(it) }
|
||||
addAll(callableMethod.getAsmMethod().argumentTypes)
|
||||
}
|
||||
return args
|
||||
}
|
||||
|
||||
fun IrMemberAccessExpression.receiverAndArgs(): List<IrExpression> {
|
||||
|
||||
+4
-6
@@ -117,12 +117,11 @@ class EnumClassLowering(val context: JvmBackendContext) : ClassLoweringPass {
|
||||
private fun transformEnumConstructor(enumConstructor: IrConstructor): IrConstructor {
|
||||
val constructorDescriptor = enumConstructor.descriptor
|
||||
val loweredConstructorDescriptor = lowerEnumConstructor(constructorDescriptor)
|
||||
val loweredEnumConstructor = IrConstructorImpl(
|
||||
return IrConstructorImpl(
|
||||
enumConstructor.startOffset, enumConstructor.endOffset, enumConstructor.origin,
|
||||
loweredConstructorDescriptor,
|
||||
enumConstructor.body!! // will be transformed later
|
||||
)
|
||||
return loweredEnumConstructor
|
||||
}
|
||||
|
||||
private fun lowerEnumConstructor(constructorDescriptor: ClassConstructorDescriptor): ClassConstructorDescriptor {
|
||||
@@ -221,10 +220,9 @@ class EnumClassLowering(val context: JvmBackendContext) : ClassLoweringPass {
|
||||
|
||||
val irValuesInitializer = createSyntheticValuesFieldInitializerExpression()
|
||||
|
||||
val irField = IrFieldImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, JvmLoweredDeclarationOrigin.FIELD_FOR_ENUM_VALUES,
|
||||
valuesFieldDescriptor,
|
||||
IrExpressionBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, irValuesInitializer))
|
||||
return irField
|
||||
return IrFieldImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, JvmLoweredDeclarationOrigin.FIELD_FOR_ENUM_VALUES,
|
||||
valuesFieldDescriptor,
|
||||
IrExpressionBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, irValuesInitializer))
|
||||
}
|
||||
|
||||
private fun createSyntheticValuesFieldInitializerExpression(): IrExpression =
|
||||
|
||||
+1
-2
@@ -173,13 +173,12 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
|
||||
|
||||
private fun generateReceiverExpressionForDefaultPropertyAccessor(ktProperty: KtElement, property: PropertyDescriptor): IrExpression? {
|
||||
val containingDeclaration = property.containingDeclaration
|
||||
val receiver = when (containingDeclaration) {
|
||||
return when (containingDeclaration) {
|
||||
is ClassDescriptor ->
|
||||
IrGetValueImpl(ktProperty.startOffset, ktProperty.endOffset,
|
||||
context.symbolTable.referenceValue(containingDeclaration.thisAsReceiverParameter))
|
||||
else -> null
|
||||
}
|
||||
return receiver
|
||||
}
|
||||
|
||||
fun generatePrimaryConstructor(
|
||||
|
||||
+1
-2
@@ -129,7 +129,6 @@ class PropertyGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
|
||||
|
||||
private fun getPropertyDescriptor(ktProperty: KtProperty): PropertyDescriptor {
|
||||
val variableDescriptor = getOrFail(BindingContext.VARIABLE, ktProperty)
|
||||
val propertyDescriptor = variableDescriptor as? PropertyDescriptor ?: TODO("not a property?")
|
||||
return propertyDescriptor
|
||||
return variableDescriptor as? PropertyDescriptor ?: TODO("not a property?")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,8 +43,7 @@ class SymbolTable {
|
||||
unboundSymbols.remove(existing)
|
||||
existing
|
||||
}
|
||||
val owner = createOwner(symbol)
|
||||
return owner
|
||||
return createOwner(symbol)
|
||||
}
|
||||
|
||||
inline fun referenced(d: D, createSymbol: () -> S): S {
|
||||
@@ -115,8 +114,7 @@ class SymbolTable {
|
||||
inline fun declareLocal(d: D, createSymbol: () -> S, createOwner: (S) -> B): B {
|
||||
val scope = currentScope ?: throw AssertionError("No active scope")
|
||||
val symbol = scope.getLocal(d) ?: createSymbol().also { scope[d] = it }
|
||||
val owner = createOwner(symbol)
|
||||
return owner
|
||||
return createOwner(symbol)
|
||||
}
|
||||
|
||||
fun introduceLocal(descriptor: D, symbol: S) {
|
||||
|
||||
Reference in New Issue
Block a user