[K/N][IR] Fixed wrong type in IR around ImmutableBlob

This commit is contained in:
Igor Chevdar
2024-02-02 15:42:44 +02:00
committed by Space Team
parent faf5a7fecc
commit 17d79dafb1
3 changed files with 9 additions and 4 deletions
@@ -109,6 +109,7 @@ internal class KonanSymbols(
val nativePtrType = nativePtr.typeWith(arguments = emptyList())
val immutableBlobOf = nativeFunction(IMMUTABLE_BLOB_OF)
val immutableBlobOfImpl = internalFunction("immutableBlobOfImpl")
val signedIntegerClasses = setOf(byte, short, int, long)
val unsignedIntegerClasses = setOf(uByte!!, uShort!!, uInt!!, uLong!!)
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.backend.konan.renderCompilerError
import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope
import org.jetbrains.kotlin.ir.builders.irCall
import org.jetbrains.kotlin.ir.builders.irCallWithSubstitutedType
import org.jetbrains.kotlin.ir.builders.irString
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
@@ -91,10 +92,9 @@ internal class PostInlineLowering(val context: Context) : BodyLoweringPass {
// Basic Multilingual Plane, so we could just append data "as is".
builder.append(value.toInt().toChar())
}
expression.putValueArgument(0, IrConstImpl(
expression.startOffset, expression.endOffset,
context.irBuiltIns.stringType,
IrConstKind.String, builder.toString()))
return data.irCall(context.ir.symbols.immutableBlobOfImpl).apply {
putValueArgument(0, data.irString(builder.toString()))
}
}
return expression
@@ -264,3 +264,7 @@ internal fun KonanObjectToUtf8Array(value: Any?): ByteArray {
}
return string.encodeToByteArray()
}
@PublishedApi
@TypedIntrinsic(IntrinsicType.IMMUTABLE_BLOB)
internal external fun immutableBlobOfImpl(data: String): ImmutableBlob