[WASM] Wasm string.plus optimisations

This commit is contained in:
Igor Yakovlev
2022-07-11 15:49:58 +02:00
committed by teamcity
parent fe187b609f
commit fff6b16483
6 changed files with 65 additions and 35 deletions
@@ -197,7 +197,7 @@ internal fun jsToKotlinStringAdapter(x: ExternalInterfaceType): String {
val stringLength = stringLength(x)
val dstArray = WasmCharArray(stringLength)
if (stringLength == 0) {
return String.unsafeFromCharArray(dstArray)
return String(dstArray)
}
val maxStringLength = unsafeGetScratchRawMemorySize() / CHAR_SIZE_BYTES
@@ -212,7 +212,7 @@ internal fun jsToKotlinStringAdapter(x: ExternalInterfaceType): String {
jsExportStringToWasm(x, srcStartIndex, stringLength - srcStartIndex, memBuffer)
unsafeRawMemoryToWasmCharArray(memBuffer, srcStartIndex, stringLength - srcStartIndex, dstArray)
return String.unsafeFromCharArray(dstArray)
return String(dstArray)
}
@@ -64,7 +64,7 @@ internal fun itoa32(inputValue: Int, radix: Int): String {
if (sign == 1)
buf.set(0, CharCodes.MINUS.code.toChar())
return String.unsafeFromCharArray(buf)
return String(buf)
}
private fun utoaDecSimple(buffer: WasmCharArray, numInput: Int, offsetInput: Int) {
@@ -144,7 +144,7 @@ internal fun itoa64(inputValue: Long, radix: Int): String {
if (sign == 1)
buf.set(0, CharCodes.MINUS.code.toChar())
return String.unsafeFromCharArray(buf)
return String(buf)
}
// Count number of decimals for u64 values
@@ -178,7 +178,7 @@ internal fun dtoa(value: Double): String {
val size = dtoaCore(buf, value)
val ret = WasmCharArray(size)
buf.copyInto(ret, 0, 0, size)
return String.unsafeFromCharArray(ret)
return String(ret)
}
private fun dtoaCore(buffer: WasmCharArray, valueInp: Double): Int {