[minor] IR: minor builtins infrastructure fixes

This commit is contained in:
Ilya Chernikov
2021-07-08 19:18:50 +02:00
committed by TeamCityServer
parent 19f52d9aae
commit 56805dded8
15 changed files with 39 additions and 33 deletions
@@ -62,7 +62,7 @@ internal fun Context.psiToIr(
moduleDescriptor, symbolTable,
generatorContext.irBuiltIns
)
val symbols by lazy { KonanSymbols(this, generatorContext.irBuiltIns, symbolTable, symbolTable.lazyWrapper) }
val symbols = KonanSymbols(this, generatorContext.irBuiltIns, symbolTable, symbolTable.lazyWrapper)
val irDeserializer = if (isProducingLibrary && !useLinkerWhenProducingLibrary) {
// Enable lazy IR generation for newly-created symbols inside BE
@@ -64,7 +64,7 @@ internal class FunctionsWithoutBoundCheckGenerator(val context: KonanBackendCont
fun generate() {
val arraysClasses = symbols.primitiveArrays.values + symbols.array
val arraysClasses = symbols.primitiveTypesToPrimitiveArrays.values + symbols.array
arraysClasses.forEach { classSymbol ->
val setFunction = classSymbol.owner.functions.single { it.name == OperatorNameConventions.SET }
classSymbol.owner.addMember(generateFunction(setFunction, KonanNameConventions.setWithoutBoundCheck))
@@ -344,9 +344,6 @@ internal class KonanSymbols(
val println = irBuiltIns.findFunctions(Name.identifier("println"), "kotlin", "io")
.single { it.descriptor.valueParameters.singleOrNull()?.type == (irBuiltIns as IrBuiltInsOverDescriptors).builtIns.stringType }
val anyNToString = irBuiltIns.findFunctions(Name.identifier("toString"))
.single { it.descriptor.extensionReceiverParameter?.type == (irBuiltIns as IrBuiltInsOverDescriptors).builtIns.nullableAnyType }
override val getContinuation = internalFunction("getContinuation")
override val returnIfSuspended = internalFunction("returnIfSuspended")
@@ -30,8 +30,8 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
context.irBuiltIns.byteClass, context.irBuiltIns.shortClass, context.irBuiltIns.intClass,
context.irBuiltIns.longClass,
context.irBuiltIns.floatClass,context.irBuiltIns.doubleClass) +
context.ir.symbols.primitiveArrays.values +
context.ir.symbols.unsignedArrays.values
context.ir.symbols.primitiveTypesToPrimitiveArrays.values +
context.ir.symbols.unsignedTypesToUnsignedArrays.values
// TODO: extend logic here by taking into account final acyclic classes.
private fun checkAcyclicFieldType(type: IrType): Boolean = acyclicCache.getOrPut(type) {
@@ -258,7 +258,7 @@ internal class VarargInjectionLowering constructor(val context: KonanBackendCont
private val primitiveArrayHandles = PrimitiveType.values().associate { it to PrimitiveArrayHandle(it) }
private val unsignedArrayHandles = UnsignedType.values().mapNotNull { unsignedType ->
symbols.unsignedArrays[unsignedType]?.let {
symbols.unsignedTypesToUnsignedArrays[unsignedType]?.let {
val primitiveType = when (unsignedType) {
UnsignedType.UBYTE -> PrimitiveType.BYTE
UnsignedType.USHORT -> PrimitiveType.SHORT