[Wasm] Implement IrLinkageError end enable partial linker

KT-58088
This commit is contained in:
Igor Yakovlev
2024-03-04 13:58:33 +01:00
committed by Space Team
parent 2e787c50be
commit c0f387dbd1
4 changed files with 18 additions and 1 deletions
@@ -110,6 +110,8 @@ class WasmSymbols(
override val returnIfSuspended =
getInternalFunction("returnIfSuspended")
val throwLinkageError = getInternalFunction("throwLinkageError")
val enumEntries = getIrClass(FqName.fromSegments(listOf("kotlin", "enums", "EnumEntries")))
val createEnumEntries = findFunctions(enumsInternalPackage.memberScope, Name.identifier("enumEntries"))
.find { it.valueParameters.firstOrNull()?.type?.isFunctionType == false }
@@ -43,6 +43,9 @@ class BuiltInsLowering(val context: WasmBackendContext) : FileLoweringPass {
builder: DeclarationIrBuilder
): IrExpression {
when (val symbol = call.symbol) {
irBuiltins.linkageErrorSymbol -> {
return irCall(call, context.wasmSymbols.throwLinkageError)
}
irBuiltins.ieee754equalsFunByOperandType[irBuiltins.floatClass] -> {
if (call.getValueArgument(0)!!.type.isNullable() || call.getValueArgument(1)!!.type.isNullable()) {
return irCall(call, symbols.nullableFloatIeee754Equals)