[Wasm] Rewrite lazy initialization without by lazy and lateinit to reduce overhead

This commit is contained in:
Zalim Bashorov
2023-03-30 20:47:01 +02:00
parent 1a8a4fa65d
commit 295acdf2af
7 changed files with 42 additions and 27 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
// TARGET_BACKEND: WASM
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 66_687
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 65_583
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 6_517
// FILE: test.kt
+1 -1
View File
@@ -1,6 +1,6 @@
// TARGET_BACKEND: WASM
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 67_012
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 65_908
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 6_458
fun box(): String {
+1 -1
View File
@@ -1,6 +1,6 @@
// TARGET_BACKEND: WASM
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 78_710
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 77_603
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 6_956
// FILE: test.kt
+1 -1
View File
@@ -1,6 +1,6 @@
// TARGET_BACKEND: WASM
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 66_738
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 65_634
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 6_389
fun box() = "OK"
@@ -77,17 +77,17 @@ internal class TeamcityAdapter : FrameworkAdapter {
println("##teamcity[$type name='${name.tcEscape()}' message='${errorMessage.tcEscape()}' $flowId]")
}
private lateinit var _testArguments: FrameworkTestArguments
private var _testArguments: FrameworkTestArguments? = null
private val testArguments: FrameworkTestArguments
get() {
if (!::_testArguments.isInitialized) {
var value = _testArguments
if (value == null) {
val arguments = d8Arguments().takeIf { it.isNotEmpty() } ?: nodeArguments()
_testArguments = FrameworkTestArguments.parse(arguments.split(' '))
value = FrameworkTestArguments.parse(arguments.split(' '))
_testArguments = value
}
return _testArguments
return value
}
private fun runSuite(name: String, suiteFn: () -> Unit) {
@@ -24,13 +24,16 @@ public open class Throwable(open val message: String?, open val cause: kotlin.Th
private val jsStack: ExternalInterfaceType = captureStackTrace()
private lateinit var _stack: String
private var _stack: String? = null
internal val stack: String
get() {
if (!::_stack.isInitialized) {
_stack = jsToKotlinStringAdapter(jsStack).removePrefix("Error\n")
var value = _stack
if (value == null) {
value = jsToKotlinStringAdapter(jsStack).removePrefix("Error\n")
_stack = value
}
return _stack
return value
}
internal var suppressedExceptionsList: MutableList<Throwable>? = null
@@ -281,28 +281,40 @@ private fun getJsTrue(): JsBoolean =
private fun getJsFalse(): JsBoolean =
js("false")
private lateinit var _jsEmptyString: JsString
private var _jsEmptyString: JsString? = null
private val jsEmptyString: JsString
get() {
if (!::_jsEmptyString.isInitialized)
_jsEmptyString = getJsEmptyString()
return _jsEmptyString
var value = _jsEmptyString
if (value == null) {
value = getJsEmptyString()
_jsEmptyString = value
}
return value
}
private lateinit var _jsTrue: JsBoolean
private var _jsTrue: JsBoolean? = null
private val jsTrue: JsBoolean
get() {
if (!::_jsTrue.isInitialized)
_jsTrue = getJsTrue()
return _jsTrue
var value = _jsTrue
if (value == null) {
value = getJsTrue()
_jsTrue = value
}
return value
}
private lateinit var _jsFalse: JsBoolean
private val jsFalse: JsBoolean
private var _jsFalse: JsBoolean? = null
private val jsFalse: JsBoolean
get() {
if (!::_jsFalse.isInitialized)
_jsFalse = getJsFalse()
return _jsFalse
var value = _jsFalse
if (value == null) {
value = getJsFalse()
_jsFalse = value
}
return value
}
internal fun numberToDoubleAdapter(x: Number): Double =