From 338152263a60f5983e215a338ea9ad44858a62f1 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Mon, 25 Jun 2018 19:21:29 +0300 Subject: [PATCH] Add minor code improvements --- .../src/org/jetbrains/kotlin/backend/konan/LinkStage.kt | 6 +++--- .../jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt | 6 +++--- .../konan/llvm/objcexport/ObjCExportCodeGenerator.kt | 5 +++-- .../kotlin/backend/konan/objcexport/ObjCExport.kt | 8 +++----- .../jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt | 3 ++- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt index 17f6ee3c7fd..cff9072a462 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt @@ -186,9 +186,9 @@ internal class LinkStage(val context: Context) { } else { val framework = File(context.config.outputFile) val dylibName = framework.name.removeSuffix(".framework") - val dylibRelativePath = when (target) { - KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 -> dylibName - KonanTarget.MACOS_X64 -> "Versions/A/$dylibName" + val dylibRelativePath = when (target.family) { + Family.IOS -> dylibName + Family.OSX -> "Versions/A/$dylibName" else -> error(target) } frameworkLinkerArgs = listOf("-install_name", "@rpath/${framework.name}/$dylibRelativePath") diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt index 3ba5605faed..5207cc1ce30 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.backend.konan.irasdescriptors.* import org.jetbrains.kotlin.backend.konan.llvm.objc.ObjCDataGenerator import org.jetbrains.kotlin.ir.util.constructors import org.jetbrains.kotlin.ir.util.defaultType +import org.jetbrains.kotlin.konan.target.Family import org.jetbrains.kotlin.konan.target.KonanTarget internal class CodeGenerator(override val context: Context) : ContextUtils { @@ -97,9 +98,8 @@ internal class CodeGenerator(override val context: Context) : ContextUtils { return LLVMCreateLocation(LLVMGetModuleContext(context.llvmModule), locationInfo.line, locationInfo.line, locationInfo.scope) } - val objCDataGenerator = when (context.config.target) { - KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, - KonanTarget.IOS_X64, KonanTarget.MACOS_X64 -> ObjCDataGenerator(this) + val objCDataGenerator = when (context.config.target.family) { + Family.IOS, Family.OSX -> ObjCDataGenerator(this) else -> null } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt index 41612f6bbbc..8d73a4b3808 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt @@ -579,7 +579,8 @@ private fun ObjCExportCodeGenerator.generateObjCImp( tailrec fun genReturnValueOnSuccess(returnBridge: MethodBridge.ReturnValue): LLVMValueRef? = when (returnBridge) { MethodBridge.ReturnValue.Void -> null MethodBridge.ReturnValue.HashCode -> { - zext(targetResult!!, if (codegen.context.is64Bit()) int64Type else int32Type) + val kotlinHashCode = targetResult!! + if (codegen.context.is64Bit()) zext(kotlinHashCode, int64Type) else kotlinHashCode } is MethodBridge.ReturnValue.Mapped -> kotlinToObjC(targetResult!!, returnBridge.bridge) MethodBridge.ReturnValue.WithError.Success -> Int8(1).llvm // true @@ -683,7 +684,7 @@ private fun ObjCExportCodeGenerator.generateKotlinToObjCBridge( val high = trunc(shr(targetResult, 32, signed = false), int32Type) xor(low, high) } else { - trunc(targetResult, int32Type) + targetResult } } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt index b53b27e32ff..f9c55a203ec 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt @@ -164,10 +164,8 @@ internal class ObjCExport(val codegen: CodeGenerator) { """.trimIndent()) - contents.append(when (target) { - KonanTarget.IOS_ARM32, - KonanTarget.IOS_ARM64, - KonanTarget.IOS_X64 -> """ + contents.append(when (target.family) { + Family.IOS -> """ | MinimumOSVersion | $minimumOsVersion | UIDeviceFamily @@ -177,7 +175,7 @@ internal class ObjCExport(val codegen: CodeGenerator) { | """.trimMargin() - KonanTarget.MACOS_X64 -> "" + Family.OSX -> "" else -> error(target) }) diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt index 9d23e720e12..c284c5368c4 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt @@ -22,6 +22,7 @@ import org.gradle.api.file.FileCollection import org.gradle.api.internal.project.ProjectInternal import org.gradle.internal.reflect.Instantiator import org.jetbrains.kotlin.gradle.plugin.tasks.* +import org.jetbrains.kotlin.konan.target.Family import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.KonanTarget.* import java.io.File @@ -126,7 +127,7 @@ open class KonanFramework(name: String, get() = project.konanBinBaseDir override fun targetIsSupported(target: KonanTarget): Boolean = - target == MACOS_X64 || target == IOS_ARM32 || target == IOS_ARM64 || target == IOS_X64 + target.family == Family.OSX || target.family == Family.IOS } open class KonanLibrary(name: String,