[kotlin compiler][update] 1.3.30-dev-2076
Move to the new IrReturnableBlock in the upstream. Eliminate KonanIrReturnableBlock. (cherry picked from commit 08405fc9fcd7d2a844a221524bfa7018ee80be18)
This commit is contained in:
-45
@@ -218,49 +218,4 @@ internal class IrPrivateClassReferenceImpl(startOffset: Int,
|
||||
{
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitClassReference(this, data)
|
||||
}
|
||||
|
||||
class KonanIrReturnableBlockImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: IrReturnableBlockSymbol,
|
||||
origin: IrStatementOrigin? = null,
|
||||
val sourceFile: IrFile? = null
|
||||
) :
|
||||
IrContainerExpressionBase(startOffset, endOffset, type, origin),
|
||||
IrReturnableBlock {
|
||||
|
||||
override val descriptor = symbol.descriptor
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrReturnableBlockSymbol,
|
||||
origin: IrStatementOrigin?,
|
||||
statements: List<IrStatement>,
|
||||
sourceFile: IrFile? = null
|
||||
) : this(startOffset, endOffset, type, symbol, origin, sourceFile) {
|
||||
this.statements.addAll(statements)
|
||||
}
|
||||
|
||||
override val sourceFileName: String = sourceFile?.fileEntry?.name ?: "no source file"
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBlock(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
statements.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
statements.forEachIndexed { i, irStatement ->
|
||||
statements[i] = irStatement.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1575,7 +1575,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
val dummyFile = IrFileImpl(NaiveSourceBasedFileEntryImpl("no source file"))
|
||||
|
||||
private inner class ReturnableBlockScope(val returnableBlock: IrReturnableBlock) :
|
||||
FileScope((returnableBlock as? KonanIrReturnableBlockImpl)?.sourceFile ?: dummyFile) {
|
||||
FileScope(returnableBlock.sourceFileSymbol?.owner ?: dummyFile) {
|
||||
|
||||
var bbExit : LLVMBasicBlockRef? = null
|
||||
var resultPhi : LLVMValueRef? = null
|
||||
|
||||
+2
-3
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.backend.common.*
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDescriptor
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.WrappedVariableDescriptor
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanIrReturnableBlockImpl
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.file
|
||||
import org.jetbrains.kotlin.backend.konan.SYNTHETIC_OFFSET
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
@@ -318,7 +317,7 @@ internal class FinallyBlocksLowering(val context: Context): FileLoweringPass, Ir
|
||||
|
||||
private inline fun IrBuilderWithScope.irReturnableBlock(symbol: IrReturnableBlockSymbol,
|
||||
type: IrType, body: IrBlockBuilder.() -> Unit) =
|
||||
KonanIrReturnableBlockImpl(startOffset, endOffset, type, symbol, null,
|
||||
IrReturnableBlockImpl(startOffset, endOffset, type, symbol, null,
|
||||
IrBlockBuilder(context, scope, startOffset, endOffset, null, type)
|
||||
.block(body).statements)
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.isFunctionInvoke
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.needsInlining
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.resolveFakeOverride
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanIrReturnableBlockImpl
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.constructedClass
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.file
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.isInlineParameter
|
||||
@@ -34,6 +33,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrReturnableBlockImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrReturnableBlockSymbolImpl
|
||||
@@ -118,7 +118,7 @@ internal class FunctionInlining(val context: Context) : IrElementTransformerVoid
|
||||
}
|
||||
}
|
||||
|
||||
private fun inlineFunction(callSite: IrCall, callee: IrFunction): KonanIrReturnableBlockImpl {
|
||||
private fun inlineFunction(callSite: IrCall, callee: IrFunction): IrReturnableBlock {
|
||||
val copiedCallee = copyIrElement.copy(callee) as IrFunction
|
||||
|
||||
val evaluationStatements = evaluateArguments(callSite, copiedCallee)
|
||||
@@ -161,14 +161,14 @@ internal class FunctionInlining(val context: Context) : IrElementTransformerVoid
|
||||
val isCoroutineIntrinsicCall = callSite.descriptor.isBuiltInSuspendCoroutineUninterceptedOrReturn(
|
||||
context.config.configuration.languageVersionSettings)
|
||||
|
||||
return KonanIrReturnableBlockImpl(
|
||||
return IrReturnableBlockImpl(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
type = callSite.type,
|
||||
symbol = irReturnableBlockSymbol,
|
||||
origin = if (isCoroutineIntrinsicCall) CoroutineIntrinsicLambdaOrigin else null,
|
||||
statements = statements,
|
||||
sourceFile = sourceFile
|
||||
sourceFileSymbol = sourceFile.symbol
|
||||
).apply {
|
||||
transformChildrenVoid(object : IrElementTransformerVoid() {
|
||||
override fun visitReturn(expression: IrReturn): IrExpression {
|
||||
@@ -402,4 +402,4 @@ internal class FunctionInlining(val context: Context) : IrElementTransformerVoid
|
||||
return evaluationStatements
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-10
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.backend.konan.descriptors.isInterface
|
||||
import org.jetbrains.kotlin.backend.konan.ir.IrPrivateClassReferenceImpl
|
||||
import org.jetbrains.kotlin.backend.konan.ir.IrPrivateFunctionCall
|
||||
import org.jetbrains.kotlin.backend.konan.ir.IrPrivateFunctionCallImpl
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanIrReturnableBlockImpl
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.getErasedTypeClass
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
@@ -1375,7 +1374,6 @@ internal object Devirtualization {
|
||||
}
|
||||
return when (expression) {
|
||||
is IrReturnableBlock -> {
|
||||
check(expression is KonanIrReturnableBlockImpl) // TODO: need to obtain IrFile rather than just sourceFileName
|
||||
val foldedReturnableBlockValues = returnableBlockValues[expression]!!.associate {
|
||||
it to fold(it, coercion, cast, false)
|
||||
}
|
||||
@@ -1387,14 +1385,14 @@ internal object Devirtualization {
|
||||
val oldSymbol = expression.symbol
|
||||
val newSymbol = IrReturnableBlockSymbolImpl(expression.descriptor)
|
||||
val transformedReturnableBlock = with(expression) {
|
||||
KonanIrReturnableBlockImpl(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
type = coercion.type,
|
||||
symbol = newSymbol,
|
||||
origin = origin,
|
||||
statements = statements,
|
||||
sourceFile = sourceFile)
|
||||
IrReturnableBlockImpl(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
type = coercion.type,
|
||||
symbol = newSymbol,
|
||||
origin = origin,
|
||||
statements = statements,
|
||||
sourceFileSymbol = sourceFileSymbol)
|
||||
}
|
||||
transformedReturnableBlock.transformChildrenVoid(object: IrElementTransformerVoid() {
|
||||
override fun visitExpression(expression: IrExpression): IrExpression {
|
||||
|
||||
@@ -48,7 +48,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
cli_bc project(path: ':backend.native', configuration: 'cli_bc')
|
||||
update_tests (group: 'org', name: 'Kotlin_1330_CompilerAllPlugins', version: testKotlinVersion) {
|
||||
update_tests (group: 'org', name: 'Kotlin_dev_CompilerAllPlugins', version: testKotlinVersion) {
|
||||
artifact {
|
||||
name = 'internal/kotlin-test-data'
|
||||
type = 'zip'
|
||||
|
||||
+3
-3
@@ -18,9 +18,9 @@
|
||||
buildKotlinVersion=1.3.30-dev-1945
|
||||
buildKotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.3.30-dev-1945,pinned:true/artifacts/content/maven
|
||||
remoteRoot=konan_tests
|
||||
kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_1330_CompilerAllPlugins),number:1.3.30-eap-8,branch:default:true,pinned:true/artifacts/content/maven
|
||||
kotlinVersion=1.3.30-eap-8
|
||||
testKotlinVersion=1.3.30-eap-8
|
||||
kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.3.30-dev-2076,branch:default:true,pinned:true/artifacts/content/maven
|
||||
kotlinVersion=1.3.30-dev-2076
|
||||
testKotlinVersion=1.3.30-dev-2076
|
||||
konanVersion=1.2.0
|
||||
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
||||
org.gradle.workers.max=4
|
||||
|
||||
Reference in New Issue
Block a user