JVM_IR: remove unused code
This commit is contained in:
+6
-25
@@ -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
|
||||
|
||||
-1
@@ -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
|
||||
|
||||
-1
@@ -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
|
||||
|
||||
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user