diff --git a/backend.native/build.gradle b/backend.native/build.gradle index 468efff3509..5621ebeb149 100644 --- a/backend.native/build.gradle +++ b/backend.native/build.gradle @@ -129,27 +129,25 @@ configurations { } } -def localKotlinCompilerModule = project.files("libs/kotlin-compiler.jar") - dependencies { - kotlin_compiler_jar localKotlinCompilerModule - kotlin_stdlib_jar project.files("libs/kotlin-stdlib.jar") - kotlin_reflect_jar project.files("libs/kotlin-reflect.jar") - kotlin_script_runtime_jar project.files("libs/kotlin-script-runtime.jar") + kotlin_compiler_jar "$kotlinCompilerModule@jar" + kotlin_stdlib_jar "$kotlinStdLibModule@jar" + kotlin_reflect_jar "$kotlinReflectModule@jar" + kotlin_script_runtime_jar "$kotlinScriptRuntimeModule@jar" kotlin_common_stdlib_src kotlinCommonStdlibModule compilerCompile "com.google.protobuf:protobuf-java:${protobufVersion}" - compilerCompile localKotlinCompilerModule + compilerCompile kotlinCompilerModule compilerCompile kotlinNativeInterop['llvm'].configuration compilerCompile kotlinNativeInterop['hash'].configuration compilerCompile "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion" - cli_bcCompile localKotlinCompilerModule + cli_bcCompile kotlinCompilerModule cli_bcCompile "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion" cli_bcCompile sourceSets.compiler.output - bc_frontendCompile localKotlinCompilerModule + bc_frontendCompile kotlinCompilerModule cli_bc sourceSets.cli_bc.output } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt index 53cf6c8d77f..0537ad9c259 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt @@ -362,7 +362,7 @@ internal class KonanSymbols(context: Context, val symbolTable: SymbolTable): Sym override val coroutineSuspendedGetter = symbolTable.referenceSimpleFunction( coroutinesIntrinsicsPackage .getContributedVariables(COROUTINE_SUSPENDED_NAME, NoLookupLocation.FROM_BACKEND) - .single().getter!! + .filterNot { it.isExpect }.single().getter!! ) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/KonanIr.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/KonanIr.kt index 24c357aa67f..3c5c29a831c 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/KonanIr.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/KonanIr.kt @@ -138,57 +138,6 @@ class IrFileImpl(entry: SourceManager.FileEntry) : IrFile { //-----------------------------------------------------------------------------// -interface IrSuspensionPoint : IrExpression { - var suspensionPointIdParameter: IrVariable - var result: IrExpression - var resumeResult: IrExpression -} - -interface IrSuspendableExpression : IrExpression { - var suspensionPointId: IrExpression - var result: IrExpression -} - -class IrSuspensionPointImpl(startOffset: Int, endOffset: Int, type: IrType, - override var suspensionPointIdParameter: IrVariable, - override var result: IrExpression, - override var resumeResult: IrExpression) - : IrExpressionBase(startOffset, endOffset, type), IrSuspensionPoint { - - override fun accept(visitor: IrElementVisitor, data: D): R = - visitor.visitExpression(this, data) - - override fun acceptChildren(visitor: IrElementVisitor, data: D) { - suspensionPointIdParameter.accept(visitor, data) - result.accept(visitor, data) - resumeResult.accept(visitor, data) - } - - override fun transformChildren(transformer: IrElementTransformer, data: D) { - suspensionPointIdParameter = suspensionPointIdParameter.transform(transformer, data) as IrVariable - result = result.transform(transformer, data) - resumeResult = resumeResult.transform(transformer, data) - } -} - -class IrSuspendableExpressionImpl(startOffset: Int, endOffset: Int, type: IrType, - override var suspensionPointId: IrExpression, override var result: IrExpression) - : IrExpressionBase(startOffset, endOffset, type), IrSuspendableExpression { - - override fun accept(visitor: IrElementVisitor, data: D): R = - visitor.visitExpression(this, data) - - override fun acceptChildren(visitor: IrElementVisitor, data: D) { - suspensionPointId.accept(visitor, data) - result.accept(visitor, data) - } - - override fun transformChildren(transformer: IrElementTransformer, data: D) { - suspensionPointId = suspensionPointId.transform(transformer, data) - result = result.transform(transformer, data) - } -} - internal interface IrPrivateFunctionCall : IrCall { val virtualCallee: IrCall? val dfgSymbol: DataFlowIR.FunctionSymbol.Declared diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt index cde9a660e78..b1e7d27414e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt @@ -146,8 +146,18 @@ private class Inliner(val globalSubstituteMap: MutableMap kotlin.collections.MutableList.transform... + */ + private inline fun MutableList.transform(transformation: (T) -> IrElement) { + forEachIndexed { i, item -> + set(i, transformation(item) as T) + } + } - private fun inlineFunction(callee: IrCall, // Call to be substituted. + private fun inlineFunction(callee: IrCall, // Call to be substituted. caller: IrFunction): IrReturnableBlockImpl { // Function to substitute. val copyFunctionDeclaration = copyIrElement.copy( // Create copy of original function. diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SuspendFunctionsLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SuspendFunctionsLowering.kt index 6f5ed7fbbce..2bb6847722b 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SuspendFunctionsLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SuspendFunctionsLowering.kt @@ -22,9 +22,6 @@ import org.jetbrains.kotlin.backend.common.ir.createOverriddenDescriptor import org.jetbrains.kotlin.backend.common.lower.* import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName -import org.jetbrains.kotlin.backend.konan.ir.IrSuspendableExpressionImpl -import org.jetbrains.kotlin.backend.konan.ir.IrSuspensionPoint -import org.jetbrains.kotlin.backend.konan.ir.IrSuspensionPointImpl import org.jetbrains.kotlin.backend.konan.irasdescriptors.typeWith import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt index 5d6a84fdf05..e6e199b1757 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt @@ -27,8 +27,6 @@ import org.jetbrains.kotlin.backend.konan.correspondingValueType import org.jetbrains.kotlin.backend.konan.descriptors.isInterface import org.jetbrains.kotlin.backend.konan.descriptors.target import org.jetbrains.kotlin.backend.konan.getTypeConversion -import org.jetbrains.kotlin.backend.konan.ir.IrSuspendableExpression -import org.jetbrains.kotlin.backend.konan.ir.IrSuspensionPoint import org.jetbrains.kotlin.backend.konan.ir.KonanIr import org.jetbrains.kotlin.backend.konan.irasdescriptors.* import org.jetbrains.kotlin.backend.konan.isValueType diff --git a/backend.native/libs/kotlin-compiler.jar b/backend.native/libs/kotlin-compiler.jar deleted file mode 100644 index 64498814b48..00000000000 Binary files a/backend.native/libs/kotlin-compiler.jar and /dev/null differ diff --git a/backend.native/libs/kotlin-reflect.jar b/backend.native/libs/kotlin-reflect.jar deleted file mode 100644 index 316099880ba..00000000000 Binary files a/backend.native/libs/kotlin-reflect.jar and /dev/null differ diff --git a/backend.native/libs/kotlin-script-runtime.jar b/backend.native/libs/kotlin-script-runtime.jar deleted file mode 100644 index 76d3d462fda..00000000000 Binary files a/backend.native/libs/kotlin-script-runtime.jar and /dev/null differ diff --git a/backend.native/libs/kotlin-stdlib.jar b/backend.native/libs/kotlin-stdlib.jar deleted file mode 100644 index 01f72354d95..00000000000 Binary files a/backend.native/libs/kotlin-stdlib.jar and /dev/null differ diff --git a/gradle.properties b/gradle.properties index 150c071e2b7..cb4642df797 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,8 +20,8 @@ remoteRoot=konan_tests #kotlinCompilerModule=org.jetbrains.kotlin:kotlin-compiler:1.1-SNAPSHOT # Download artifacts of https://teamcity.jetbrains.com/viewType.html?buildTypeId=Kotlin_120_Compiler testDataVersion=1226829:id -kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.2.60-dev-794,tag:kotlin-native,pinned:true/artifacts/content/maven -kotlinVersion=1.2.60-dev-794 +kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.2.70-dev-83,tag:kotlin-native,pinned:true/artifacts/content/maven +kotlinVersion=1.2.70-dev-83 konanVersion=0.8 org.gradle.jvmargs='-Dfile.encoding=UTF-8' diff --git a/runtime/src/main/kotlin/kotlin/coroutines/experimental/Intrinsics.kt b/runtime/src/main/kotlin/kotlin/coroutines/experimental/Intrinsics.kt index 50b2286cdc9..9ab1b08ffc8 100644 --- a/runtime/src/main/kotlin/kotlin/coroutines/experimental/Intrinsics.kt +++ b/runtime/src/main/kotlin/kotlin/coroutines/experimental/Intrinsics.kt @@ -111,3 +111,14 @@ public actual inline fun (suspend R.() -> T).startCoroutineUninterceptedO receiver: R, completion: Continuation ): Any? = (this as Function2, Any?>).invoke(receiver, completion) + + + +/** + * This value is used as a return value of [suspendCoroutineOrReturn] `block` argument to state that + * the execution was suspended and will not return any result immediately. + */ +@SinceKotlin("1.1") +public actual val COROUTINE_SUSPENDED: Any = CoroutineSuspendedMarker + +private object CoroutineSuspendedMarker \ No newline at end of file