diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt index 763ae7359f3..3a128fde71d 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol import org.jetbrains.kotlin.ir.types.IrType +import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl import org.jetbrains.kotlin.ir.util.SymbolTable @@ -57,6 +58,11 @@ class WasmBackendContext( override val mapping = JsMapping() + val closureCallExports = mutableMapOf() + val kotlinClosureToJsConverters = mutableMapOf() + val jsClosureCallers = mutableMapOf() + val jsToKotlinClosures = mutableMapOf() + override val coroutineSymbols = JsCommonCoroutineSymbols(symbolTable, module,this) diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/JsInteropFunctionsLowering.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/JsInteropFunctionsLowering.kt index 0729e100ef5..b6d17b6156b 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/JsInteropFunctionsLowering.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/JsInteropFunctionsLowering.kt @@ -39,14 +39,6 @@ class JsInteropFunctionsLowering(val context: WasmBackendContext) : DeclarationT val symbols = context.wasmSymbols val adapters = symbols.jsInteropAdapters - // Used to for export lambdas - object KOTLIN_WASM_CLOSURE_FOR_JS_CLOSURE : IrStatementOriginImpl("KOTLIN_WASM_CLOSURE_FOR_JS_CLOSURE") - - private val closureCallExports = mutableMapOf() - private val kotlinClosureToJsConverters = mutableMapOf() - private val jsClosureCallers = mutableMapOf() - private val jsToKotlinClosures = mutableMapOf() - val additionalDeclarations = mutableListOf() lateinit var currentParent: IrDeclarationParent @@ -265,7 +257,7 @@ class JsInteropFunctionsLowering(val context: WasmBackendContext) : DeclarationT // ) // } // - closureCallExports.getOrPut(this) { + context.closureCallExports.getOrPut(this) { createKotlinClosureCaller(functionTypeInfo) } @@ -277,7 +269,7 @@ class JsInteropFunctionsLowering(val context: WasmBackendContext) : DeclarationT // }""") // external fun __convertKotlinClosureToJsClosure_(f: dataref): ExternalRef // - val kotlinToJsClosureConvertor = kotlinClosureToJsConverters.getOrPut(this) { + val kotlinToJsClosureConvertor = context.kotlinClosureToJsConverters.getOrPut(this) { createKotlinToJsClosureConvertor(functionTypeInfo) } return FunctionBasedAdapter(kotlinToJsClosureConvertor) @@ -380,7 +372,7 @@ class JsInteropFunctionsLowering(val context: WasmBackendContext) : DeclarationT // @JsFun("(f, p0, p1, ...) => f(p0, p1, ...)") // external fun __callJsClosure_(f: ExternalRef, p0: JsType1, p1: JsType2, ...): JsResType // - val jsClosureCaller = jsClosureCallers.getOrPut(this) { + val jsClosureCaller = context.jsClosureCallers.getOrPut(this) { createJsClosureCaller(functionTypeInfo) } @@ -392,7 +384,7 @@ class JsInteropFunctionsLowering(val context: WasmBackendContext) : DeclarationT // adapt(__callJsClosure_(f, adapt(p0), adapt(p1), ..)) // } // - val jsToKotlinClosure = jsToKotlinClosures.getOrPut(this) { + val jsToKotlinClosure = context.jsToKotlinClosures.getOrPut(this) { createJsToKotlinClosureConverter(functionTypeInfo, jsClosureCaller) } return FunctionBasedAdapter(jsToKotlinClosure)