diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index e95c7491889..cbecf0a4041 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -358,6 +358,7 @@ class K2JsIrCompiler : CLICompiler() { backendContext = backendContext, emitNameSection = arguments.wasmDebug, allowIncompleteImplementations = arguments.irDce, + generateWat = true, ) val launcherKind = when (arguments.wasmLauncher) { diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt index c6dc6121c5a..fcf73716f3e 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToText import java.io.ByteArrayOutputStream import java.io.File -class WasmCompilerResult(val wat: String, val js: String, val wasm: ByteArray) +class WasmCompilerResult(val wat: String?, val js: String, val wasm: ByteArray) fun compileToLoweredIr( depsDescriptors: ModulesStructure, @@ -76,15 +76,20 @@ fun compileWasm( backendContext: WasmBackendContext, emitNameSection: Boolean = false, allowIncompleteImplementations: Boolean = false, + generateWat: Boolean = false, ): WasmCompilerResult { val compiledWasmModule = WasmCompiledModuleFragment(backendContext.irBuiltIns) val codeGenerator = WasmModuleFragmentGenerator(backendContext, compiledWasmModule, allowIncompleteImplementations = allowIncompleteImplementations) allModules.forEach { codeGenerator.generateModule(it) } val linkedModule = compiledWasmModule.linkWasmCompiledFragments() - val watGenerator = WasmIrToText() - watGenerator.appendWasmModule(linkedModule) - val wat = watGenerator.toString() + val wat = if (generateWat) { + val watGenerator = WasmIrToText() + watGenerator.appendWasmModule(linkedModule) + watGenerator.toString() + } else { + null + } val js = compiledWasmModule.generateJs() @@ -168,10 +173,9 @@ fun writeCompilationResult( dir: File, loaderKind: WasmLoaderKind, fileNameBase: String = "index", - writeWat: Boolean = true, ) { dir.mkdirs() - if (writeWat) { + if (result.wat != null) { File(dir, "$fileNameBase.wat").writeText(result.wat) } File(dir, "$fileNameBase.wasm").writeBytes(result.wasm) diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/testOld/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/testOld/BasicWasmBoxTest.kt index 3afd3f17d30..a9801f30bae 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/testOld/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/testOld/BasicWasmBoxTest.kt @@ -127,11 +127,14 @@ abstract class BasicWasmBoxTest( propertyLazyInitialization = true, ) + val generateWat = debugMode >= DebugMode.DEBUG + val compilerResult = compileWasm( allModules = allModules, backendContext = backendContext, emitNameSection = true, allowIncompleteImplementations = false, + generateWat = generateWat, ) eliminateDeadDeclarations(allModules, backendContext) @@ -141,6 +144,7 @@ abstract class BasicWasmBoxTest( backendContext = backendContext, emitNameSection = true, allowIncompleteImplementations = true, + generateWat = generateWat, ) val testJsQuiet = """ @@ -176,7 +180,7 @@ abstract class BasicWasmBoxTest( println(" ------ $name Test file://$path/test.js") } - writeCompilationResult(res, dir, WasmLoaderKind.D8, writeWat = debugMode >= DebugMode.DEBUG) + writeCompilationResult(res, dir, WasmLoaderKind.D8) File(dir, "test.js").writeText(testJs) ExternalTool(System.getProperty("javascript.engine.path.V8")) .run(