From 94eefba8241a2d6294e4e155ca5f0dd41d17ac38 Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Tue, 19 Sep 2023 17:04:41 +0000 Subject: [PATCH] [K/Wasm] Optimize range checks --- .../jetbrains/kotlin/backend/wasm/WasmLoweringPhases.kt | 7 +++++++ compiler/testData/codegen/box/size/helloWorld.kt | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmLoweringPhases.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmLoweringPhases.kt index 7dcc91a3289..e3d2e8240cb 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmLoweringPhases.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmLoweringPhases.kt @@ -115,6 +115,12 @@ private val lateinitUsageLoweringPhase = makeWasmModulePhase( description = "Insert checks for lateinit field references" ) +private val rangeContainsLoweringPhase = makeWasmModulePhase( + ::RangeContainsLowering, + name = "RangeContainsLowering", + description = "[Optimization] Optimizes calls to contains() for ClosedRanges" +) + private val arrayConstructorReferencePhase = makeWasmModulePhase( ::WasmArrayConstructorReferenceLowering, name = "ArrayConstructorReference", @@ -637,6 +643,7 @@ val wasmPhases = SameTypeNamedCompilerPhase( lateinitNullableFieldsPhase then lateinitDeclarationLoweringPhase then lateinitUsageLoweringPhase then + rangeContainsLoweringPhase then arrayConstructorReferencePhase then arrayConstructorPhase then sharedVariablesLoweringPhase then diff --git a/compiler/testData/codegen/box/size/helloWorld.kt b/compiler/testData/codegen/box/size/helloWorld.kt index ef1ae7a82d8..944035ca84f 100644 --- a/compiler/testData/codegen/box/size/helloWorld.kt +++ b/compiler/testData/codegen/box/size/helloWorld.kt @@ -1,6 +1,6 @@ // TARGET_BACKEND: WASM -// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 48_430 +// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 40_730 // WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 4_552 fun box(): String {