[Wasm] Improve string constructor in stdlib

This commit is contained in:
Igor Laevsky
2021-10-22 21:16:04 +03:00
parent 8dc81b6c57
commit 46b56c7642
6 changed files with 32 additions and 11 deletions
@@ -147,7 +147,7 @@ internal fun convertJsStringToKotlinString(x: ExternalInterfaceType): String {
val length = stringLength(x)
val addr = unsafeGetScratchRawMemory(INT_SIZE_BYTES + length * CHAR_SIZE_BYTES)
jsWriteStringIntoMemory(x, addr)
return kotlin.String(unsafeRawMemoryToCharArray(addr, length))
return String.unsafeFromCharArray(unsafeRawMemoryToCharArray(addr, length))
}
@@ -64,7 +64,7 @@ internal fun itoa32(inputValue: Int, radix: Int): String {
if (sign == 1)
buf[0] = CharCodes.MINUS.code.toChar()
return kotlin.String(buf)
return String.unsafeFromCharArray(buf)
}
private fun utoaDecSimple(buffer: CharArray, numInput: Int, offsetInput: Int) {
@@ -144,7 +144,7 @@ internal fun itoa64(inputValue: Long, radix: Int): String {
if (sign == 1)
buf[0] = CharCodes.MINUS.code.toChar()
return kotlin.String(buf)
return String.unsafeFromCharArray(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 = CharArray(size)
buf.copyInto(ret, 0, 0, size)
return kotlin.String(ret)
return String.unsafeFromCharArray(ret)
}
private fun dtoaCore(buffer: CharArray, valueInp: Double): Int {