Minor fixes.
This commit is contained in:
@@ -29,5 +29,5 @@ class JvmBackendContext(
|
||||
) {
|
||||
val builtIns = state.module.builtIns
|
||||
val specialDescriptorsFactory = SpecialDescriptorsFactory(psiSourceManager, builtIns)
|
||||
val sharedVariablesManager = JvmSharedVariablesManager(irBuiltIns)
|
||||
val sharedVariablesManager = JvmSharedVariablesManager(builtIns)
|
||||
}
|
||||
|
||||
+5
-11
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrGetValue
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSetVariable
|
||||
@@ -43,12 +42,9 @@ interface SharedVariablesManager {
|
||||
fun setSharedValue(sharedVariableDescriptor: VariableDescriptor, originalSet: IrSetVariable): IrExpression
|
||||
}
|
||||
|
||||
class JvmSharedVariablesManager(val irBuiltIns: IrBuiltIns) : SharedVariablesManager {
|
||||
private val builtIns = irBuiltIns.builtIns
|
||||
private val fromAny = listOf(builtIns.anyType)
|
||||
|
||||
class JvmSharedVariablesManager(val builtIns: KotlinBuiltIns) : SharedVariablesManager {
|
||||
private val kotlinJvmInternalPackage = KnownPackageFragmentDescriptor(builtIns.builtInsModule, FqName("kotlin.jvm.internal"))
|
||||
private val refNamespaceClass = KnownClassDescriptor.createClass(Name.identifier("Ref"), kotlinJvmInternalPackage, fromAny)
|
||||
private val refNamespaceClass = KnownClassDescriptor.createClass(Name.identifier("Ref"), kotlinJvmInternalPackage, listOf(builtIns.anyType))
|
||||
|
||||
private class PrimitiveRefDescriptorsProvider(type: KotlinType, refClass: ClassDescriptor) {
|
||||
val refType: KotlinType = refClass.defaultType
|
||||
@@ -59,7 +55,6 @@ class JvmSharedVariablesManager(val irBuiltIns: IrBuiltIns) : SharedVariablesMan
|
||||
returnType = refType
|
||||
}
|
||||
|
||||
|
||||
val elementField: PropertyDescriptor =
|
||||
PropertyDescriptorImpl.create(
|
||||
refClass, Annotations.EMPTY, Modality.FINAL, Visibilities.PUBLIC, true,
|
||||
@@ -68,12 +63,12 @@ class JvmSharedVariablesManager(val irBuiltIns: IrBuiltIns) : SharedVariablesMan
|
||||
).initialize(type, dispatchReceiverParameter = refClass.thisAsReceiverParameter)
|
||||
}
|
||||
|
||||
private val primitiveRefDescriptorProviders =
|
||||
private val primitiveRefDescriptorProviders: Map<PrimitiveType, PrimitiveRefDescriptorsProvider> =
|
||||
PrimitiveType.values().associate {
|
||||
val type = builtIns.getPrimitiveKotlinType(it)
|
||||
|
||||
val refClassName = Name.identifier(it.typeName.asString() + "Ref")
|
||||
val refClass = KnownClassDescriptor.createClass(refClassName, refNamespaceClass, fromAny)
|
||||
val refClass = KnownClassDescriptor.createClass(refClassName, refNamespaceClass, listOf(builtIns.anyType))
|
||||
|
||||
it to PrimitiveRefDescriptorsProvider(type, refClass)
|
||||
}
|
||||
@@ -81,7 +76,7 @@ class JvmSharedVariablesManager(val irBuiltIns: IrBuiltIns) : SharedVariablesMan
|
||||
private inner class ObjectRefDescriptorsProvider {
|
||||
val genericRefClass: ClassDescriptor =
|
||||
KnownClassDescriptor.createClassWithTypeParameters(
|
||||
Name.identifier("ObjectRef"), refNamespaceClass, fromAny, listOf(Name.identifier("T"))
|
||||
Name.identifier("ObjectRef"), refNamespaceClass, listOf(builtIns.anyType), listOf(Name.identifier("T"))
|
||||
)
|
||||
|
||||
val genericRefConstructor: ClassConstructorDescriptor =
|
||||
@@ -92,7 +87,6 @@ class JvmSharedVariablesManager(val irBuiltIns: IrBuiltIns) : SharedVariablesMan
|
||||
returnType = KotlinTypeFactory.simpleNotNullType(Annotations.EMPTY, genericRefClass, listOf(TypeProjectionImpl(Variance.INVARIANT, typeParameterType)))
|
||||
}
|
||||
|
||||
|
||||
val constructorTypeParameter: TypeParameterDescriptor =
|
||||
genericRefConstructor.typeParameters[0]
|
||||
|
||||
|
||||
@@ -65,7 +65,10 @@ class Concat : IntrinsicMethod() {
|
||||
}
|
||||
|
||||
override fun toCallable(expression: IrMemberAccessExpression, signature: JvmMethodSignature, context: JvmBackendContext): IrIntrinsicFunction {
|
||||
return object : IrIntrinsicFunction(expression, signature, context, expression.receiverAndArgs().asmTypes(context)) {
|
||||
val argsTypes = expression.receiverAndArgs().asmTypes(context).toMutableList()
|
||||
argsTypes[0] = AsmTypes.JAVA_STRING_TYPE
|
||||
|
||||
return object : IrIntrinsicFunction(expression, signature, context, argsTypes) {
|
||||
|
||||
override fun genInvokeInstruction(v: InstructionAdapter) {
|
||||
AsmUtil.genInvokeAppendMethod(v, argsTypes[1])
|
||||
@@ -83,7 +86,6 @@ class Concat : IntrinsicMethod() {
|
||||
override fun genArg(expression: IrExpression, codegen: org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen, index: Int, data: BlockInfo) {
|
||||
super.genArg(expression, codegen, index, data)
|
||||
if (index == 0) {
|
||||
codegen.mv.checkcast(AsmTypes.JAVA_STRING_TYPE)
|
||||
codegen.mv.invokespecial("java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V", false)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user