[kotlin compiler][update] 1.2.70-dev-616
This commit is contained in:
@@ -20,6 +20,7 @@ import com.intellij.openapi.Disposable
|
||||
import org.jetbrains.annotations.NotNull
|
||||
import org.jetbrains.annotations.Nullable
|
||||
import org.jetbrains.kotlin.backend.konan.*
|
||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanMetadataVersion
|
||||
import org.jetbrains.kotlin.cli.common.CLICompiler
|
||||
import org.jetbrains.kotlin.cli.common.CLITool
|
||||
import org.jetbrains.kotlin.cli.common.CommonCompilerPerformanceManager
|
||||
@@ -33,11 +34,13 @@ import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||
import org.jetbrains.kotlin.konan.util.profile
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.utils.KotlinPaths
|
||||
|
||||
private class K2NativeCompilerPerformanceManager: CommonCompilerPerformanceManager("Kotlin to Native Compiler")
|
||||
class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
override fun createMetadataVersion(p0: IntArray): BinaryVersion = KonanMetadataVersion(*p0)
|
||||
|
||||
private val performanceManager by lazy {
|
||||
K2NativeCompilerPerformanceManager()
|
||||
@@ -64,6 +67,12 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
configuration.report(ERROR, "You have not specified any compilation arguments. No output has been produced.")
|
||||
}
|
||||
|
||||
/* Set default version of metadata version */
|
||||
val metadataVersionString = arguments.metadataVersion
|
||||
if (metadataVersionString == null) {
|
||||
configuration.put(CommonConfigurationKeys.METADATA_VERSION, KonanMetadataVersion.INSTANCE)
|
||||
}
|
||||
|
||||
if (konanConfig.linkOnly) {
|
||||
configuration.report(WARNING, "You have not specified any source files. " +
|
||||
"Only libraries will be used to produce the output binary.")
|
||||
|
||||
+3
-1
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.backend.konan.serialization.KonanSerializationUtil
|
||||
import org.jetbrains.kotlin.backend.konan.serialization.markBackingFields
|
||||
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
||||
import org.jetbrains.kotlin.config.kotlinSourceRoots
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||
@@ -83,7 +85,7 @@ fun runTopLevelPhases(konanConfig: KonanConfig, environment: KotlinCoreEnvironme
|
||||
}
|
||||
phaser.phase(KonanPhase.SERIALIZER) {
|
||||
markBackingFields(context)
|
||||
val serializer = KonanSerializationUtil(context)
|
||||
val serializer = KonanSerializationUtil(context, context.config.configuration.get(CommonConfigurationKeys.METADATA_VERSION)!!)
|
||||
context.serializedLinkData =
|
||||
serializer.serializeModule(context.moduleDescriptor)
|
||||
}
|
||||
|
||||
+3
-5
@@ -73,13 +73,11 @@ class KonanBuiltIns(storageManager: StorageManager) : KotlinBuiltIns(storageMana
|
||||
}
|
||||
|
||||
object KonanPlatform : TargetPlatform("Konan") {
|
||||
override val multiTargetPlatform = MultiTargetPlatform.Specific(platformName)
|
||||
override fun getDefaultImports(includeKotlinComparisons: Boolean): List<ImportPath> {
|
||||
return Common.getDefaultImports(includeKotlinComparisons) + listOf(
|
||||
ImportPath.fromString("konan.*")
|
||||
)
|
||||
override fun computePlatformSpecificDefaultImports(storageManager: StorageManager, result: MutableList<ImportPath>) {
|
||||
result.add(ImportPath.fromString("konan.*"))
|
||||
}
|
||||
|
||||
override val multiTargetPlatform = MultiTargetPlatform.Specific(platformName)
|
||||
override val platformConfigurator: PlatformConfigurator = KonanPlatformConfigurator
|
||||
}
|
||||
|
||||
|
||||
-10
@@ -17,8 +17,6 @@
|
||||
package org.jetbrains.kotlin.backend.konan.ir
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.COROUTINE_SUSPENDED_NAME
|
||||
import org.jetbrains.kotlin.backend.common.INTERCEPTED_NAME
|
||||
import org.jetbrains.kotlin.backend.common.SUSPEND_COROUTINE_UNINTERCEPTED_OR_RETURN_NAME
|
||||
import org.jetbrains.kotlin.backend.common.atMostOne
|
||||
import org.jetbrains.kotlin.backend.common.ir.Ir
|
||||
import org.jetbrains.kotlin.backend.common.ir.Symbols
|
||||
@@ -344,14 +342,6 @@ internal class KonanSymbols(context: Context, val symbolTable: SymbolTable): Sym
|
||||
private val coroutinesPackage = context.builtIns.builtInsModule.getPackage(
|
||||
context.config.configuration.languageVersionSettings.coroutinesPackageFqName()).memberScope
|
||||
|
||||
val intercepted = coroutinesIntrinsicsPackage
|
||||
.getContributedFunctions(INTERCEPTED_NAME, NoLookupLocation.FROM_BACKEND)
|
||||
.single()
|
||||
|
||||
val suspendCoroutineUninterceptedOrReturn = coroutinesIntrinsicsPackage
|
||||
.getContributedFunctions(SUSPEND_COROUTINE_UNINTERCEPTED_OR_RETURN_NAME, NoLookupLocation.FROM_BACKEND)
|
||||
.single()
|
||||
|
||||
val coroutineContextGetter = coroutinesPackage
|
||||
.getContributedVariables(Name.identifier("coroutineContext"), NoLookupLocation.FROM_BACKEND)
|
||||
.single()
|
||||
|
||||
+4
-4
@@ -99,14 +99,14 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoidW
|
||||
|
||||
private fun getFunctionDeclaration(descriptor: FunctionDescriptor): IrFunction? =
|
||||
descriptor.resolveFakeOverride().original.let {
|
||||
when (it) {
|
||||
context.ir.symbols.intercepted ->
|
||||
when {
|
||||
it.isBuiltInIntercepted(context.config.configuration.languageVersionSettings) ->
|
||||
getFunctionDeclaration(context.ir.symbols.konanIntercepted.descriptor)
|
||||
|
||||
context.ir.symbols.suspendCoroutineUninterceptedOrReturn ->
|
||||
it.isBuiltInSuspendCoroutineUninterceptedOrReturn(context.config.configuration.languageVersionSettings) ->
|
||||
getFunctionDeclaration(context.ir.symbols.konanSuspendCoroutineUninterceptedOrReturn.descriptor)
|
||||
|
||||
context.ir.symbols.coroutineContextGetter ->
|
||||
it == context.ir.symbols.coroutineContextGetter ->
|
||||
getFunctionDeclaration(context.ir.symbols.konanCoroutineContextGetter.descriptor)
|
||||
|
||||
else -> {
|
||||
|
||||
+7
-9
@@ -32,16 +32,14 @@ class KonanClassDataFinder(
|
||||
val proto = fragment.classes
|
||||
val nameList = proto.getClassNameList()
|
||||
|
||||
val index = nameList.indexOfFirst({
|
||||
nameResolver.getClassId(it) == classId })
|
||||
if (index == -1)
|
||||
error("Could not find serialized class ${classId}")
|
||||
val index = nameList.indexOfFirst {
|
||||
nameResolver.getClassId(it) == classId }
|
||||
if (index == -1)
|
||||
error("Could not find serialized class $classId")
|
||||
|
||||
val foundClass = proto.getClasses(index)
|
||||
if (foundClass == null)
|
||||
error("Could not find data for serialized class ${classId}")
|
||||
|
||||
return ClassData(nameResolver, foundClass, SourceElement.NO_SOURCE)
|
||||
val foundClass = proto.getClasses(index) ?: error("Could not find data for serialized class $classId")
|
||||
/* TODO: binary version supposed to be read from protobuf. */
|
||||
return ClassData(nameResolver, foundClass, KonanMetadataVersion.INSTANCE, SourceElement.NO_SOURCE)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -164,7 +164,7 @@ class KonanDescriptorSerializer private constructor(
|
||||
builder.versionRequirementTable = versionRequirementTableProto
|
||||
}
|
||||
|
||||
extension.serializeClass(classDescriptor, builder)
|
||||
extension.serializeClass(classDescriptor, builder, versionRequirementTable)
|
||||
return builder
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ class KonanDescriptorSerializer private constructor(
|
||||
builder.versionRequirement = writeVersionRequirement(LanguageFeature.Coroutines)
|
||||
}
|
||||
|
||||
extension.serializeProperty(descriptor, builder)
|
||||
extension.serializeProperty(descriptor, builder, versionRequirementTable)
|
||||
|
||||
/* Konan specific chunk */
|
||||
if (extension is IrAwareExtension) {
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package org.jetbrains.kotlin.backend.konan.serialization
|
||||
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
|
||||
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
class KonanMetadataVersion(vararg numbers: Int): BinaryVersion(*numbers){
|
||||
override fun isCompatible(): Boolean = this.major == 1 && this.minor == 0
|
||||
companion object {
|
||||
@JvmField
|
||||
val INSTANCE = KonanMetadataVersion(1, 0, 0)
|
||||
|
||||
@JvmField
|
||||
val INVALID_VERSION = KonanMetadataVersion()
|
||||
}
|
||||
|
||||
}
|
||||
+2
-1
@@ -61,8 +61,9 @@ class KonanPackageFragment(
|
||||
}
|
||||
|
||||
private val memberScope_ by lazy {
|
||||
/* TODO: we fake proto binary versioning for now. */
|
||||
DeserializedPackageMemberScope(this, proto.getPackage(),
|
||||
nameResolver, /* containerSource = */ null,
|
||||
nameResolver, KonanMetadataVersion.INSTANCE,/* containerSource = */ null,
|
||||
components, { loadClassNames() })
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.metadata.KonanLinkData
|
||||
import org.jetbrains.kotlin.metadata.KonanLinkData.*
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration
|
||||
@@ -140,9 +141,9 @@ internal fun deserializeModule(languageVersionSettings: LanguageVersionSettings,
|
||||
|
||||
/* ------------ Serializer part ------------------------------------------*/
|
||||
|
||||
internal class KonanSerializationUtil(val context: Context) {
|
||||
internal class KonanSerializationUtil(val context: Context, metadataVersion: BinaryVersion) {
|
||||
|
||||
val serializerExtension = KonanSerializerExtension(context)
|
||||
val serializerExtension = KonanSerializerExtension(context, metadataVersion)
|
||||
val topSerializer = KonanDescriptorSerializer.createTopLevel(serializerExtension)
|
||||
var classSerializer: KonanDescriptorSerializer = topSerializer
|
||||
|
||||
|
||||
+7
-5
@@ -19,11 +19,13 @@ package org.jetbrains.kotlin.backend.konan.serialization
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.metadata.*
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
||||
import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite
|
||||
import org.jetbrains.kotlin.serialization.*
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
internal class KonanSerializerExtension(val context: Context) :
|
||||
internal class KonanSerializerExtension(val context: Context, override val metadataVersion: BinaryVersion) :
|
||||
KotlinSerializerExtensionBase(KonanSerializerProtocol), IrAwareExtension {
|
||||
|
||||
val inlineDescriptorTable = DescriptorTable(context.irBuiltIns)
|
||||
@@ -59,9 +61,9 @@ internal class KonanSerializerExtension(val context: Context) :
|
||||
super.serializeConstructor(descriptor, proto)
|
||||
}
|
||||
|
||||
override fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder) {
|
||||
override fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder, versionRequirementTable: MutableVersionRequirementTable) {
|
||||
|
||||
super.serializeClass(descriptor, proto)
|
||||
super.serializeClass(descriptor, proto, versionRequirementTable)
|
||||
}
|
||||
|
||||
override fun serializeFunction(descriptor: FunctionDescriptor, proto: ProtoBuf.Function.Builder) {
|
||||
@@ -69,7 +71,7 @@ internal class KonanSerializerExtension(val context: Context) :
|
||||
super.serializeFunction(descriptor, proto)
|
||||
}
|
||||
|
||||
override fun serializeProperty(descriptor: PropertyDescriptor, proto: ProtoBuf.Property.Builder) {
|
||||
override fun serializeProperty(descriptor: PropertyDescriptor, proto: ProtoBuf.Property.Builder, versionRequirementTable: MutableVersionRequirementTable) {
|
||||
val variable = originalVariables[descriptor]
|
||||
if (variable != null) {
|
||||
proto.setExtension(KonanLinkData.usedAsVariable, true)
|
||||
@@ -78,7 +80,7 @@ internal class KonanSerializerExtension(val context: Context) :
|
||||
proto.setExtension(KonanLinkData.hasBackingField,
|
||||
context.ir.propertiesWithBackingFields.contains(descriptor))
|
||||
|
||||
super.serializeProperty(descriptor, proto)
|
||||
super.serializeProperty(descriptor, proto, versionRequirementTable)
|
||||
}
|
||||
|
||||
override fun addFunctionIR(proto: ProtoBuf.Function.Builder, serializedIR: String)
|
||||
|
||||
+5
-6
@@ -22,13 +22,10 @@ import org.jetbrains.kotlin.backend.common.push
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.allContainingDeclarations
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||
import org.jetbrains.kotlin.metadata.KonanIr
|
||||
import org.jetbrains.kotlin.metadata.KonanLinkData
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl
|
||||
import org.jetbrains.kotlin.metadata.deserialization.TypeTable
|
||||
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirementTable
|
||||
import org.jetbrains.kotlin.metadata.deserialization.*
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
||||
|
||||
@@ -74,8 +71,9 @@ class LocalDeclarationDeserializer(val rootDescriptor: DeclarationDescriptor) {
|
||||
fun newContext(descriptor: DeclarationDescriptor): DeserializationContext {
|
||||
if (descriptor is KonanPackageFragment) {
|
||||
val packageTypeTable = TypeTable(pkg.proto.getPackage().typeTable)
|
||||
/* TODO: Check metadata version usege here. */
|
||||
return components.createContext(
|
||||
pkg, nameResolver, packageTypeTable, VersionRequirementTable.EMPTY, null)
|
||||
pkg, nameResolver, packageTypeTable, VersionRequirementTable.EMPTY, KonanMetadataVersion.INSTANCE, null)
|
||||
}
|
||||
|
||||
// Only packages and classes have their type tables.
|
||||
@@ -105,7 +103,8 @@ class LocalDeclarationDeserializer(val rootDescriptor: DeclarationDescriptor) {
|
||||
fun deserializeInlineType(type: ProtoBuf.Type) = typeDeserializer.type(type)
|
||||
|
||||
fun deserializeClass(irProto: KonanIr.KotlinDescriptor): ClassDescriptor {
|
||||
return DeserializedClassDescriptor(parentContext, irProto.irLocalDeclaration.descriptor.clazz, nameResolver, SourceElement.NO_SOURCE)
|
||||
/* TODO: metadata version should be fixed. */
|
||||
return DeserializedClassDescriptor(parentContext, irProto.irLocalDeclaration.descriptor.clazz, nameResolver, KonanMetadataVersion.INSTANCE, SourceElement.NO_SOURCE)
|
||||
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -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.70-dev-402,tag:kotlin-native,pinned:true/artifacts/content/maven
|
||||
kotlinVersion=1.2.70-dev-402
|
||||
kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.2.70-dev-616,tag:kotlin-native,pinned:true/artifacts/content/maven
|
||||
kotlinVersion=1.2.70-dev-616
|
||||
konanVersion=0.9
|
||||
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user