JVM_IR: remove unused code

This commit is contained in:
Georgy Bronnikov
2019-07-20 21:27:20 +03:00
parent ce6e2621cf
commit 5d12603d73
4 changed files with 6 additions and 28 deletions
@@ -203,8 +203,7 @@ val DEFAULT_DISPATCH_CALL = object : IrStatementOriginImpl("DEFAULT_DISPATCH_CAL
open class DefaultParameterInjector(
open val context: CommonBackendContext,
private val skipInline: Boolean = true,
private val skipExternalMethods: Boolean = false,
private val shiftMaskForExtraArgs: Boolean = false
private val skipExternalMethods: Boolean = false
) : IrElementTransformerVoid(), BodyLoweringPass, FileLoweringPass {
override fun lower(irFile: IrFile) {
@@ -228,7 +227,7 @@ open class DefaultParameterInjector(
if (argumentsCount == functionDeclaration.valueParameters.size)
return expression
val (symbol, params) = parametersForCall(expression, shiftMaskForExtraArgs)
val (symbol, params) = parametersForCall(expression)
val descriptor = symbol.descriptor
val declaration = symbol.owner
@@ -325,17 +324,10 @@ open class DefaultParameterInjector(
}
private fun parametersForCall(
expression: IrFunctionAccessExpression,
shiftMaskForExtraArgs: Boolean
expression: IrFunctionAccessExpression
): Pair<IrFunctionSymbol, List<Pair<IrValueParameter, IrExpression?>>> {
val declaration = expression.symbol.owner
val extraArgsShift = when {
shiftMaskForExtraArgs && declaration is IrConstructor && declaration.parentAsClass.isEnumClass -> 2
shiftMaskForExtraArgs && declaration is IrConstructor && declaration.parentAsClass.isInner -> 1 // skip the `$outer` parameter
else -> 0
}
val keyFunction = declaration.findSuperMethodWithDefaultArguments()!!
val realFunction =
keyFunction.generateDefaultsFunction(
@@ -346,14 +338,13 @@ open class DefaultParameterInjector(
)
log { "$declaration -> $realFunction" }
val maskValues = Array((declaration.valueParameters.size - extraArgsShift + 31) / 32) { 0 }
val maskValues = Array((declaration.valueParameters.size + 31) / 32) { 0 }
val params = mutableListOf<Pair<IrValueParameter, IrExpression?>>()
params += declaration.valueParameters.mapIndexed { argIndex, _ ->
val valueArgument = expression.getValueArgument(argIndex)
val shiftedArgIndex = argIndex - extraArgsShift
if (valueArgument == null) {
val maskIndex = shiftedArgIndex / 32
maskValues[maskIndex] = maskValues[maskIndex] or (1 shl (shiftedArgIndex % 32))
val maskIndex = argIndex / 32
maskValues[maskIndex] = maskValues[maskIndex] or (1 shl (argIndex % 32))
}
val valueParameterDeclaration = realFunction.valueParameters[argIndex]
val defaultValueArgument = if (valueParameterDeclaration.varargElementType != null) {
@@ -417,16 +408,6 @@ class DefaultParameterCleaner constructor(val context: CommonBackendContext) : F
}
}
// Some later lowerings produce bodies that need to undergo default parameter injection.
fun IrBody.insertCallsToDefaultArgumentStubs(
context: CommonBackendContext,
skipInline: Boolean = true,
skipExternalMethods: Boolean = false,
shiftMaskForExtraArgs: Boolean = false
) {
DefaultParameterInjector(context, skipInline, skipExternalMethods, shiftMaskForExtraArgs).lower(this)
}
// TODO this implementation is exponential
private fun IrFunction.needsDefaultArgumentsLowering(skipInlineMethods: Boolean, skipExternalMethods: Boolean): Boolean {
if (isInline && skipInlineMethods) return false
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext
import org.jetbrains.kotlin.backend.common.ir.copyTo
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
import org.jetbrains.kotlin.backend.common.lower.insertCallsToDefaultArgumentStubs
import org.jetbrains.kotlin.backend.common.lower.irBlock
import org.jetbrains.kotlin.backend.common.lower.irIfThen
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.backend.jvm.lower
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
import org.jetbrains.kotlin.backend.common.ir.passTypeArgumentsFrom
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
import org.jetbrains.kotlin.backend.common.lower.insertCallsToDefaultArgumentStubs
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.backend.common.descriptors.WrappedClassConstructorDe
import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDescriptor
import org.jetbrains.kotlin.backend.common.ir.copyTo
import org.jetbrains.kotlin.backend.common.ir.copyTypeParametersFrom
import org.jetbrains.kotlin.backend.common.lower.insertCallsToDefaultArgumentStubs
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET