diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenExec.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenExec.kt index eafb45fba4a..7b9be7b23fa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenExec.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenExec.kt @@ -28,16 +28,38 @@ constructor() : AbstractExecTask(BinaryenExec::class.java) { @Input var binaryenArgs: MutableList = mutableListOf( - "--enable-nontrapping-float-to-int", + // Proposals "--enable-gc", "--enable-reference-types", "--enable-exception-handling", "--enable-bulk-memory", // For array initialization from data sections - "--hybrid", - "-O3", + + // Other options + "--enable-nontrapping-float-to-int", + "--nominal", + // TODO uncomment after switching to 112+ + // "--closed-world", + + // Optimizations: + // Note the order and repetition of the next options matter. + // + // About Binaryen optimizations: + // GC Optimization Guidebook -- https://github.com/WebAssembly/binaryen/wiki/GC-Optimization-Guidebook + // Optimizer Cookbook -- https://github.com/WebAssembly/binaryen/wiki/Optimizer-Cookbook + // "--inline-functions-with-loops", "--traps-never-happen", "--fast-math", + // TODO uncomment after switching to 112+ + // "--type-ssa", + "-O4", + "-O4", + "--gufa", + "-O4", + // TODO uncomment after switching to 112+ + // "--type-merging", + "-O4", + "-Oz", ) @InputFile diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt index 8e1c30648fb..5c4527edac1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt @@ -25,6 +25,7 @@ open class BinaryenRootExtension(@Transient val rootProject: Project) : Configur var installationPath by Property(gradleHome.resolve("binaryen")) var downloadBaseUrl by Property("https://github.com/WebAssembly/binaryen/releases/download/") + // TODO stop using old GC instructions before moving to 112+ var version by Property("111") val setupTaskProvider: TaskProvider