[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:
Vasily Levchenko
2019-02-26 18:33:05 +03:00
parent 3a70c3b41b
commit a20250c2aa
7 changed files with 20 additions and 68 deletions
@@ -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)
}
}
}
@@ -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
@@ -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)
}
}
@@ -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
}
}
}
}
@@ -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 {
+1 -1
View File
@@ -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
View File
@@ -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