[JS IR] Use Uint16Array as CharArray's storage
This commit is contained in:
@@ -23,5 +23,21 @@ fun box(): String {
|
||||
val bType3 = jsTypeOf(b[0].asDynamic())
|
||||
if (bType3 != "number") return "fail6: $bType3"
|
||||
|
||||
if (a.asDynamic().constructor.name != "Uint16Array") return "fail7: ${a.asDynamic().constructor.name}"
|
||||
if (b.asDynamic().constructor.name != "Array") return "fail8: ${b.asDynamic().constructor.name}"
|
||||
|
||||
val c = charArrayOf('Q')
|
||||
val cType = jsTypeOf(c.asDynamic()[0])
|
||||
if (cType != "number") return "fail9: $cType"
|
||||
|
||||
c[0] = 'W'
|
||||
val cType2 = jsTypeOf(c.asDynamic()[0])
|
||||
if (cType2 != "number") return "fail10: $cType2"
|
||||
|
||||
val cType3 = jsTypeOf(c[0].asDynamic())
|
||||
if (cType3 != "number") return "fail11: $cType3"
|
||||
|
||||
if (c.asDynamic().constructor.name != "Uint16Array") return "fail12: ${c.asDynamic().constructor.name}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,11 @@ internal fun booleanArray(size: Int): BooleanArray = withType("BooleanArray", fi
|
||||
|
||||
internal fun booleanArrayOf(arr: Array<Boolean>): BooleanArray = withType("BooleanArray", arr.asDynamic().slice()).unsafeCast<BooleanArray>()
|
||||
|
||||
internal fun charArray(size: Int): CharArray = withType("CharArray", fillArrayVal(Array<Int>(size), 0)).unsafeCast<CharArray>()
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
internal fun charArray(size: Int): CharArray = withType("CharArray", js("new Uint16Array(size)")).unsafeCast<CharArray>()
|
||||
|
||||
internal fun charArrayOf(arr: Array<Char>): CharArray = withType("CharArray", arr.asDynamic().slice()).unsafeCast<CharArray>()
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
internal fun charArrayOf(arr: Array<Char>): CharArray = withType("CharArray", js("new Uint16Array(arr)")).unsafeCast<CharArray>()
|
||||
|
||||
internal fun longArray(size: Int): LongArray = withType("LongArray", fillArrayVal(Array<Long>(size), 0L)).unsafeCast<LongArray>()
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ internal fun isChar(@Suppress("UNUSED_PARAMETER") c: Any): Boolean {
|
||||
internal fun isBooleanArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` === "BooleanArray"
|
||||
internal fun isByteArray(a: dynamic): Boolean = jsInstanceOf(a, js("Int8Array"))
|
||||
internal fun isShortArray(a: dynamic): Boolean = jsInstanceOf(a, js("Int16Array"))
|
||||
internal fun isCharArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` === "CharArray"
|
||||
internal fun isCharArray(a: dynamic): Boolean = jsInstanceOf(a, js("Uint16Array")) && a.`$type$` === "CharArray"
|
||||
internal fun isIntArray(a: dynamic): Boolean = jsInstanceOf(a, js("Int32Array"))
|
||||
internal fun isFloatArray(a: dynamic): Boolean = jsInstanceOf(a, js("Float32Array"))
|
||||
internal fun isDoubleArray(a: dynamic): Boolean = jsInstanceOf(a, js("Float64Array"))
|
||||
|
||||
Reference in New Issue
Block a user