diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 670305c1..b6a14a1b 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -119,11 +119,13 @@ export class Array { start = start < 0 ? max(len + start, 0) : min(start, len); end = end < 0 ? max(len + end, 0) : min(end, len); if (sizeof() == 1) { - memory.fill( - changetype(buffer) + start + HEADER_SIZE, - value, - (end - start) - ); + if (start < end) { + memory.fill( + changetype(buffer) + start + HEADER_SIZE, + value, + (end - start) + ); + } } else { for (; start < end; ++start) { storeUnsafe(buffer, start, value); diff --git a/std/assembly/internal/typedarray.ts b/std/assembly/internal/typedarray.ts index 0cb51cb7..68654bc1 100644 --- a/std/assembly/internal/typedarray.ts +++ b/std/assembly/internal/typedarray.ts @@ -63,8 +63,30 @@ export abstract class TypedArray { // copyWithin(target: i32, start: i32, end: i32 = this.length): this + fill(value: V, start: i32 = 0, end: i32 = i32.MAX_VALUE): this { + var buffer = this.buffer; + var byteOffset = this.byteOffset; + var len = this.length; + start = start < 0 ? max(len + start, 0) : min(start, len); + end = end < 0 ? max(len + end, 0) : min(end, len); + if (sizeof() == 1) { + if (start < end) { + memory.fill( + changetype(buffer) + start + byteOffset + AB_HEADER_SIZE, + value, + (end - start) + ); + } + } else { + for (; start < end; ++start) { + storeUnsafeWithOffset(buffer, start, value, byteOffset); + } + } + return this; + } + @inline - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): TypedArray { + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): TypedArray { var length = this.length; if (begin < 0) begin = max(length + begin, 0); else begin = min(begin, length); diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 99b5fa76..1a1ab35d 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -46,173 +46,177 @@ (data (i32.const 224) "\d0\00\00\00\05") (data (i32.const 232) "\05\00\00\00\00\00\00\00\01\01\00\02\02") (data (i32.const 248) "\e8\00\00\00\05") - (data (i32.const 256) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 289) "\01\00\00\05") - (data (i32.const 296) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 328) "(\01\00\00\05") - (data (i32.const 336) "\14") - (data (i32.const 368) "P\01\00\00\05") - (data (i32.const 376) "\14\00\00\00\00\00\00\00\01\00\00\00\01") - (data (i32.const 408) "x\01\00\00\05") - (data (i32.const 416) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 448) "\a0\01\00\00\05") - (data (i32.const 456) "\0c\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 488) "V\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") - (data (i32.const 664) " ") - (data (i32.const 674) "\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 728) "\98\02\00\00\08") - (data (i32.const 736) " ") - (data (i32.const 746) "\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 800) "\e0\02\00\00\08") - (data (i32.const 808) "@") - (data (i32.const 822) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") - (data (i32.const 862) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 936) "(\03\00\00\08") - (data (i32.const 944) "@") - (data (i32.const 958) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 990) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 1072) "\b0\03\00\00\08") - (data (i32.const 1080) "\14\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 1112) "8\04\00\00\05") - (data (i32.const 1120) "\14\00\00\00\00\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 1152) "`\04\00\00\05") - (data (i32.const 1160) "\14\00\00\00\00\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 1192) "\88\04\00\00\05") - (data (i32.const 1200) "\14") - (data (i32.const 1212) "\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 1232) "\b0\04\00\00\05") - (data (i32.const 1248) "\d8\04") - (data (i32.const 1256) "\04\00\00\00\00\00\00\00\01") - (data (i32.const 1272) "\e8\04\00\00\01") - (data (i32.const 1280) "\08\00\00\00\00\00\00\00\02\00\00\00\01") - (data (i32.const 1297) "\05\00\00\02") - (data (i32.const 1304) "\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 1336) "\18\05\00\00\04") - (data (i32.const 1344) "\10") - (data (i32.const 1356) "\01\00\00\00\02\00\00\00\03") - (data (i32.const 1376) "@\05\00\00\04") - (data (i32.const 1384) "\04\00\00\00\00\00\00\00\01") - (data (i32.const 1400) "h\05\00\00\01") - (data (i32.const 1408) "\08\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 1424) "\80\05\00\00\02") - (data (i32.const 1432) "\01\00\00\00a") - (data (i32.const 1440) "\01\00\00\00b") - (data (i32.const 1448) "\02\00\00\00a\00b") - (data (i32.const 1456) "\02\00\00\00b\00a") - (data (i32.const 1472) "\1c\00\00\00\00\00\00\00\98\05\00\00\a0\05\00\00\98\05\00\00\a8\05\00\00\b0\05\00\00\b8\05") - (data (i32.const 1536) "\c0\05\00\00\07") - (data (i32.const 1544) "\1c\00\00\00\00\00\00\00\b8\05\00\00\98\05\00\00\98\05\00\00\a8\05\00\00\a0\05\00\00\b0\05") - (data (i32.const 1608) "\08\06\00\00\07") - (data (i32.const 1616) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1648) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1704) "\04\00\00\00n\00u\00l\00l") - (data (i32.const 1720) "\02\00\00\00\00\00\00\00\01") - (data (i32.const 1736) "\b8\06\00\00\02") - (data (i32.const 1744) "\04\00\00\00t\00r\00u\00e") - (data (i32.const 1760) "\05\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1776) "\01\00\00\00,") + (data (i32.const 256) "\05\00\00\00\00\00\00\00\01\01\00\02\02") + (data (i32.const 273) "\01\00\00\05") + (data (i32.const 280) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 312) "\18\01\00\00\05") + (data (i32.const 320) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 352) "@\01\00\00\05") + (data (i32.const 360) "\14") + (data (i32.const 392) "h\01\00\00\05") + (data (i32.const 400) "\14\00\00\00\00\00\00\00\01\00\00\00\01") + (data (i32.const 432) "\90\01\00\00\05") + (data (i32.const 440) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 472) "\b8\01\00\00\05") + (data (i32.const 480) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 512) "\e0\01\00\00\05") + (data (i32.const 520) "\0c\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 552) "V\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") + (data (i32.const 728) " ") + (data (i32.const 738) "\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 792) "\d8\02\00\00\08") + (data (i32.const 800) " ") + (data (i32.const 810) "\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data (i32.const 864) " \03\00\00\08") + (data (i32.const 872) "@") + (data (i32.const 886) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data (i32.const 926) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 1000) "h\03\00\00\08") + (data (i32.const 1008) "@") + (data (i32.const 1022) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 1054) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 1136) "\f0\03\00\00\08") + (data (i32.const 1144) "\14\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 1176) "x\04\00\00\05") + (data (i32.const 1184) "\14\00\00\00\00\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 1216) "\a0\04\00\00\05") + (data (i32.const 1224) "\14\00\00\00\00\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data (i32.const 1256) "\c8\04\00\00\05") + (data (i32.const 1264) "\14") + (data (i32.const 1276) "\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 1296) "\f0\04\00\00\05") + (data (i32.const 1312) "\18\05") + (data (i32.const 1320) "\04\00\00\00\00\00\00\00\01") + (data (i32.const 1336) "(\05\00\00\01") + (data (i32.const 1344) "\08\00\00\00\00\00\00\00\02\00\00\00\01") + (data (i32.const 1360) "@\05\00\00\02") + (data (i32.const 1368) "\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 1400) "X\05\00\00\04") + (data (i32.const 1408) "\10") + (data (i32.const 1420) "\01\00\00\00\02\00\00\00\03") + (data (i32.const 1440) "\80\05\00\00\04") + (data (i32.const 1448) "\04\00\00\00\00\00\00\00\01") + (data (i32.const 1464) "\a8\05\00\00\01") + (data (i32.const 1472) "\08\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 1488) "\c0\05\00\00\02") + (data (i32.const 1496) "\01\00\00\00a") + (data (i32.const 1504) "\01\00\00\00b") + (data (i32.const 1512) "\02\00\00\00a\00b") + (data (i32.const 1520) "\02\00\00\00b\00a") + (data (i32.const 1536) "\1c\00\00\00\00\00\00\00\d8\05\00\00\e0\05\00\00\d8\05\00\00\e8\05\00\00\f0\05\00\00\f8\05") + (data (i32.const 1601) "\06\00\00\07") + (data (i32.const 1608) "\1c\00\00\00\00\00\00\00\f8\05\00\00\d8\05\00\00\d8\05\00\00\e8\05\00\00\e0\05\00\00\f0\05") + (data (i32.const 1672) "H\06\00\00\07") + (data (i32.const 1680) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1712) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1768) "\04\00\00\00n\00u\00l\00l") (data (i32.const 1784) "\02\00\00\00\00\00\00\00\01") (data (i32.const 1800) "\f8\06\00\00\02") - (data (i32.const 1808) "\n\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 1832) "\0c\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 1864) "(\07\00\00\03") - (data (i32.const 1872) "\01\00\00\000") - (data (i32.const 1880) "\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 2392) "X\07\00\00d") - (data (i32.const 2400) "\0c\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 2432) "`\t\00\00\03") - (data (i32.const 2440) "\05\00\00\001\00-\002\00-\003") - (data (i32.const 2456) "\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 2488) "\98\t\00\00\03") - (data (i32.const 2496) "\01\00\00\00-") - (data (i32.const 2504) "\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 2536) "\c8\t\00\00\03") - (data (i32.const 2544) "\08") - (data (i32.const 2555) "\80\00\00\00\80") - (data (i32.const 2560) "\f0\t\00\00\02") - (data (i32.const 2568) "\02\00\00\00_\00_") - (data (i32.const 2576) "\08") - (data (i32.const 2587) "\80\00\00\00\80") - (data (i32.const 2592) "\10\n\00\00\02") - (data (i32.const 2600) "\18\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2656) "0") - (data (i32.const 2678) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 2720) "`\n\00\00\06") - (data (i32.const 2728) "\02\00\00\00,\00 ") - (data (i32.const 2736) "\03\00\00\000\00.\000") - (data (i32.const 2752) "\03\00\00\00N\00a\00N") - (data (i32.const 2768) "\t\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2792) "\08\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2816) "\b8\02\00\00\00\00\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#sort|trampoline~anonymous|43 $~lib/array/Array#sort|trampoline~anonymous|44 $~lib/array/Array#sort|trampoline~anonymous|45 $~lib/array/Array#sort|trampoline~anonymous|46 $~lib/array/Array#sort|trampoline~anonymous|45 $~lib/array/Array#sort|trampoline~anonymous|45 $start~anonymous|49 $~lib/array/Array#sort|trampoline~anonymous|45 $start~anonymous|49 $start~anonymous|52 $start~anonymous|53 $start~anonymous|54 $start~anonymous|54) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -228,7 +232,7 @@ (global $std/array/arr (mut i32) (i32.const 0)) (global $std/array/arr8 (mut i32) (i32.const 120)) (global $~argc (mut i32) (i32.const 0)) - (global $std/array/arr32 (mut i32) (i32.const 288)) + (global $std/array/arr32 (mut i32) (i32.const 312)) (global $std/array/i (mut i32) (i32.const 0)) (global $std/array/includes (mut i32) (i32.const 0)) (global $std/array/every (mut i32) (i32.const 0)) @@ -241,15 +245,15 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/f32ArrayTyped (mut i32) (i32.const 728)) - (global $std/array/f64ArrayTyped (mut i32) (i32.const 936)) - (global $std/array/i32ArrayTyped (mut i32) (i32.const 1112)) - (global $std/array/u32ArrayTyped (mut i32) (i32.const 1192)) - (global $std/array/reversed0 (mut i32) (i32.const 1248)) - (global $std/array/reversed1 (mut i32) (i32.const 1272)) - (global $std/array/reversed2 (mut i32) (i32.const 1296)) - (global $std/array/reversed4 (mut i32) (i32.const 1336)) - (global $std/array/expected4 (mut i32) (i32.const 1376)) + (global $std/array/f32ArrayTyped (mut i32) (i32.const 792)) + (global $std/array/f64ArrayTyped (mut i32) (i32.const 1000)) + (global $std/array/i32ArrayTyped (mut i32) (i32.const 1176)) + (global $std/array/u32ArrayTyped (mut i32) (i32.const 1256)) + (global $std/array/reversed0 (mut i32) (i32.const 1312)) + (global $std/array/reversed1 (mut i32) (i32.const 1336)) + (global $std/array/reversed2 (mut i32) (i32.const 1360)) + (global $std/array/reversed4 (mut i32) (i32.const 1400)) + (global $std/array/expected4 (mut i32) (i32.const 1440)) (global $std/array/reversed64 (mut i32) (i32.const 0)) (global $std/array/reversed128 (mut i32) (i32.const 0)) (global $std/array/reversed1024 (mut i32) (i32.const 0)) @@ -259,13 +263,13 @@ (global $std/array/randomized257 (mut i32) (i32.const 0)) (global $std/array/reversedNested512 (mut i32) (i32.const 0)) (global $std/array/reversedElements512 (mut i32) (i32.const 0)) - (global $std/array/randomStringsActual (mut i32) (i32.const 1536)) - (global $std/array/randomStringsExpected (mut i32) (i32.const 1608)) + (global $std/array/randomStringsActual (mut i32) (i32.const 1600)) + (global $std/array/randomStringsExpected (mut i32) (i32.const 1672)) (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $std/array/refArr (mut i32) (i32.const 0)) - (global $std/array/subarr32 (mut i32) (i32.const 5816)) - (global $std/array/subarr8 (mut i32) (i32.const 5912)) - (global $std/array/subarrU32 (mut i32) (i32.const 5984)) + (global $std/array/subarr32 (mut i32) (i32.const 5880)) + (global $std/array/subarr8 (mut i32) (i32.const 5976)) + (global $std/array/subarrU32 (mut i32) (i32.const 6048)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -794,53 +798,50 @@ (func $~lib/array/Array#fill (; 8 ;) (; has Stack IR ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (set_local $6 + (i32.load + (get_local $0) + ) + ) (set_local $4 (i32.load offset=4 (get_local $0) ) ) - (call $~lib/internal/memory/memset - (i32.add - (i32.add - (i32.load - (get_local $0) - ) - (tee_local $2 - (if (result i32) + (if + (i32.lt_s + (tee_local $2 + (if (result i32) + (i32.lt_s + (get_local $2) + (i32.const 0) + ) + (select + (tee_local $5 + (i32.add + (get_local $4) + (get_local $2) + ) + ) + (i32.const 0) + (i32.gt_s + (get_local $5) + (i32.const 0) + ) + ) + (select + (tee_local $5 + (get_local $2) + ) + (get_local $4) (i32.lt_s (get_local $2) - (i32.const 0) - ) - (select - (tee_local $5 - (i32.add - (get_local $4) - (get_local $2) - ) - ) - (i32.const 0) - (i32.gt_s - (get_local $5) - (i32.const 0) - ) - ) - (select - (tee_local $5 - (get_local $2) - ) (get_local $4) - (i32.lt_s - (get_local $2) - (get_local $4) - ) ) ) ) ) - (i32.const 8) - ) - (get_local $1) - (i32.sub (tee_local $3 (if (result i32) (i32.lt_s @@ -872,7 +873,20 @@ ) ) ) - (get_local $2) + ) + (call $~lib/internal/memory/memset + (i32.add + (i32.add + (get_local $6) + (get_local $2) + ) + (i32.const 8) + ) + (get_local $1) + (i32.sub + (get_local $3) + (get_local $2) + ) ) ) (get_local $0) @@ -3101,7 +3115,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 172) + (i32.const 174) (i32.const 42) ) (unreachable) @@ -3154,7 +3168,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 184) + (i32.const 186) (i32.const 20) ) (unreachable) @@ -3225,7 +3239,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 274) + (i32.const 276) (i32.const 42) ) (unreachable) @@ -3297,7 +3311,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 245) + (i32.const 247) (i32.const 20) ) (unreachable) @@ -4744,7 +4758,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 456) + (i32.const 520) (i32.const 955) (i32.const 4) ) @@ -5293,7 +5307,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -5470,7 +5484,7 @@ ) ) (i32.load - (i32.const 804) + (i32.const 868) ) ) (return @@ -5480,7 +5494,7 @@ (if (i32.eq (get_local $0) - (i32.const 800) + (i32.const 864) ) (return (i32.const 1) @@ -5506,7 +5520,7 @@ (set_local $4 (call $~lib/builtins/isNaN (call $~lib/array/Array#__get - (i32.const 800) + (i32.const 864) (get_local $1) ) ) @@ -5525,7 +5539,7 @@ ) (set_local $6 (call $~lib/array/Array#__get - (i32.const 800) + (i32.const 864) (get_local $1) ) ) @@ -6060,7 +6074,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -6264,7 +6278,7 @@ ) ) (i32.load - (i32.const 1076) + (i32.const 1140) ) ) (return @@ -6274,7 +6288,7 @@ (if (i32.eq (get_local $0) - (i32.const 1072) + (i32.const 1136) ) (return (i32.const 1) @@ -6300,7 +6314,7 @@ (set_local $4 (call $~lib/builtins/isNaN (call $~lib/array/Array#__get - (i32.const 1072) + (i32.const 1136) (get_local $1) ) ) @@ -6319,7 +6333,7 @@ ) (set_local $6 (call $~lib/array/Array#__get - (i32.const 1072) + (i32.const 1136) (get_local $1) ) ) @@ -6856,7 +6870,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -7060,7 +7074,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 456) + (i32.const 520) (i32.const 964) (i32.const 24) ) @@ -7245,7 +7259,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 639) + (i32.const 645) (i32.const 2) ) (unreachable) @@ -7352,7 +7366,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -7448,7 +7462,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 639) + (i32.const 645) (i32.const 2) ) (unreachable) @@ -7901,7 +7915,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 14) (i32.const 2) ) @@ -7930,11 +7944,11 @@ (i32.ge_u (get_local $0) (i32.load - (i32.const 488) + (i32.const 552) ) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (i32.store16 offset=4 @@ -7949,7 +7963,7 @@ (get_local $0) (i32.const 1) ) - (i32.const 488) + (i32.const 552) ) ) ) @@ -7994,7 +8008,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1616) + (i32.const 1680) (i32.const 110) (i32.const 4) ) @@ -8006,7 +8020,7 @@ (get_local $1) ) (set_local $1 - (i32.const 1704) + (i32.const 1768) ) ) (if @@ -8027,7 +8041,7 @@ ) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (call $~lib/internal/string/copyUnsafe @@ -8056,7 +8070,7 @@ (get_local $0) ) (set_local $0 - (i32.const 1704) + (i32.const 1768) ) ) (call $~lib/string/String#concat @@ -8069,7 +8083,7 @@ (local $2 i32) (local $3 i32) (set_local $1 - (i32.const 1464) + (i32.const 1528) ) (block $break|0 (loop $repeat|0 @@ -8087,7 +8101,7 @@ (call $~lib/math/NativeMath.random) (f64.convert_s/i32 (i32.load - (i32.const 488) + (i32.const 552) ) ) ) @@ -8168,7 +8182,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1616) + (i32.const 1680) (i32.const 269) (i32.const 4) ) @@ -8236,7 +8250,7 @@ ) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (if @@ -8289,7 +8303,7 @@ (tee_local $4 (i32.sub (i32.load - (i32.const 1804) + (i32.const 1868) ) (i32.const 1) ) @@ -8297,19 +8311,19 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $5 (i32.load - (i32.const 1800) + (i32.const 1864) ) ) (set_local $7 (i32.ne (tee_local $6 (i32.load - (i32.const 1776) + (i32.const 1840) ) ) (i32.const 0) @@ -8321,8 +8335,8 @@ ) (return (select - (i32.const 1744) - (i32.const 1760) + (i32.const 1808) + (i32.const 1824) (i32.and (i32.load8_u offset=8 (get_local $5) @@ -8378,8 +8392,8 @@ (get_local $2) (get_local $0) (select - (i32.const 1744) - (i32.const 1760) + (i32.const 1808) + (i32.const 1824) (get_local $9) ) (i32.const 0) @@ -8397,7 +8411,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $2) (get_local $0) - (i32.const 1776) + (i32.const 1840) (i32.const 0) (get_local $6) ) @@ -8440,8 +8454,8 @@ (get_local $2) (get_local $0) (select - (i32.const 1744) - (i32.const 1760) + (i32.const 1808) + (i32.const 1824) (get_local $1) ) (i32.const 0) @@ -8474,7 +8488,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -8557,7 +8571,7 @@ (local $4 i32) (set_local $3 (i32.load - (i32.const 2392) + (i32.const 2456) ) ) (loop $continue|0 @@ -8722,7 +8736,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (if @@ -8856,7 +8870,7 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $5 @@ -9000,7 +9014,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -9020,7 +9034,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (call $~lib/internal/number/utoa32_lut @@ -9102,7 +9116,7 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $5 @@ -9246,7 +9260,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -9321,7 +9335,7 @@ ) (set_local $12 (i32.load - (i32.const 4176) + (i32.const 4240) ) ) (loop $continue|0 @@ -10442,14 +10456,14 @@ ) (set_local $5 (i32.load - (i32.const 4104) + (i32.const 4168) ) ) (set_global $~lib/internal/number/_frc_pow (i64.load offset=8 (i32.add (i32.load - (i32.const 3840) + (i32.const 3904) ) (i32.shl (get_local $3) @@ -10768,7 +10782,7 @@ (f64.const 0) ) (return - (i32.const 2736) + (i32.const 2800) ) ) (if @@ -10783,13 +10797,13 @@ (get_local $0) ) (return - (i32.const 2752) + (i32.const 2816) ) ) (return (select - (i32.const 2768) - (i32.const 2792) + (i32.const 2832) + (i32.const 2856) (f64.lt (get_local $0) (f64.const 0) @@ -10821,7 +10835,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -10910,8 +10924,8 @@ (i32.const 4) ) (select - (i32.const 2768) - (i32.const 2792) + (i32.const 2832) + (i32.const 2856) (get_local $3) ) (i32.shl @@ -10945,7 +10959,7 @@ (tee_local $1 (i32.sub (i32.load - (i32.const 4252) + (i32.const 4316) ) (i32.const 1) ) @@ -10953,19 +10967,19 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $4 (i32.load - (i32.const 4248) + (i32.const 4312) ) ) (set_local $6 (i32.ne (tee_local $5 (i32.load - (i32.const 2728) + (i32.const 2792) ) ) (i32.const 0) @@ -11034,7 +11048,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $2) (get_local $0) - (i32.const 2728) + (i32.const 2792) (i32.const 0) (get_local $5) ) @@ -11097,7 +11111,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -11130,7 +11144,7 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $6 @@ -11348,7 +11362,7 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $5 @@ -11360,7 +11374,7 @@ (i32.ne (tee_local $4 (i32.load - (i32.const 1776) + (i32.const 1840) ) ) (i32.const 0) @@ -11371,7 +11385,7 @@ (get_local $3) ) (return - (i32.const 4432) + (i32.const 4496) ) ) (set_local $0 @@ -11412,7 +11426,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $0) (get_local $1) - (i32.const 4432) + (i32.const 4496) (i32.const 0) (i32.const 15) ) @@ -11430,7 +11444,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $0) (get_local $1) - (i32.const 1776) + (i32.const 1840) (i32.const 0) (get_local $4) ) @@ -11465,7 +11479,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $0) (get_local $1) - (i32.const 4432) + (i32.const 4496) (i32.const 0) (i32.const 15) ) @@ -11499,7 +11513,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -11621,7 +11635,7 @@ (tee_local $1 (i32.sub (i32.load - (i32.const 4628) + (i32.const 4692) ) (i32.const 1) ) @@ -11629,19 +11643,19 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $4 (i32.load - (i32.const 4624) + (i32.const 4688) ) ) (set_local $6 (i32.ne (tee_local $5 (i32.load - (i32.const 1776) + (i32.const 1840) ) ) (i32.const 0) @@ -11707,7 +11721,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $2) (get_local $0) - (i32.const 1776) + (i32.const 1840) (i32.const 0) (get_local $5) ) @@ -11767,7 +11781,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -11848,7 +11862,7 @@ (tee_local $1 (i32.sub (i32.load - (i32.const 4692) + (i32.const 4756) ) (i32.const 1) ) @@ -11856,19 +11870,19 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $4 (i32.load - (i32.const 4688) + (i32.const 4752) ) ) (set_local $6 (i32.ne (tee_local $5 (i32.load - (i32.const 1776) + (i32.const 1840) ) ) (i32.const 0) @@ -11937,7 +11951,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $2) (get_local $0) - (i32.const 1776) + (i32.const 1840) (i32.const 0) (get_local $5) ) @@ -12000,7 +12014,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -12085,7 +12099,7 @@ (local $6 i32) (set_local $3 (i32.load - (i32.const 5272) + (i32.const 5336) ) ) (loop $continue|0 @@ -12233,7 +12247,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (if @@ -12355,7 +12369,7 @@ (tee_local $1 (i32.sub (i32.load - (i32.const 5316) + (i32.const 5380) ) (i32.const 1) ) @@ -12363,19 +12377,19 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $4 (i32.load - (i32.const 5312) + (i32.const 5376) ) ) (set_local $6 (i32.ne (tee_local $5 (i32.load - (i32.const 1776) + (i32.const 1840) ) ) (i32.const 0) @@ -12444,7 +12458,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $2) (get_local $0) - (i32.const 1776) + (i32.const 1840) (i32.const 0) (get_local $5) ) @@ -12507,7 +12521,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -12529,7 +12543,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (if @@ -12714,7 +12728,7 @@ (tee_local $1 (i32.sub (i32.load - (i32.const 5516) + (i32.const 5580) ) (i32.const 1) ) @@ -12722,19 +12736,19 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $4 (i32.load - (i32.const 5512) + (i32.const 5576) ) ) (set_local $6 (i32.ne (tee_local $5 (i32.load - (i32.const 1776) + (i32.const 1840) ) ) (i32.const 0) @@ -12803,7 +12817,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $2) (get_local $0) - (i32.const 1776) + (i32.const 1840) (i32.const 0) (get_local $5) ) @@ -12866,7 +12880,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -12897,11 +12911,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $1 - (i32.const 1464) + (i32.const 1528) ) (set_local $4 (i32.load @@ -12911,7 +12925,7 @@ (set_local $5 (i32.ne (i32.load - (i32.const 1776) + (i32.const 1840) ) (i32.const 0) ) @@ -12930,9 +12944,9 @@ ) (call $~lib/array/Array#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -12964,7 +12978,7 @@ (set_local $2 (call $~lib/array/Array#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) ) (set_local $1 @@ -12980,7 +12994,7 @@ (set_local $1 (call $~lib/string/String.__concat (get_local $1) - (i32.const 1776) + (i32.const 1840) ) ) ) @@ -13009,7 +13023,7 @@ (set_local $0 (call $~lib/array/Array#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) ) (set_local $1 @@ -13098,7 +13112,7 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $5 @@ -13236,7 +13250,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -13267,11 +13281,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $1 - (i32.const 1464) + (i32.const 1528) ) (set_local $4 (i32.load @@ -13281,7 +13295,7 @@ (set_local $5 (i32.ne (i32.load - (i32.const 1776) + (i32.const 1840) ) (i32.const 0) ) @@ -13300,9 +13314,9 @@ ) (call $~lib/array/Array#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -13334,7 +13348,7 @@ (set_local $2 (call $~lib/array/Array#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) ) (set_local $1 @@ -13350,7 +13364,7 @@ (set_local $1 (call $~lib/string/String.__concat (get_local $1) - (i32.const 1776) + (i32.const 1840) ) ) ) @@ -13379,7 +13393,7 @@ (set_local $0 (call $~lib/array/Array#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) ) (set_local $1 @@ -13411,11 +13425,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $2 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -13446,7 +13460,7 @@ (get_local $3) (get_local $1) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -13555,11 +13569,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $1 - (i32.const 1464) + (i32.const 1528) ) (set_local $4 (i32.load @@ -13569,7 +13583,7 @@ (set_local $5 (i32.ne (i32.load - (i32.const 1776) + (i32.const 1840) ) (i32.const 0) ) @@ -13588,9 +13602,9 @@ ) (call $~lib/array/Array>#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -13622,7 +13636,7 @@ (set_local $2 (call $~lib/array/Array>#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) ) (set_local $1 @@ -13638,7 +13652,7 @@ (set_local $1 (call $~lib/string/String.__concat (get_local $1) - (i32.const 1776) + (i32.const 1840) ) ) ) @@ -13667,7 +13681,7 @@ (set_local $0 (call $~lib/array/Array>#join (get_local $2) - (i32.const 1776) + (i32.const 1840) ) ) (set_local $1 @@ -13686,7 +13700,7 @@ (local $2 f32) (local $3 f32) (set_global $~lib/allocator/arena/startOffset - (i32.const 5992) + (i32.const 6056) ) (set_global $~lib/allocator/arena/offset (get_global $~lib/allocator/arena/startOffset) @@ -13800,6 +13814,31 @@ (unreachable) ) ) + (drop + (call $~lib/array/Array#fill + (get_global $std/array/arr8) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/array/isArraysEqual + (get_global $std/array/arr8) + (i32.const 272) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 48) + (i32.const 0) + ) + (unreachable) + ) + ) (drop (call $~lib/array/Array#fill (get_global $std/array/arr32) @@ -13812,7 +13851,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 328) + (i32.const 352) (i32.const 0) ) ) @@ -13820,7 +13859,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 50) + (i32.const 53) (i32.const 0) ) (unreachable) @@ -13840,7 +13879,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 368) + (i32.const 392) (i32.const 0) ) ) @@ -13848,7 +13887,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 53) + (i32.const 56) (i32.const 0) ) (unreachable) @@ -13866,7 +13905,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 408) + (i32.const 432) (i32.const 0) ) ) @@ -13874,7 +13913,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 56) + (i32.const 59) (i32.const 0) ) (unreachable) @@ -13894,7 +13933,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 448) + (i32.const 472) (i32.const 0) ) ) @@ -13902,7 +13941,33 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 59) + (i32.const 62) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#fill + (get_global $std/array/arr32) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/array/isArraysEqual + (get_global $std/array/arr32) + (i32.const 512) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 65) (i32.const 0) ) (unreachable) @@ -13916,7 +13981,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 63) + (i32.const 69) (i32.const 0) ) (unreachable) @@ -13930,7 +13995,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 64) + (i32.const 70) (i32.const 0) ) (unreachable) @@ -13954,7 +14019,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 68) + (i32.const 74) (i32.const 0) ) (unreachable) @@ -13967,57 +14032,6 @@ ) (i32.const 1) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 69) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.ne - (call $std/array/internalCapacity - (get_global $std/array/arr) - ) - (i32.const 1) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 70) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $std/array/i - (call $~lib/array/Array#pop - (get_global $std/array/arr) - ) - ) - (if - (i32.ne - (get_global $std/array/i) - (i32.const 42) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 74) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.load offset=4 - (get_global $std/array/arr) - ) (block (call $~lib/env/abort (i32.const 0) @@ -14045,18 +14059,15 @@ (unreachable) ) ) - (drop - (call $~lib/array/Array#push + (set_global $std/array/i + (call $~lib/array/Array#pop (get_global $std/array/arr) - (i32.const 43) ) ) (if (i32.ne - (i32.load offset=4 - (get_global $std/array/arr) - ) - (i32.const 1) + (get_global $std/array/i) + (i32.const 42) ) (block (call $~lib/env/abort @@ -14068,6 +14079,20 @@ (unreachable) ) ) + (if + (i32.load offset=4 + (get_global $std/array/arr) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 81) + (i32.const 0) + ) + (unreachable) + ) + ) (if (i32.ne (call $std/array/internalCapacity @@ -14075,24 +14100,6 @@ ) (i32.const 1) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 81) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.ne - (call $~lib/array/Array#__get - (get_global $std/array/arr) - (i32.const 0) - ) - (i32.const 43) - ) (block (call $~lib/env/abort (i32.const 0) @@ -14106,7 +14113,7 @@ (drop (call $~lib/array/Array#push (get_global $std/array/arr) - (i32.const 44) + (i32.const 43) ) ) (if @@ -14114,7 +14121,7 @@ (i32.load offset=4 (get_global $std/array/arr) ) - (i32.const 2) + (i32.const 1) ) (block (call $~lib/env/abort @@ -14131,7 +14138,7 @@ (call $std/array/internalCapacity (get_global $std/array/arr) ) - (i32.const 2) + (i32.const 1) ) (block (call $~lib/env/abort @@ -14161,6 +14168,64 @@ (unreachable) ) ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 44) + ) + ) + (if + (i32.ne + (i32.load offset=4 + (get_global $std/array/arr) + ) + (i32.const 2) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 92) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $std/array/internalCapacity + (get_global $std/array/arr) + ) + (i32.const 2) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 93) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#__get + (get_global $std/array/arr) + (i32.const 0) + ) + (i32.const 43) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 94) + (i32.const 0) + ) + (unreachable) + ) + ) (if (i32.ne (call $~lib/array/Array#__get @@ -14173,7 +14238,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 89) + (i32.const 95) (i32.const 0) ) (unreachable) @@ -14196,7 +14261,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 93) + (i32.const 99) (i32.const 0) ) (unreachable) @@ -14213,7 +14278,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 94) + (i32.const 100) (i32.const 0) ) (unreachable) @@ -14231,7 +14296,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 95) + (i32.const 101) (i32.const 0) ) (unreachable) @@ -14249,7 +14314,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 96) + (i32.const 102) (i32.const 0) ) (unreachable) @@ -14267,7 +14332,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 97) + (i32.const 103) (i32.const 0) ) (unreachable) @@ -14290,7 +14355,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 103) + (i32.const 109) (i32.const 0) ) (unreachable) @@ -14307,7 +14372,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 104) + (i32.const 110) (i32.const 0) ) (unreachable) @@ -14325,7 +14390,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 105) + (i32.const 111) (i32.const 0) ) (unreachable) @@ -14339,65 +14404,6 @@ ) (i32.const 43) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 106) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.ne - (call $~lib/array/Array#__get - (get_global $std/array/arr) - (i32.const 2) - ) - (i32.const 44) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 107) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.ne - (call $~lib/array/Array#__get - (get_global $std/array/arr) - (i32.const 3) - ) - (i32.const 45) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 108) - (i32.const 0) - ) - (unreachable) - ) - ) - (drop - (call $~lib/array/Array#unshift - (get_global $std/array/arr) - (i32.const 41) - ) - ) - (if - (i32.ne - (i32.load offset=4 - (get_global $std/array/arr) - ) - (i32.const 5) - ) (block (call $~lib/env/abort (i32.const 0) @@ -14410,10 +14416,11 @@ ) (if (i32.ne - (call $std/array/internalCapacity + (call $~lib/array/Array#__get (get_global $std/array/arr) + (i32.const 2) ) - (i32.const 5) + (i32.const 44) ) (block (call $~lib/env/abort @@ -14425,6 +14432,64 @@ (unreachable) ) ) + (if + (i32.ne + (call $~lib/array/Array#__get + (get_global $std/array/arr) + (i32.const 3) + ) + (i32.const 45) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 114) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#unshift + (get_global $std/array/arr) + (i32.const 41) + ) + ) + (if + (i32.ne + (i32.load offset=4 + (get_global $std/array/arr) + ) + (i32.const 5) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 118) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $std/array/internalCapacity + (get_global $std/array/arr) + ) + (i32.const 5) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 119) + (i32.const 0) + ) + (unreachable) + ) + ) (if (i32.ne (call $~lib/array/Array#__get @@ -14437,7 +14502,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 114) + (i32.const 120) (i32.const 0) ) (unreachable) @@ -14455,7 +14520,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 115) + (i32.const 121) (i32.const 0) ) (unreachable) @@ -14473,7 +14538,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 116) + (i32.const 122) (i32.const 0) ) (unreachable) @@ -14491,7 +14556,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 117) + (i32.const 123) (i32.const 0) ) (unreachable) @@ -14509,7 +14574,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 118) + (i32.const 124) (i32.const 0) ) (unreachable) @@ -14529,7 +14594,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 124) + (i32.const 130) (i32.const 0) ) (unreachable) @@ -14546,7 +14611,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 125) + (i32.const 131) (i32.const 0) ) (unreachable) @@ -14563,7 +14628,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 126) + (i32.const 132) (i32.const 0) ) (unreachable) @@ -14581,7 +14646,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 127) + (i32.const 133) (i32.const 0) ) (unreachable) @@ -14599,7 +14664,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 128) + (i32.const 134) (i32.const 0) ) (unreachable) @@ -14617,7 +14682,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 129) + (i32.const 135) (i32.const 0) ) (unreachable) @@ -14635,7 +14700,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 130) + (i32.const 136) (i32.const 0) ) (unreachable) @@ -14655,7 +14720,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 134) + (i32.const 140) (i32.const 0) ) (unreachable) @@ -14672,7 +14737,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 135) + (i32.const 141) (i32.const 0) ) (unreachable) @@ -14689,7 +14754,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 136) + (i32.const 142) (i32.const 0) ) (unreachable) @@ -14707,7 +14772,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 137) + (i32.const 143) (i32.const 0) ) (unreachable) @@ -14725,7 +14790,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 138) + (i32.const 144) (i32.const 0) ) (unreachable) @@ -14743,7 +14808,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 139) + (i32.const 145) (i32.const 0) ) (unreachable) @@ -14765,7 +14830,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 145) + (i32.const 151) (i32.const 0) ) (unreachable) @@ -14782,7 +14847,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 146) + (i32.const 152) (i32.const 0) ) (unreachable) @@ -14800,7 +14865,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 147) + (i32.const 153) (i32.const 0) ) (unreachable) @@ -14818,7 +14883,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 148) + (i32.const 154) (i32.const 0) ) (unreachable) @@ -14836,7 +14901,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 149) + (i32.const 155) (i32.const 0) ) (unreachable) @@ -14867,7 +14932,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 158) + (i32.const 164) (i32.const 0) ) (unreachable) @@ -14889,7 +14954,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 162) + (i32.const 168) (i32.const 0) ) (unreachable) @@ -14911,7 +14976,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 166) + (i32.const 172) (i32.const 0) ) (unreachable) @@ -14933,7 +14998,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 170) + (i32.const 176) (i32.const 0) ) (unreachable) @@ -14955,7 +15020,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 174) + (i32.const 180) (i32.const 0) ) (unreachable) @@ -14977,7 +15042,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 178) + (i32.const 184) (i32.const 0) ) (unreachable) @@ -14999,7 +15064,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 182) + (i32.const 188) (i32.const 0) ) (unreachable) @@ -15021,7 +15086,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 186) + (i32.const 192) (i32.const 0) ) (unreachable) @@ -15043,7 +15108,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 190) + (i32.const 196) (i32.const 0) ) (unreachable) @@ -15065,7 +15130,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 194) + (i32.const 200) (i32.const 0) ) (unreachable) @@ -15090,7 +15155,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 200) + (i32.const 206) (i32.const 0) ) (unreachable) @@ -15115,7 +15180,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 204) + (i32.const 210) (i32.const 0) ) (unreachable) @@ -15137,7 +15202,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 208) + (i32.const 214) (i32.const 0) ) (unreachable) @@ -15159,7 +15224,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 212) + (i32.const 218) (i32.const 0) ) (unreachable) @@ -15184,7 +15249,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 216) + (i32.const 222) (i32.const 0) ) (unreachable) @@ -15209,7 +15274,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 220) + (i32.const 226) (i32.const 0) ) (unreachable) @@ -15234,7 +15299,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 224) + (i32.const 230) (i32.const 0) ) (unreachable) @@ -15259,7 +15324,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 228) + (i32.const 234) (i32.const 0) ) (unreachable) @@ -15284,7 +15349,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 232) + (i32.const 238) (i32.const 0) ) (unreachable) @@ -15309,7 +15374,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 236) + (i32.const 242) (i32.const 0) ) (unreachable) @@ -15329,7 +15394,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 240) + (i32.const 246) (i32.const 0) ) (unreachable) @@ -15346,7 +15411,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 241) + (i32.const 247) (i32.const 0) ) (unreachable) @@ -15364,7 +15429,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 242) + (i32.const 248) (i32.const 0) ) (unreachable) @@ -15382,7 +15447,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 243) + (i32.const 249) (i32.const 0) ) (unreachable) @@ -15420,7 +15485,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 253) + (i32.const 259) (i32.const 0) ) (unreachable) @@ -15441,7 +15506,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 256) + (i32.const 262) (i32.const 0) ) (unreachable) @@ -15462,7 +15527,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 259) + (i32.const 265) (i32.const 0) ) (unreachable) @@ -15483,7 +15548,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 267) + (i32.const 273) (i32.const 0) ) (unreachable) @@ -15500,7 +15565,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 268) + (i32.const 274) (i32.const 0) ) (unreachable) @@ -15521,7 +15586,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 270) + (i32.const 276) (i32.const 0) ) (unreachable) @@ -15562,7 +15627,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 283) + (i32.const 289) (i32.const 0) ) (unreachable) @@ -15579,7 +15644,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 284) + (i32.const 290) (i32.const 0) ) (unreachable) @@ -15612,7 +15677,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 292) + (i32.const 298) (i32.const 0) ) (unreachable) @@ -15630,7 +15695,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 295) + (i32.const 301) (i32.const 0) ) (unreachable) @@ -15651,7 +15716,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 303) + (i32.const 309) (i32.const 0) ) (unreachable) @@ -15668,7 +15733,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 304) + (i32.const 310) (i32.const 0) ) (unreachable) @@ -15686,7 +15751,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 306) + (i32.const 312) (i32.const 0) ) (unreachable) @@ -15727,7 +15792,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 319) + (i32.const 325) (i32.const 0) ) (unreachable) @@ -15744,7 +15809,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 320) + (i32.const 326) (i32.const 0) ) (unreachable) @@ -15777,7 +15842,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 328) + (i32.const 334) (i32.const 0) ) (unreachable) @@ -15795,7 +15860,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 331) + (i32.const 337) (i32.const 0) ) (unreachable) @@ -15813,7 +15878,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 339) + (i32.const 345) (i32.const 0) ) (unreachable) @@ -15830,7 +15895,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 340) + (i32.const 346) (i32.const 0) ) (unreachable) @@ -15851,7 +15916,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 342) + (i32.const 348) (i32.const 0) ) (unreachable) @@ -15889,7 +15954,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 355) + (i32.const 361) (i32.const 0) ) (unreachable) @@ -15906,7 +15971,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 356) + (i32.const 362) (i32.const 0) ) (unreachable) @@ -15940,7 +16005,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 365) + (i32.const 371) (i32.const 0) ) (unreachable) @@ -15962,7 +16027,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 374) + (i32.const 380) (i32.const 0) ) (unreachable) @@ -15979,7 +16044,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 375) + (i32.const 381) (i32.const 0) ) (unreachable) @@ -16001,7 +16066,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 378) + (i32.const 384) (i32.const 0) ) (unreachable) @@ -16043,7 +16108,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 392) + (i32.const 398) (i32.const 0) ) (unreachable) @@ -16060,7 +16125,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 393) + (i32.const 399) (i32.const 0) ) (unreachable) @@ -16094,7 +16159,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 402) + (i32.const 408) (i32.const 0) ) (unreachable) @@ -16123,7 +16188,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 403) + (i32.const 409) (i32.const 0) ) (unreachable) @@ -16147,7 +16212,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 412) + (i32.const 418) (i32.const 0) ) (unreachable) @@ -16164,7 +16229,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 413) + (i32.const 419) (i32.const 0) ) (unreachable) @@ -16188,7 +16253,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 420) + (i32.const 426) (i32.const 0) ) (unreachable) @@ -16232,7 +16297,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 435) + (i32.const 441) (i32.const 0) ) (unreachable) @@ -16249,7 +16314,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 436) + (i32.const 442) (i32.const 0) ) (unreachable) @@ -16284,7 +16349,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 444) + (i32.const 450) (i32.const 0) ) (unreachable) @@ -16308,7 +16373,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 453) + (i32.const 459) (i32.const 0) ) (unreachable) @@ -16325,7 +16390,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 454) + (i32.const 460) (i32.const 0) ) (unreachable) @@ -16349,7 +16414,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 461) + (i32.const 467) (i32.const 0) ) (unreachable) @@ -16393,7 +16458,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 476) + (i32.const 482) (i32.const 0) ) (unreachable) @@ -16410,7 +16475,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 477) + (i32.const 483) (i32.const 0) ) (unreachable) @@ -16444,7 +16509,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 485) + (i32.const 491) (i32.const 0) ) (unreachable) @@ -16466,7 +16531,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 489) + (i32.const 495) (i32.const 0) ) (unreachable) @@ -16491,7 +16556,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 492) + (i32.const 498) (i32.const 0) ) (unreachable) @@ -16513,7 +16578,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 495) + (i32.const 501) (i32.const 0) ) (unreachable) @@ -16535,7 +16600,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 503) + (i32.const 509) (i32.const 0) ) (unreachable) @@ -16552,7 +16617,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 504) + (i32.const 510) (i32.const 0) ) (unreachable) @@ -16574,7 +16639,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 506) + (i32.const 512) (i32.const 0) ) (unreachable) @@ -16616,7 +16681,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 519) + (i32.const 525) (i32.const 0) ) (unreachable) @@ -16633,7 +16698,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 520) + (i32.const 526) (i32.const 0) ) (unreachable) @@ -16667,7 +16732,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 528) + (i32.const 534) (i32.const 0) ) (unreachable) @@ -16689,7 +16754,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 532) + (i32.const 538) (i32.const 0) ) (unreachable) @@ -16714,7 +16779,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 535) + (i32.const 541) (i32.const 0) ) (unreachable) @@ -16736,7 +16801,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 538) + (i32.const 544) (i32.const 0) ) (unreachable) @@ -16758,7 +16823,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 546) + (i32.const 552) (i32.const 0) ) (unreachable) @@ -16775,7 +16840,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 547) + (i32.const 553) (i32.const 0) ) (unreachable) @@ -16797,7 +16862,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 549) + (i32.const 555) (i32.const 0) ) (unreachable) @@ -16839,7 +16904,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 562) + (i32.const 568) (i32.const 0) ) (unreachable) @@ -16853,7 +16918,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 563) + (i32.const 569) (i32.const 0) ) (unreachable) @@ -16906,7 +16971,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 650) + (i32.const 656) (i32.const 0) ) (unreachable) @@ -16930,7 +16995,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 654) + (i32.const 660) (i32.const 0) ) (unreachable) @@ -16948,7 +17013,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/i32ArrayTyped) - (i32.const 1152) + (i32.const 1216) (i32.const 0) ) ) @@ -16956,7 +17021,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 658) + (i32.const 664) (i32.const 0) ) (unreachable) @@ -16974,7 +17039,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/u32ArrayTyped) - (i32.const 1232) + (i32.const 1296) (i32.const 0) ) ) @@ -16982,7 +17047,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 662) + (i32.const 668) (i32.const 0) ) (unreachable) @@ -17023,7 +17088,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/reversed1) - (i32.const 1400) + (i32.const 1464) (i32.const 0) ) ) @@ -17031,7 +17096,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 682) + (i32.const 688) (i32.const 0) ) (unreachable) @@ -17044,7 +17109,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/reversed2) - (i32.const 1424) + (i32.const 1488) (i32.const 0) ) ) @@ -17052,7 +17117,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 685) + (i32.const 691) (i32.const 0) ) (unreachable) @@ -17073,7 +17138,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 688) + (i32.const 694) (i32.const 0) ) (unreachable) @@ -17094,7 +17159,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 691) + (i32.const 697) (i32.const 0) ) (unreachable) @@ -17115,7 +17180,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 694) + (i32.const 700) (i32.const 0) ) (unreachable) @@ -17136,7 +17201,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 697) + (i32.const 703) (i32.const 0) ) (unreachable) @@ -17157,7 +17222,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 700) + (i32.const 706) (i32.const 0) ) (unreachable) @@ -17221,7 +17286,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 729) + (i32.const 735) (i32.const 0) ) (unreachable) @@ -17238,14 +17303,14 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join) - (i32.const 1808) + (i32.const 1872) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 738) + (i32.const 744) (i32.const 0) ) (unreachable) @@ -17255,17 +17320,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 2432) - (i32.const 1464) + (i32.const 2496) + (i32.const 1528) ) - (i32.const 2440) + (i32.const 2504) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 739) + (i32.const 745) (i32.const 0) ) (unreachable) @@ -17275,17 +17340,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 2536) - (i32.const 2496) + (i32.const 2600) + (i32.const 2560) ) - (i32.const 2440) + (i32.const 2504) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 740) + (i32.const 746) (i32.const 0) ) (unreachable) @@ -17295,17 +17360,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 2592) - (i32.const 2568) + (i32.const 2656) + (i32.const 2632) ) - (i32.const 2600) + (i32.const 2664) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 741) + (i32.const 747) (i32.const 0) ) (unreachable) @@ -17315,14 +17380,14 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join) - (i32.const 4256) + (i32.const 4320) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 742) + (i32.const 748) (i32.const 0) ) (unreachable) @@ -17332,17 +17397,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 4424) - (i32.const 1464) + (i32.const 4488) + (i32.const 1528) ) - (i32.const 4344) + (i32.const 4408) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 743) + (i32.const 749) (i32.const 0) ) (unreachable) @@ -17383,67 +17448,7 @@ (call $~lib/array/Array#join (get_global $std/array/refArr) ) - (i32.const 4472) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 745) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/array/Array#join - (get_global $std/array/reversed0) - (i32.const 1776) - ) - (i32.const 1464) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 749) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/array/Array#join - (get_global $std/array/reversed1) - (i32.const 1776) - ) - (i32.const 4344) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 750) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/array/Array#join - (get_global $std/array/reversed2) - (i32.const 1776) - ) - (i32.const 4544) + (i32.const 4536) ) ) (block @@ -17460,44 +17465,10 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (get_global $std/array/reversed4) - (i32.const 1776) + (get_global $std/array/reversed0) + (i32.const 1840) ) - (i32.const 4560) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 752) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/array/Array#join) - (i32.const 4632) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 754) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/array/Array#join) - (i32.const 4696) + (i32.const 1528) ) ) (block @@ -17513,8 +17484,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array#join) - (i32.const 5320) + (call $~lib/array/Array#join + (get_global $std/array/reversed1) + (i32.const 1840) + ) + (i32.const 4408) ) ) (block @@ -17530,8 +17504,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array#join) - (i32.const 5520) + (call $~lib/array/Array#join + (get_global $std/array/reversed2) + (i32.const 1840) + ) + (i32.const 4608) ) ) (block @@ -17547,11 +17524,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array#join - (get_global $std/array/randomStringsExpected) - (i32.const 1776) + (call $~lib/array/Array#join + (get_global $std/array/reversed4) + (i32.const 1840) ) - (i32.const 5608) + (i32.const 4624) ) ) (block @@ -17567,18 +17544,15 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array#join - (i32.const 5728) - (i32.const 1776) - ) - (i32.const 5736) + (call $~lib/array/Array#join) + (i32.const 4696) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 759) + (i32.const 760) (i32.const 0) ) (unreachable) @@ -17587,10 +17561,25 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array>#join - (get_global $std/array/subarr32) - ) - (i32.const 5824) + (call $~lib/array/Array#join) + (i32.const 4760) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 761) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/array/Array#join) + (i32.const 5384) ) ) (block @@ -17606,10 +17595,48 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array>#join - (get_global $std/array/subarr8) + (call $~lib/array/Array#join) + (i32.const 5584) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 763) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/array/Array#join + (get_global $std/array/randomStringsExpected) + (i32.const 1840) ) - (i32.const 5824) + (i32.const 5672) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 764) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/array/Array#join + (i32.const 5792) + (i32.const 1840) + ) + (i32.const 5800) ) ) (block @@ -17625,10 +17652,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/array/Array>>#join - (get_global $std/array/subarrU32) + (call $~lib/array/Array>#join + (get_global $std/array/subarr32) ) - (i32.const 4344) + (i32.const 5888) ) ) (block @@ -17641,6 +17668,44 @@ (unreachable) ) ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/array/Array>#join + (get_global $std/array/subarr8) + ) + (i32.const 5888) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 771) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/array/Array>>#join + (get_global $std/array/subarrU32) + ) + (i32.const 4408) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 774) + (i32.const 0) + ) + (unreachable) + ) + ) ) (func $null (; 170 ;) (; has Stack IR ;) (type $v) (nop) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index afa8f42c..4eaa18a2 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -44,6 +44,9 @@ assert(isArraysEqual(arr8, [1, 1, 0, 0, 0])); arr8.fill(2, -2); assert(isArraysEqual(arr8, [1, 1, 0, 2, 2])); +arr8.fill(0, 1, 0); +assert(isArraysEqual(arr8, [1, 1, 0, 2, 2])); + var arr32: u32[] = [1, 2, 3, 4, 5]; arr32.fill(1, 1, 3); @@ -58,6 +61,9 @@ assert(isArraysEqual(arr32, [1, 1, 0, 0, 0])); arr32.fill(2, -2); assert(isArraysEqual(arr32, [1, 1, 0, 2, 2])); +arr32.fill(0, 1, 0); +assert(isArraysEqual(arr32, [1, 1, 0, 2, 2])); + // Array#push/pop ////////////////////////////////////////////////////////////////////////////////// assert(arr.length == 0); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index a704d511..6807cb1e 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -40,161 +40,165 @@ (data (i32.const 224) "\d0\00\00\00\05\00\00\00") (data (i32.const 232) "\05\00\00\00\00\00\00\00\01\01\00\02\02\00\00\00") (data (i32.const 248) "\e8\00\00\00\05\00\00\00") - (data (i32.const 256) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 288) "\00\01\00\00\05\00\00\00") - (data (i32.const 296) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 328) "(\01\00\00\05\00\00\00") - (data (i32.const 336) "\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 368) "P\01\00\00\05\00\00\00") - (data (i32.const 376) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 408) "x\01\00\00\05\00\00\00") - (data (i32.const 416) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 448) "\a0\01\00\00\05\00\00\00") - (data (i32.const 456) "\0c\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 488) "V\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") - (data (i32.const 664) " \00\00\00\00\00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 728) "\98\02\00\00\08\00\00\00") - (data (i32.const 736) " \00\00\00\00\00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 800) "\e0\02\00\00\08\00\00\00") - (data (i32.const 808) "@\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 936) "(\03\00\00\08\00\00\00") - (data (i32.const 944) "@\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1072) "\b0\03\00\00\08\00\00\00") - (data (i32.const 1080) "\14\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 1112) "8\04\00\00\05\00\00\00") - (data (i32.const 1120) "\14\00\00\00\00\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 1152) "`\04\00\00\05\00\00\00") - (data (i32.const 1160) "\14\00\00\00\00\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 1192) "\88\04\00\00\05\00\00\00") - (data (i32.const 1200) "\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00") - (data (i32.const 1232) "\b0\04\00\00\05\00\00\00") - (data (i32.const 1240) "\00\00\00\00\00\00\00\00") - (data (i32.const 1248) "\d8\04\00\00\00\00\00\00") - (data (i32.const 1256) "\04\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 1272) "\e8\04\00\00\01\00\00\00") - (data (i32.const 1280) "\08\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00") - (data (i32.const 1296) "\00\05\00\00\02\00\00\00") - (data (i32.const 1304) "\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1336) "\18\05\00\00\04\00\00\00") - (data (i32.const 1344) "\10\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1376) "@\05\00\00\04\00\00\00") - (data (i32.const 1384) "\04\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 1400) "h\05\00\00\01\00\00\00") - (data (i32.const 1408) "\08\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 1424) "\80\05\00\00\02\00\00\00") - (data (i32.const 1432) "\01\00\00\00a\00") - (data (i32.const 1440) "\01\00\00\00b\00") - (data (i32.const 1448) "\02\00\00\00a\00b\00") - (data (i32.const 1456) "\02\00\00\00b\00a\00") - (data (i32.const 1464) "\00\00\00\00") - (data (i32.const 1472) "\1c\00\00\00\00\00\00\00\98\05\00\00\a0\05\00\00\98\05\00\00\a8\05\00\00\b0\05\00\00\b8\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1536) "\c0\05\00\00\07\00\00\00") - (data (i32.const 1544) "\1c\00\00\00\00\00\00\00\b8\05\00\00\98\05\00\00\98\05\00\00\a8\05\00\00\a0\05\00\00\b0\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1608) "\08\06\00\00\07\00\00\00") - (data (i32.const 1616) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 1648) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 1704) "\04\00\00\00n\00u\00l\00l\00") - (data (i32.const 1720) "\02\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 1736) "\b8\06\00\00\02\00\00\00") - (data (i32.const 1744) "\04\00\00\00t\00r\00u\00e\00") - (data (i32.const 1760) "\05\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 1776) "\01\00\00\00,\00") + (data (i32.const 256) "\05\00\00\00\00\00\00\00\01\01\00\02\02\00\00\00") + (data (i32.const 272) "\00\01\00\00\05\00\00\00") + (data (i32.const 280) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 312) "\18\01\00\00\05\00\00\00") + (data (i32.const 320) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 352) "@\01\00\00\05\00\00\00") + (data (i32.const 360) "\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 392) "h\01\00\00\05\00\00\00") + (data (i32.const 400) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 432) "\90\01\00\00\05\00\00\00") + (data (i32.const 440) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 472) "\b8\01\00\00\05\00\00\00") + (data (i32.const 480) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 512) "\e0\01\00\00\05\00\00\00") + (data (i32.const 520) "\0c\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 552) "V\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") + (data (i32.const 728) " \00\00\00\00\00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 792) "\d8\02\00\00\08\00\00\00") + (data (i32.const 800) " \00\00\00\00\00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 864) " \03\00\00\08\00\00\00") + (data (i32.const 872) "@\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1000) "h\03\00\00\08\00\00\00") + (data (i32.const 1008) "@\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1136) "\f0\03\00\00\08\00\00\00") + (data (i32.const 1144) "\14\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 1176) "x\04\00\00\05\00\00\00") + (data (i32.const 1184) "\14\00\00\00\00\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 1216) "\a0\04\00\00\05\00\00\00") + (data (i32.const 1224) "\14\00\00\00\00\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 1256) "\c8\04\00\00\05\00\00\00") + (data (i32.const 1264) "\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00") + (data (i32.const 1296) "\f0\04\00\00\05\00\00\00") + (data (i32.const 1304) "\00\00\00\00\00\00\00\00") + (data (i32.const 1312) "\18\05\00\00\00\00\00\00") + (data (i32.const 1320) "\04\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 1336) "(\05\00\00\01\00\00\00") + (data (i32.const 1344) "\08\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00") + (data (i32.const 1360) "@\05\00\00\02\00\00\00") + (data (i32.const 1368) "\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1400) "X\05\00\00\04\00\00\00") + (data (i32.const 1408) "\10\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1440) "\80\05\00\00\04\00\00\00") + (data (i32.const 1448) "\04\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 1464) "\a8\05\00\00\01\00\00\00") + (data (i32.const 1472) "\08\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 1488) "\c0\05\00\00\02\00\00\00") + (data (i32.const 1496) "\01\00\00\00a\00") + (data (i32.const 1504) "\01\00\00\00b\00") + (data (i32.const 1512) "\02\00\00\00a\00b\00") + (data (i32.const 1520) "\02\00\00\00b\00a\00") + (data (i32.const 1528) "\00\00\00\00") + (data (i32.const 1536) "\1c\00\00\00\00\00\00\00\d8\05\00\00\e0\05\00\00\d8\05\00\00\e8\05\00\00\f0\05\00\00\f8\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1600) "\00\06\00\00\07\00\00\00") + (data (i32.const 1608) "\1c\00\00\00\00\00\00\00\f8\05\00\00\d8\05\00\00\d8\05\00\00\e8\05\00\00\e0\05\00\00\f0\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1672) "H\06\00\00\07\00\00\00") + (data (i32.const 1680) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 1712) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 1768) "\04\00\00\00n\00u\00l\00l\00") (data (i32.const 1784) "\02\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") (data (i32.const 1800) "\f8\06\00\00\02\00\00\00") - (data (i32.const 1808) "\n\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") - (data (i32.const 1832) "\0c\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1864) "(\07\00\00\03\00\00\00") - (data (i32.const 1872) "\01\00\00\000\00") - (data (i32.const 1880) "\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2392) "X\07\00\00d\00\00\00") - (data (i32.const 2400) "\0c\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2432) "`\t\00\00\03\00\00\00") - (data (i32.const 2440) "\05\00\00\001\00-\002\00-\003\00") - (data (i32.const 2456) "\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2488) "\98\t\00\00\03\00\00\00") - (data (i32.const 2496) "\01\00\00\00-\00") - (data (i32.const 2504) "\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2536) "\c8\t\00\00\03\00\00\00") - (data (i32.const 2544) "\08\00\00\00\00\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 2560) "\f0\t\00\00\02\00\00\00") - (data (i32.const 2568) "\02\00\00\00_\00_\00") - (data (i32.const 2576) "\08\00\00\00\00\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 2592) "\10\n\00\00\02\00\00\00") - (data (i32.const 2600) "\18\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2656) "0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00") - (data (i32.const 2720) "`\n\00\00\06\00\00\00") - (data (i32.const 2728) "\02\00\00\00,\00 \00") - (data (i32.const 2736) "\03\00\00\000\00.\000\00") - (data (i32.const 2752) "\03\00\00\00N\00a\00N\00") - (data (i32.const 2768) "\t\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2792) "\08\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2816) "\b8\02\00\00\00\00\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#sort|trampoline~anonymous|43 $~lib/array/Array#sort|trampoline~anonymous|44 $~lib/array/Array#sort|trampoline~anonymous|45 $~lib/array/Array#sort|trampoline~anonymous|46 $std/array/assertSortedDefault~anonymous|47 $start~anonymous|48 $start~anonymous|49 $start~anonymous|50 $start~anonymous|51 $start~anonymous|52 $start~anonymous|53 $start~anonymous|54 $start~anonymous|55) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -221,7 +225,7 @@ (global $std/array/arr8 (mut i32) (i32.const 120)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~argc (mut i32) (i32.const 0)) - (global $std/array/arr32 (mut i32) (i32.const 288)) + (global $std/array/arr32 (mut i32) (i32.const 312)) (global $std/array/i (mut i32) (i32.const 0)) (global $std/array/includes (mut i32) (i32.const 0)) (global $std/array/every (mut i32) (i32.const 0)) @@ -234,18 +238,18 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/charset i32 (i32.const 488)) + (global $std/array/charset i32 (i32.const 552)) (global $NaN f64 (f64.const nan:0x8000000000000)) (global $Infinity f64 (f64.const inf)) - (global $std/array/f32ArrayTyped (mut i32) (i32.const 728)) - (global $std/array/f64ArrayTyped (mut i32) (i32.const 936)) - (global $std/array/i32ArrayTyped (mut i32) (i32.const 1112)) - (global $std/array/u32ArrayTyped (mut i32) (i32.const 1192)) - (global $std/array/reversed0 (mut i32) (i32.const 1248)) - (global $std/array/reversed1 (mut i32) (i32.const 1272)) - (global $std/array/reversed2 (mut i32) (i32.const 1296)) - (global $std/array/reversed4 (mut i32) (i32.const 1336)) - (global $std/array/expected4 (mut i32) (i32.const 1376)) + (global $std/array/f32ArrayTyped (mut i32) (i32.const 792)) + (global $std/array/f64ArrayTyped (mut i32) (i32.const 1000)) + (global $std/array/i32ArrayTyped (mut i32) (i32.const 1176)) + (global $std/array/u32ArrayTyped (mut i32) (i32.const 1256)) + (global $std/array/reversed0 (mut i32) (i32.const 1312)) + (global $std/array/reversed1 (mut i32) (i32.const 1336)) + (global $std/array/reversed2 (mut i32) (i32.const 1360)) + (global $std/array/reversed4 (mut i32) (i32.const 1400)) + (global $std/array/expected4 (mut i32) (i32.const 1440)) (global $std/array/reversed64 (mut i32) (i32.const 0)) (global $std/array/reversed128 (mut i32) (i32.const 0)) (global $std/array/reversed1024 (mut i32) (i32.const 0)) @@ -255,8 +259,8 @@ (global $std/array/randomized257 (mut i32) (i32.const 0)) (global $std/array/reversedNested512 (mut i32) (i32.const 0)) (global $std/array/reversedElements512 (mut i32) (i32.const 0)) - (global $std/array/randomStringsActual (mut i32) (i32.const 1536)) - (global $std/array/randomStringsExpected (mut i32) (i32.const 1608)) + (global $std/array/randomStringsActual (mut i32) (i32.const 1600)) + (global $std/array/randomStringsExpected (mut i32) (i32.const 1672)) (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/internal/string/CharCode.PLUS i32 (i32.const 43)) @@ -290,10 +294,10 @@ (global $std/array/refArr (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $std/array/subarr32 (mut i32) (i32.const 5816)) - (global $std/array/subarr8 (mut i32) (i32.const 5912)) - (global $std/array/subarrU32 (mut i32) (i32.const 5984)) - (global $HEAP_BASE i32 (i32.const 5992)) + (global $std/array/subarr32 (mut i32) (i32.const 5880)) + (global $std/array/subarr8 (mut i32) (i32.const 5976)) + (global $std/array/subarrU32 (mut i32) (i32.const 6048)) + (global $HEAP_BASE i32 (i32.const 6056)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -989,27 +993,33 @@ ) ) ) - (block $~lib/memory/memory.fill|inlined.1 - (set_local $6 - (i32.add + (if + (i32.lt_s + (get_local $2) + (get_local $3) + ) + (block $~lib/memory/memory.fill|inlined.1 + (set_local $6 (i32.add - (get_local $4) + (i32.add + (get_local $4) + (get_local $2) + ) + (get_global $~lib/internal/arraybuffer/HEADER_SIZE) + ) + ) + (set_local $7 + (i32.sub + (get_local $3) (get_local $2) ) - (get_global $~lib/internal/arraybuffer/HEADER_SIZE) ) - ) - (set_local $7 - (i32.sub - (get_local $3) - (get_local $2) + (call $~lib/internal/memory/memset + (get_local $6) + (get_local $1) + (get_local $7) ) ) - (call $~lib/internal/memory/memset - (get_local $6) - (get_local $1) - (get_local $7) - ) ) (get_local $0) ) @@ -3752,7 +3762,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 172) + (i32.const 174) (i32.const 42) ) (unreachable) @@ -3841,7 +3851,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 184) + (i32.const 186) (i32.const 20) ) (unreachable) @@ -3926,7 +3936,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 274) + (i32.const 276) (i32.const 42) ) (unreachable) @@ -4029,7 +4039,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 245) + (i32.const 247) (i32.const 20) ) (unreachable) @@ -6019,7 +6029,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 456) + (i32.const 520) (i32.const 955) (i32.const 4) ) @@ -6823,7 +6833,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -7900,7 +7910,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -9008,7 +9018,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -10016,7 +10026,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -10251,7 +10261,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 456) + (i32.const 520) (i32.const 964) (i32.const 24) ) @@ -10459,7 +10469,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 639) + (i32.const 645) (i32.const 2) ) (unreachable) @@ -10930,7 +10940,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -11133,7 +11143,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 639) + (i32.const 645) (i32.const 2) ) (unreachable) @@ -11550,7 +11560,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -11784,7 +11794,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 639) + (i32.const 645) (i32.const 2) ) (unreachable) @@ -12210,7 +12220,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 337) + (i32.const 339) (i32.const 4) ) (unreachable) @@ -12444,7 +12454,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 639) + (i32.const 645) (i32.const 2) ) (unreachable) @@ -12694,7 +12704,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 14) (i32.const 2) ) @@ -12737,7 +12747,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1616) + (i32.const 1680) (i32.const 58) (i32.const 4) ) @@ -12752,7 +12762,7 @@ ) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $2 @@ -12831,7 +12841,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1616) + (i32.const 1680) (i32.const 110) (i32.const 4) ) @@ -12844,7 +12854,7 @@ (i32.const 0) ) (set_local $1 - (i32.const 1704) + (i32.const 1768) ) ) (set_local $2 @@ -12869,7 +12879,7 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $5 @@ -12899,7 +12909,7 @@ (get_local $0) ) (set_local $0 - (i32.const 1704) + (i32.const 1768) ) ) (call $~lib/string/String#concat @@ -12912,7 +12922,7 @@ (local $2 i32) (local $3 f64) (set_local $1 - (i32.const 1464) + (i32.const 1528) ) (block $break|0 (set_local $2 @@ -13118,7 +13128,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1616) + (i32.const 1680) (i32.const 269) (i32.const 4) ) @@ -13219,7 +13229,7 @@ (get_local $3) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (if @@ -13281,11 +13291,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -13309,8 +13319,8 @@ ) (return (select - (i32.const 1744) - (i32.const 1760) + (i32.const 1808) + (i32.const 1824) (i32.and (block $~lib/internal/arraybuffer/loadUnsafe|inlined.0 (result i32) (set_local $8 @@ -13396,8 +13406,8 @@ (get_local $10) (get_local $11) (select - (i32.const 1744) - (i32.const 1760) + (i32.const 1808) + (i32.const 1824) (i32.and (get_local $4) (i32.const 1) @@ -13468,8 +13478,8 @@ (get_local $10) (get_local $11) (select - (i32.const 1744) - (i32.const 1760) + (i32.const 1808) + (i32.const 1824) (i32.and (get_local $4) (i32.const 1) @@ -13509,7 +13519,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -13635,7 +13645,7 @@ (set_local $3 (i32.load (block $~lib/internal/number/DIGITS|inlined.0 (result i32) - (i32.const 2392) + (i32.const 2456) ) ) ) @@ -13852,7 +13862,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (set_local $1 @@ -13999,11 +14009,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -14177,7 +14187,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -14208,7 +14218,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (set_local $1 @@ -14304,11 +14314,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -14482,7 +14492,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -14587,7 +14597,7 @@ (set_local $16 (i32.load (block $~lib/internal/number/POWERS10|inlined.0 (result i32) - (i32.const 4176) + (i32.const 4240) ) ) ) @@ -15948,14 +15958,14 @@ (set_local $12 (i32.load (block $~lib/internal/number/FRC_POWERS|inlined.0 (result i32) - (i32.const 3840) + (i32.const 3904) ) ) ) (set_local $13 (i32.load (block $~lib/internal/number/EXP_POWERS|inlined.0 (result i32) - (i32.const 4104) + (i32.const 4168) ) ) ) @@ -16356,7 +16366,7 @@ (f64.const 0) ) (return - (i32.const 2736) + (i32.const 2800) ) ) (if @@ -16371,13 +16381,13 @@ (get_local $0) ) (return - (i32.const 2752) + (i32.const 2816) ) ) (return (select - (i32.const 2768) - (i32.const 2792) + (i32.const 2832) + (i32.const 2856) (f64.lt (get_local $0) (f64.const 0) @@ -16413,7 +16423,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -16513,8 +16523,8 @@ ) (set_local $5 (select - (i32.const 2768) - (i32.const 2792) + (i32.const 2832) + (i32.const 2856) (get_local $3) ) ) @@ -16575,11 +16585,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -16753,7 +16763,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -16802,11 +16812,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -17166,11 +17176,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -17193,7 +17203,7 @@ (get_local $2) ) (return - (i32.const 4432) + (i32.const 4496) ) ) (set_local $8 @@ -17249,7 +17259,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $9) (get_local $10) - (i32.const 4432) + (i32.const 4496) (i32.const 0) (i32.const 15) ) @@ -17305,7 +17315,7 @@ (call $~lib/internal/string/copyUnsafe (get_local $9) (get_local $10) - (i32.const 4432) + (i32.const 4496) (i32.const 0) (i32.const 15) ) @@ -17342,7 +17352,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -17499,11 +17509,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -17677,7 +17687,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -17790,11 +17800,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -17968,7 +17978,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -18098,7 +18108,7 @@ (set_local $3 (i32.load (block $~lib/internal/number/DIGITS|inlined.1 (result i32) - (i32.const 5272) + (i32.const 5336) ) ) ) @@ -18286,7 +18296,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (if @@ -18446,11 +18456,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -18624,7 +18634,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -18657,7 +18667,7 @@ (get_local $0) ) (return - (i32.const 1872) + (i32.const 1936) ) ) (set_local $1 @@ -18874,11 +18884,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -19052,7 +19062,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -19097,11 +19107,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -19147,7 +19157,7 @@ (get_local $4) (get_local $1) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -19329,11 +19339,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -19507,7 +19517,7 @@ (block (call $~lib/env/abort (i32.const 0) - (i32.const 1648) + (i32.const 1712) (i32.const 28) (i32.const 4) ) @@ -19552,11 +19562,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -19602,7 +19612,7 @@ (get_local $4) (get_local $1) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -19716,11 +19726,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -19766,7 +19776,7 @@ (get_local $4) (get_local $1) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -19880,11 +19890,11 @@ (i32.const 0) ) (return - (i32.const 1464) + (i32.const 1528) ) ) (set_local $3 - (i32.const 1464) + (i32.const 1528) ) (set_local $5 (i32.load @@ -19930,7 +19940,7 @@ (get_local $4) (get_local $1) ) - (i32.const 1464) + (i32.const 1528) ) ) ) @@ -20162,6 +20172,32 @@ (unreachable) ) ) + (drop + (call $~lib/array/Array#fill + (get_global $std/array/arr8) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/array/isArraysEqual + (get_global $std/array/arr8) + (i32.const 272) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 48) + (i32.const 0) + ) + (unreachable) + ) + ) (drop (call $~lib/array/Array#fill (get_global $std/array/arr32) @@ -20174,7 +20210,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 328) + (i32.const 352) (i32.const 0) ) ) @@ -20182,7 +20218,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 50) + (i32.const 53) (i32.const 0) ) (unreachable) @@ -20205,7 +20241,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 368) + (i32.const 392) (i32.const 0) ) ) @@ -20213,7 +20249,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 53) + (i32.const 56) (i32.const 0) ) (unreachable) @@ -20231,7 +20267,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 408) + (i32.const 432) (i32.const 0) ) ) @@ -20239,7 +20275,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 56) + (i32.const 59) (i32.const 0) ) (unreachable) @@ -20262,7 +20298,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/arr32) - (i32.const 448) + (i32.const 472) (i32.const 0) ) ) @@ -20270,7 +20306,33 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 59) + (i32.const 62) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#fill + (get_global $std/array/arr32) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/array/isArraysEqual + (get_global $std/array/arr32) + (i32.const 512) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 65) (i32.const 0) ) (unreachable) @@ -20294,7 +20356,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 63) + (i32.const 69) (i32.const 0) ) (unreachable) @@ -20313,7 +20375,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 64) + (i32.const 70) (i32.const 0) ) (unreachable) @@ -20339,7 +20401,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 68) + (i32.const 74) (i32.const 0) ) (unreachable) @@ -20359,71 +20421,6 @@ (i32.const 1) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 69) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $std/array/internalCapacity - (get_global $std/array/arr) - ) - (i32.const 1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 70) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $std/array/i - (call $~lib/array/Array#pop - (get_global $std/array/arr) - ) - ) - (if - (i32.eqz - (i32.eq - (get_global $std/array/i) - (i32.const 42) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 74) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (block $~lib/array/Array#get:length|inlined.2 (result i32) - (set_local $0 - (get_global $std/array/arr) - ) - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 0) - ) - ) (block (call $~lib/env/abort (i32.const 0) @@ -20453,6 +20450,71 @@ (unreachable) ) ) + (set_global $std/array/i + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 42) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 80) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (block $~lib/array/Array#get:length|inlined.2 (result i32) + (set_local $0 + (get_global $std/array/arr) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 81) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $std/array/internalCapacity + (get_global $std/array/arr) + ) + (i32.const 1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 82) + (i32.const 0) + ) + (unreachable) + ) + ) (drop (call $~lib/array/Array#push (get_global $std/array/arr) @@ -20473,75 +20535,6 @@ (i32.const 1) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 80) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $std/array/internalCapacity - (get_global $std/array/arr) - ) - (i32.const 1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 81) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $~lib/array/Array#__get - (get_global $std/array/arr) - (i32.const 0) - ) - (i32.const 43) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 82) - (i32.const 0) - ) - (unreachable) - ) - ) - (drop - (call $~lib/array/Array#push - (get_global $std/array/arr) - (i32.const 44) - ) - ) - (if - (i32.eqz - (i32.eq - (block $~lib/array/Array#get:length|inlined.4 (result i32) - (set_local $0 - (get_global $std/array/arr) - ) - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 2) - ) - ) (block (call $~lib/env/abort (i32.const 0) @@ -20558,7 +20551,7 @@ (call $std/array/internalCapacity (get_global $std/array/arr) ) - (i32.const 2) + (i32.const 1) ) ) (block @@ -20591,6 +20584,75 @@ (unreachable) ) ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 44) + ) + ) + (if + (i32.eqz + (i32.eq + (block $~lib/array/Array#get:length|inlined.4 (result i32) + (set_local $0 + (get_global $std/array/arr) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 92) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $std/array/internalCapacity + (get_global $std/array/arr) + ) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 93) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#__get + (get_global $std/array/arr) + (i32.const 0) + ) + (i32.const 43) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 94) + (i32.const 0) + ) + (unreachable) + ) + ) (if (i32.eqz (i32.eq @@ -20605,7 +20667,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 89) + (i32.const 95) (i32.const 0) ) (unreachable) @@ -20635,7 +20697,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 93) + (i32.const 99) (i32.const 0) ) (unreachable) @@ -20654,7 +20716,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 94) + (i32.const 100) (i32.const 0) ) (unreachable) @@ -20674,7 +20736,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 95) + (i32.const 101) (i32.const 0) ) (unreachable) @@ -20694,7 +20756,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 96) + (i32.const 102) (i32.const 0) ) (unreachable) @@ -20714,7 +20776,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 97) + (i32.const 103) (i32.const 0) ) (unreachable) @@ -20744,7 +20806,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 103) + (i32.const 109) (i32.const 0) ) (unreachable) @@ -20763,7 +20825,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 104) + (i32.const 110) (i32.const 0) ) (unreachable) @@ -20783,7 +20845,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 105) + (i32.const 111) (i32.const 0) ) (unreachable) @@ -20803,7 +20865,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 106) + (i32.const 112) (i32.const 0) ) (unreachable) @@ -20823,7 +20885,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 107) + (i32.const 113) (i32.const 0) ) (unreachable) @@ -20843,7 +20905,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 108) + (i32.const 114) (i32.const 0) ) (unreachable) @@ -20873,7 +20935,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 112) + (i32.const 118) (i32.const 0) ) (unreachable) @@ -20892,7 +20954,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 113) + (i32.const 119) (i32.const 0) ) (unreachable) @@ -20912,7 +20974,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 114) + (i32.const 120) (i32.const 0) ) (unreachable) @@ -20932,7 +20994,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 115) + (i32.const 121) (i32.const 0) ) (unreachable) @@ -20952,7 +21014,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 116) + (i32.const 122) (i32.const 0) ) (unreachable) @@ -20972,7 +21034,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 117) + (i32.const 123) (i32.const 0) ) (unreachable) @@ -20992,7 +21054,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 118) + (i32.const 124) (i32.const 0) ) (unreachable) @@ -21014,7 +21076,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 124) + (i32.const 130) (i32.const 0) ) (unreachable) @@ -21038,7 +21100,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 125) + (i32.const 131) (i32.const 0) ) (unreachable) @@ -21057,7 +21119,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 126) + (i32.const 132) (i32.const 0) ) (unreachable) @@ -21077,7 +21139,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 127) + (i32.const 133) (i32.const 0) ) (unreachable) @@ -21097,7 +21159,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 128) + (i32.const 134) (i32.const 0) ) (unreachable) @@ -21117,7 +21179,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 129) + (i32.const 135) (i32.const 0) ) (unreachable) @@ -21137,7 +21199,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 130) + (i32.const 136) (i32.const 0) ) (unreachable) @@ -21159,7 +21221,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 134) + (i32.const 140) (i32.const 0) ) (unreachable) @@ -21183,7 +21245,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 135) + (i32.const 141) (i32.const 0) ) (unreachable) @@ -21202,7 +21264,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 136) + (i32.const 142) (i32.const 0) ) (unreachable) @@ -21222,7 +21284,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 137) + (i32.const 143) (i32.const 0) ) (unreachable) @@ -21242,7 +21304,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 138) + (i32.const 144) (i32.const 0) ) (unreachable) @@ -21262,7 +21324,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 139) + (i32.const 145) (i32.const 0) ) (unreachable) @@ -21291,7 +21353,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 145) + (i32.const 151) (i32.const 0) ) (unreachable) @@ -21310,7 +21372,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 146) + (i32.const 152) (i32.const 0) ) (unreachable) @@ -21330,7 +21392,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 147) + (i32.const 153) (i32.const 0) ) (unreachable) @@ -21350,7 +21412,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 148) + (i32.const 154) (i32.const 0) ) (unreachable) @@ -21370,7 +21432,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 149) + (i32.const 155) (i32.const 0) ) (unreachable) @@ -21406,7 +21468,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 158) + (i32.const 164) (i32.const 0) ) (unreachable) @@ -21430,7 +21492,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 162) + (i32.const 168) (i32.const 0) ) (unreachable) @@ -21454,7 +21516,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 166) + (i32.const 172) (i32.const 0) ) (unreachable) @@ -21478,7 +21540,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 170) + (i32.const 176) (i32.const 0) ) (unreachable) @@ -21502,7 +21564,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 174) + (i32.const 180) (i32.const 0) ) (unreachable) @@ -21526,7 +21588,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 178) + (i32.const 184) (i32.const 0) ) (unreachable) @@ -21550,7 +21612,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 182) + (i32.const 188) (i32.const 0) ) (unreachable) @@ -21574,7 +21636,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 186) + (i32.const 192) (i32.const 0) ) (unreachable) @@ -21598,7 +21660,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 190) + (i32.const 196) (i32.const 0) ) (unreachable) @@ -21622,7 +21684,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 194) + (i32.const 200) (i32.const 0) ) (unreachable) @@ -21663,7 +21725,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 200) + (i32.const 206) (i32.const 0) ) (unreachable) @@ -21704,7 +21766,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 204) + (i32.const 210) (i32.const 0) ) (unreachable) @@ -21745,7 +21807,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 208) + (i32.const 214) (i32.const 0) ) (unreachable) @@ -21786,7 +21848,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 212) + (i32.const 218) (i32.const 0) ) (unreachable) @@ -21827,7 +21889,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 216) + (i32.const 222) (i32.const 0) ) (unreachable) @@ -21868,7 +21930,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 220) + (i32.const 226) (i32.const 0) ) (unreachable) @@ -21909,7 +21971,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 224) + (i32.const 230) (i32.const 0) ) (unreachable) @@ -21950,7 +22012,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 228) + (i32.const 234) (i32.const 0) ) (unreachable) @@ -21991,7 +22053,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 232) + (i32.const 238) (i32.const 0) ) (unreachable) @@ -22032,7 +22094,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 236) + (i32.const 242) (i32.const 0) ) (unreachable) @@ -22061,7 +22123,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 240) + (i32.const 246) (i32.const 0) ) (unreachable) @@ -22080,7 +22142,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 241) + (i32.const 247) (i32.const 0) ) (unreachable) @@ -22100,7 +22162,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 242) + (i32.const 248) (i32.const 0) ) (unreachable) @@ -22120,7 +22182,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 243) + (i32.const 249) (i32.const 0) ) (unreachable) @@ -22163,7 +22225,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 253) + (i32.const 259) (i32.const 0) ) (unreachable) @@ -22186,7 +22248,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 256) + (i32.const 262) (i32.const 0) ) (unreachable) @@ -22209,7 +22271,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 259) + (i32.const 265) (i32.const 0) ) (unreachable) @@ -22232,7 +22294,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 267) + (i32.const 273) (i32.const 0) ) (unreachable) @@ -22256,7 +22318,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 268) + (i32.const 274) (i32.const 0) ) (unreachable) @@ -22279,7 +22341,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 270) + (i32.const 276) (i32.const 0) ) (unreachable) @@ -22322,7 +22384,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 283) + (i32.const 289) (i32.const 0) ) (unreachable) @@ -22346,7 +22408,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 284) + (i32.const 290) (i32.const 0) ) (unreachable) @@ -22381,7 +22443,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 292) + (i32.const 298) (i32.const 0) ) (unreachable) @@ -22404,7 +22466,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 295) + (i32.const 301) (i32.const 0) ) (unreachable) @@ -22427,7 +22489,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 303) + (i32.const 309) (i32.const 0) ) (unreachable) @@ -22451,7 +22513,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 304) + (i32.const 310) (i32.const 0) ) (unreachable) @@ -22474,7 +22536,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 306) + (i32.const 312) (i32.const 0) ) (unreachable) @@ -22517,7 +22579,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 319) + (i32.const 325) (i32.const 0) ) (unreachable) @@ -22541,7 +22603,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 320) + (i32.const 326) (i32.const 0) ) (unreachable) @@ -22576,7 +22638,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 328) + (i32.const 334) (i32.const 0) ) (unreachable) @@ -22599,7 +22661,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 331) + (i32.const 337) (i32.const 0) ) (unreachable) @@ -22622,7 +22684,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 339) + (i32.const 345) (i32.const 0) ) (unreachable) @@ -22646,7 +22708,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 340) + (i32.const 346) (i32.const 0) ) (unreachable) @@ -22669,7 +22731,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 342) + (i32.const 348) (i32.const 0) ) (unreachable) @@ -22712,7 +22774,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 355) + (i32.const 361) (i32.const 0) ) (unreachable) @@ -22736,7 +22798,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 356) + (i32.const 362) (i32.const 0) ) (unreachable) @@ -22772,7 +22834,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 365) + (i32.const 371) (i32.const 0) ) (unreachable) @@ -22796,7 +22858,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 374) + (i32.const 380) (i32.const 0) ) (unreachable) @@ -22820,7 +22882,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 375) + (i32.const 381) (i32.const 0) ) (unreachable) @@ -22844,7 +22906,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 378) + (i32.const 384) (i32.const 0) ) (unreachable) @@ -22888,7 +22950,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 392) + (i32.const 398) (i32.const 0) ) (unreachable) @@ -22912,7 +22974,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 393) + (i32.const 399) (i32.const 0) ) (unreachable) @@ -22954,7 +23016,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 402) + (i32.const 408) (i32.const 0) ) (unreachable) @@ -22979,7 +23041,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 403) + (i32.const 409) (i32.const 0) ) (unreachable) @@ -23005,7 +23067,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 412) + (i32.const 418) (i32.const 0) ) (unreachable) @@ -23029,7 +23091,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 413) + (i32.const 419) (i32.const 0) ) (unreachable) @@ -23055,7 +23117,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 420) + (i32.const 426) (i32.const 0) ) (unreachable) @@ -23101,7 +23163,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 435) + (i32.const 441) (i32.const 0) ) (unreachable) @@ -23125,7 +23187,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 436) + (i32.const 442) (i32.const 0) ) (unreachable) @@ -23167,7 +23229,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 444) + (i32.const 450) (i32.const 0) ) (unreachable) @@ -23193,7 +23255,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 453) + (i32.const 459) (i32.const 0) ) (unreachable) @@ -23217,7 +23279,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 454) + (i32.const 460) (i32.const 0) ) (unreachable) @@ -23243,7 +23305,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 461) + (i32.const 467) (i32.const 0) ) (unreachable) @@ -23289,7 +23351,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 476) + (i32.const 482) (i32.const 0) ) (unreachable) @@ -23313,7 +23375,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 477) + (i32.const 483) (i32.const 0) ) (unreachable) @@ -23349,7 +23411,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 485) + (i32.const 491) (i32.const 0) ) (unreachable) @@ -23373,7 +23435,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 489) + (i32.const 495) (i32.const 0) ) (unreachable) @@ -23400,7 +23462,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 492) + (i32.const 498) (i32.const 0) ) (unreachable) @@ -23427,7 +23489,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 495) + (i32.const 501) (i32.const 0) ) (unreachable) @@ -23451,7 +23513,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 503) + (i32.const 509) (i32.const 0) ) (unreachable) @@ -23475,7 +23537,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 504) + (i32.const 510) (i32.const 0) ) (unreachable) @@ -23499,7 +23561,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 506) + (i32.const 512) (i32.const 0) ) (unreachable) @@ -23543,7 +23605,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 519) + (i32.const 525) (i32.const 0) ) (unreachable) @@ -23567,7 +23629,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 520) + (i32.const 526) (i32.const 0) ) (unreachable) @@ -23603,7 +23665,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 528) + (i32.const 534) (i32.const 0) ) (unreachable) @@ -23627,7 +23689,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 532) + (i32.const 538) (i32.const 0) ) (unreachable) @@ -23654,7 +23716,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 535) + (i32.const 541) (i32.const 0) ) (unreachable) @@ -23681,7 +23743,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 538) + (i32.const 544) (i32.const 0) ) (unreachable) @@ -23705,7 +23767,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 546) + (i32.const 552) (i32.const 0) ) (unreachable) @@ -23729,7 +23791,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 547) + (i32.const 553) (i32.const 0) ) (unreachable) @@ -23753,7 +23815,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 549) + (i32.const 555) (i32.const 0) ) (unreachable) @@ -23797,7 +23859,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 562) + (i32.const 568) (i32.const 0) ) (unreachable) @@ -23821,7 +23883,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 563) + (i32.const 569) (i32.const 0) ) (unreachable) @@ -23871,7 +23933,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/f32ArrayTyped) - (i32.const 800) + (i32.const 864) (i32.const 0) ) ) @@ -23879,7 +23941,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 650) + (i32.const 656) (i32.const 0) ) (unreachable) @@ -23900,7 +23962,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/f64ArrayTyped) - (i32.const 1072) + (i32.const 1136) (i32.const 0) ) ) @@ -23908,7 +23970,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 654) + (i32.const 660) (i32.const 0) ) (unreachable) @@ -23929,7 +23991,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/i32ArrayTyped) - (i32.const 1152) + (i32.const 1216) (i32.const 0) ) ) @@ -23937,7 +23999,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 658) + (i32.const 664) (i32.const 0) ) (unreachable) @@ -23958,7 +24020,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/u32ArrayTyped) - (i32.const 1232) + (i32.const 1296) (i32.const 0) ) ) @@ -23966,7 +24028,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 662) + (i32.const 668) (i32.const 0) ) (unreachable) @@ -24007,7 +24069,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/reversed1) - (i32.const 1400) + (i32.const 1464) (i32.const 0) ) ) @@ -24015,7 +24077,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 682) + (i32.const 688) (i32.const 0) ) (unreachable) @@ -24028,7 +24090,7 @@ (i32.eqz (call $std/array/isArraysEqual (get_global $std/array/reversed2) - (i32.const 1424) + (i32.const 1488) (i32.const 0) ) ) @@ -24036,7 +24098,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 685) + (i32.const 691) (i32.const 0) ) (unreachable) @@ -24057,7 +24119,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 688) + (i32.const 694) (i32.const 0) ) (unreachable) @@ -24078,7 +24140,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 691) + (i32.const 697) (i32.const 0) ) (unreachable) @@ -24099,7 +24161,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 694) + (i32.const 700) (i32.const 0) ) (unreachable) @@ -24120,7 +24182,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 697) + (i32.const 703) (i32.const 0) ) (unreachable) @@ -24141,7 +24203,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 700) + (i32.const 706) (i32.const 0) ) (unreachable) @@ -24210,7 +24272,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 729) + (i32.const 735) (i32.const 0) ) (unreachable) @@ -24229,17 +24291,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 1800) - (i32.const 1776) + (i32.const 1864) + (i32.const 1840) ) - (i32.const 1808) + (i32.const 1872) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 738) + (i32.const 744) (i32.const 0) ) (unreachable) @@ -24249,17 +24311,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 2432) - (i32.const 1464) + (i32.const 2496) + (i32.const 1528) ) - (i32.const 2440) + (i32.const 2504) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 739) + (i32.const 745) (i32.const 0) ) (unreachable) @@ -24269,17 +24331,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 2536) - (i32.const 2496) + (i32.const 2600) + (i32.const 2560) ) - (i32.const 2440) + (i32.const 2504) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 740) + (i32.const 746) (i32.const 0) ) (unreachable) @@ -24289,17 +24351,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 2592) - (i32.const 2568) + (i32.const 2656) + (i32.const 2632) ) - (i32.const 2600) + (i32.const 2664) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 741) + (i32.const 747) (i32.const 0) ) (unreachable) @@ -24309,17 +24371,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 4248) - (i32.const 2728) + (i32.const 4312) + (i32.const 2792) ) - (i32.const 4256) + (i32.const 4320) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 742) + (i32.const 748) (i32.const 0) ) (unreachable) @@ -24329,17 +24391,17 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/array/Array#join - (i32.const 4424) - (i32.const 1464) + (i32.const 4488) + (i32.const 1528) ) - (i32.const 4344) + (i32.const 4408) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 743) + (i32.const 749) (i32.const 0) ) (unreachable) @@ -24380,84 +24442,9 @@ (call $~lib/string/String.__eq (call $~lib/array/Array#join (get_global $std/array/refArr) - (i32.const 1776) + (i32.const 1840) ) - (i32.const 4472) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 745) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.1 (result i32) - (set_local $3 - (get_global $std/array/reversed0) - ) - (call $~lib/array/Array#join - (get_local $3) - (i32.const 1776) - ) - ) - (i32.const 1464) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 749) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.3 (result i32) - (set_local $3 - (get_global $std/array/reversed1) - ) - (call $~lib/array/Array#join - (get_local $3) - (i32.const 1776) - ) - ) - (i32.const 4344) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 750) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.5 (result i32) - (set_local $3 - (get_global $std/array/reversed2) - ) - (call $~lib/array/Array#join - (get_local $3) - (i32.const 1776) - ) - ) - (i32.const 4544) + (i32.const 4536) ) ) (block @@ -24473,66 +24460,16 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.7 (result i32) + (block $~lib/array/Array#toString|inlined.1 (result i32) (set_local $3 - (get_global $std/array/reversed4) + (get_global $std/array/reversed0) ) (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 4560) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 752) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.1 (result i32) - (set_local $3 - (i32.const 4624) - ) - (call $~lib/array/Array#join - (get_local $3) - (i32.const 1776) - ) - ) - (i32.const 4632) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 152) - (i32.const 754) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.1 (result i32) - (set_local $3 - (i32.const 4688) - ) - (call $~lib/array/Array#join - (get_local $3) - (i32.const 1776) - ) - ) - (i32.const 4696) + (i32.const 1528) ) ) (block @@ -24548,16 +24485,16 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.1 (result i32) + (block $~lib/array/Array#toString|inlined.3 (result i32) (set_local $3 - (i32.const 5312) + (get_global $std/array/reversed1) ) - (call $~lib/array/Array#join + (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 5320) + (i32.const 4408) ) ) (block @@ -24573,16 +24510,16 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.1 (result i32) + (block $~lib/array/Array#toString|inlined.5 (result i32) (set_local $3 - (i32.const 5512) + (get_global $std/array/reversed2) ) - (call $~lib/array/Array#join + (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 5520) + (i32.const 4608) ) ) (block @@ -24598,16 +24535,16 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.1 (result i32) + (block $~lib/array/Array#toString|inlined.7 (result i32) (set_local $3 - (get_global $std/array/randomStringsExpected) + (get_global $std/array/reversed4) ) - (call $~lib/array/Array#join + (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 5608) + (i32.const 4624) ) ) (block @@ -24623,23 +24560,23 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array#toString|inlined.3 (result i32) + (block $~lib/array/Array#toString|inlined.1 (result i32) (set_local $3 - (i32.const 5728) + (i32.const 4688) ) - (call $~lib/array/Array#join + (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 5736) + (i32.const 4696) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 152) - (i32.const 759) + (i32.const 760) (i32.const 0) ) (unreachable) @@ -24648,16 +24585,41 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array>#toString|inlined.1 (result i32) + (block $~lib/array/Array#toString|inlined.1 (result i32) (set_local $3 - (get_global $std/array/subarr32) + (i32.const 4752) ) - (call $~lib/array/Array>#join + (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 5824) + (i32.const 4760) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 761) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (block $~lib/array/Array#toString|inlined.1 (result i32) + (set_local $3 + (i32.const 5376) + ) + (call $~lib/array/Array#join + (get_local $3) + (i32.const 1840) + ) + ) + (i32.const 5384) ) ) (block @@ -24673,16 +24635,66 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array>#toString|inlined.1 (result i32) + (block $~lib/array/Array#toString|inlined.1 (result i32) (set_local $3 - (get_global $std/array/subarr8) + (i32.const 5576) ) - (call $~lib/array/Array>#join + (call $~lib/array/Array#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 5824) + (i32.const 5584) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 763) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (block $~lib/array/Array#toString|inlined.1 (result i32) + (set_local $3 + (get_global $std/array/randomStringsExpected) + ) + (call $~lib/array/Array#join + (get_local $3) + (i32.const 1840) + ) + ) + (i32.const 5672) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 764) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (block $~lib/array/Array#toString|inlined.3 (result i32) + (set_local $3 + (i32.const 5792) + ) + (call $~lib/array/Array#join + (get_local $3) + (i32.const 1840) + ) + ) + (i32.const 5800) ) ) (block @@ -24698,16 +24710,16 @@ (if (i32.eqz (call $~lib/string/String.__eq - (block $~lib/array/Array>>#toString|inlined.1 (result i32) + (block $~lib/array/Array>#toString|inlined.1 (result i32) (set_local $3 - (get_global $std/array/subarrU32) + (get_global $std/array/subarr32) ) - (call $~lib/array/Array>>#join + (call $~lib/array/Array>#join (get_local $3) - (i32.const 1776) + (i32.const 1840) ) ) - (i32.const 4344) + (i32.const 5888) ) ) (block @@ -24720,6 +24732,56 @@ (unreachable) ) ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (block $~lib/array/Array>#toString|inlined.1 (result i32) + (set_local $3 + (get_global $std/array/subarr8) + ) + (call $~lib/array/Array>#join + (get_local $3) + (i32.const 1840) + ) + ) + (i32.const 5888) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 771) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (block $~lib/array/Array>>#toString|inlined.1 (result i32) + (set_local $3 + (get_global $std/array/subarrU32) + ) + (call $~lib/array/Array>>#join + (get_local $3) + (i32.const 1840) + ) + ) + (i32.const 4408) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 152) + (i32.const 774) + (i32.const 0) + ) + (unreachable) + ) + ) ) (func $null (; 214 ;) (type $v) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 3e6e8fc1..393dc53b 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -4905,7 +4905,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 776) - (i32.const 172) + (i32.const 174) (i32.const 42) ) (unreachable) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 99aa5fb1..122e2a93 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -5893,7 +5893,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 776) - (i32.const 172) + (i32.const 174) (i32.const 42) ) (unreachable) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index aae43278..ae3241b1 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -7,15 +7,46 @@ (type $iiFv (func (param i32 i32 f64))) (type $FFi (func (param f64 f64) (result i32))) (type $iiF (func (param i32 i32) (result f64))) + (type $iiiii (func (param i32 i32 i32 i32) (result i32))) (type $v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (memory $0 1) (data (i32.const 8) "\11\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 48) "\1b\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 112) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 176) "\05\00\00\00\00\00\00\00\01\01\01\04\05") + (data (i32.const 192) "\b0\00\00\00\05") + (data (i32.const 200) "\05") + (data (i32.const 216) "\c8\00\00\00\05") + (data (i32.const 224) "\05\00\00\00\00\00\00\00\01\01") + (data (i32.const 240) "\e0\00\00\00\05") + (data (i32.const 248) "\05\00\00\00\00\00\00\00\01\01\00\02\02") + (data (i32.const 264) "\f8\00\00\00\05") + (data (i32.const 272) "\05\00\00\00\00\00\00\00\01\01\00\02\02") + (data (i32.const 288) "\10\01\00\00\05") + (data (i32.const 296) "\03") + (data (i32.const 312) "(\01\00\00\03") + (data (i32.const 320) "\05\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 336) "@\01\00\00\05") + (data (i32.const 344) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 376) "X\01\00\00\05") + (data (i32.const 384) "\14") + (data (i32.const 416) "\80\01\00\00\05") + (data (i32.const 424) "\14\00\00\00\00\00\00\00\01\00\00\00\01") + (data (i32.const 456) "\a8\01\00\00\05") + (data (i32.const 464) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 496) "\d0\01\00\00\05") + (data (i32.const 504) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 536) "\f8\01\00\00\05") + (data (i32.const 544) "\0c") + (data (i32.const 576) " \02\00\00\03") + (data (i32.const 584) "\14\00\00\00\00\00\00\00\01") + (data (i32.const 608) "\02") + (data (i32.const 616) "H\02\00\00\05") (table 2 anyfunc) (elem (i32.const 0) $null $~lib/internal/typedarray/TypedArray#sort|trampoline~anonymous|1) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -25,6 +56,10 @@ (global $std/typedarray/af64 (mut i32) (i32.const 0)) (global $~argc (mut i32) (i32.const 0)) (global $std/typedarray/clampedArr (mut i32) (i32.const 0)) + (global $std/typedarray/arr8 (mut i32) (i32.const 0)) + (global $std/typedarray/sub8 (mut i32) (i32.const 0)) + (global $std/typedarray/arr32 (mut i32) (i32.const 0)) + (global $std/typedarray/sub32 (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -156,31 +191,32 @@ ) (get_local $1) ) - (func $~lib/internal/memory/memset (; 4 ;) (; has Stack IR ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/internal/memory/memset (; 4 ;) (; has Stack IR ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i64) (if (i32.eqz - (get_local $1) + (get_local $2) ) (return) ) (i32.store8 (get_local $0) - (i32.const 0) + (get_local $1) ) (i32.store8 (i32.sub (i32.add (get_local $0) - (get_local $1) + (get_local $2) ) (i32.const 1) ) - (i32.const 0) + (get_local $1) ) (if (i32.le_u - (get_local $1) + (get_local $2) (i32.const 2) ) (return) @@ -190,37 +226,37 @@ (get_local $0) (i32.const 1) ) - (i32.const 0) + (get_local $1) ) (i32.store8 (i32.add (get_local $0) (i32.const 2) ) - (i32.const 0) + (get_local $1) ) (i32.store8 (i32.sub - (tee_local $2 + (tee_local $3 (i32.add (get_local $0) - (get_local $1) + (get_local $2) ) ) (i32.const 2) ) - (i32.const 0) + (get_local $1) ) (i32.store8 (i32.sub - (get_local $2) + (get_local $3) (i32.const 3) ) - (i32.const 0) + (get_local $1) ) (if (i32.le_u - (get_local $1) + (get_local $2) (i32.const 6) ) (return) @@ -230,63 +266,74 @@ (get_local $0) (i32.const 3) ) - (i32.const 0) + (get_local $1) ) (i32.store8 (i32.sub (i32.add (get_local $0) - (get_local $1) + (get_local $2) ) (i32.const 4) ) - (i32.const 0) + (get_local $1) ) (if (i32.le_u - (get_local $1) + (get_local $2) (i32.const 8) ) (return) ) + (set_local $2 + (i32.sub + (get_local $2) + (tee_local $3 + (i32.and + (i32.sub + (i32.const 0) + (get_local $0) + ) + (i32.const 3) + ) + ) + ) + ) (i32.store (tee_local $0 (i32.add (get_local $0) - (tee_local $2 - (i32.and - (i32.sub - (i32.const 0) - (get_local $0) - ) - (i32.const 3) - ) - ) + (get_local $3) + ) + ) + (tee_local $1 + (i32.mul + (i32.and + (get_local $1) + (i32.const 255) + ) + (i32.const 16843009) ) ) - (i32.const 0) ) (i32.store (i32.sub (i32.add (get_local $0) - (tee_local $1 + (tee_local $2 (i32.and - (i32.sub - (get_local $1) - (get_local $2) - ) + (get_local $2) (i32.const -4) ) ) ) (i32.const 4) ) - (i32.const 0) + (get_local $1) ) (if (i32.le_u - (get_local $1) + (get_local $2) (i32.const 8) ) (return) @@ -296,37 +343,37 @@ (get_local $0) (i32.const 4) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.add (get_local $0) (i32.const 8) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.sub - (tee_local $2 + (tee_local $3 (i32.add (get_local $0) - (get_local $1) + (get_local $2) ) ) (i32.const 12) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.sub - (get_local $2) + (get_local $3) (i32.const 8) ) - (i32.const 0) + (get_local $1) ) (if (i32.le_u - (get_local $1) + (get_local $2) (i32.const 24) ) (return) @@ -336,66 +383,66 @@ (get_local $0) (i32.const 12) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.add (get_local $0) (i32.const 16) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.add (get_local $0) (i32.const 20) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.add (get_local $0) (i32.const 24) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.sub - (tee_local $2 + (tee_local $3 (i32.add (get_local $0) - (get_local $1) + (get_local $2) ) ) (i32.const 28) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.sub - (get_local $2) + (get_local $3) (i32.const 24) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.sub - (get_local $2) + (get_local $3) (i32.const 20) ) - (i32.const 0) + (get_local $1) ) (i32.store (i32.sub - (get_local $2) + (get_local $3) (i32.const 16) ) - (i32.const 0) + (get_local $1) ) (set_local $0 (i32.add (get_local $0) - (tee_local $2 + (tee_local $3 (i32.add (i32.and (get_local $0) @@ -406,47 +453,60 @@ ) ) ) - (set_local $1 + (set_local $2 (i32.sub - (get_local $1) (get_local $2) + (get_local $3) + ) + ) + (set_local $4 + (i64.or + (tee_local $4 + (i64.extend_u/i32 + (get_local $1) + ) + ) + (i64.shl + (get_local $4) + (i64.const 32) + ) ) ) (loop $continue|0 (if (i32.ge_u - (get_local $1) + (get_local $2) (i32.const 32) ) (block (i64.store (get_local $0) - (i64.const 0) + (get_local $4) ) (i64.store (i32.add (get_local $0) (i32.const 8) ) - (i64.const 0) + (get_local $4) ) (i64.store (i32.add (get_local $0) (i32.const 16) ) - (i64.const 0) + (get_local $4) ) (i64.store (i32.add (get_local $0) (i32.const 24) ) - (i64.const 0) + (get_local $4) ) - (set_local $1 + (set_local $2 (i32.sub - (get_local $1) + (get_local $2) (i32.const 32) ) ) @@ -493,6 +553,7 @@ ) (i32.const 8) ) + (i32.const 0) (get_local $0) ) (i32.store @@ -555,6 +616,7 @@ ) (i32.const 8) ) + (i32.const 0) (get_local $0) ) (i32.store @@ -617,6 +679,7 @@ ) (i32.const 8) ) + (i32.const 0) (get_local $0) ) (i32.store @@ -679,6 +742,7 @@ ) (i32.const 8) ) + (i32.const 0) (get_local $0) ) (i32.store @@ -719,222 +783,6 @@ ) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 18) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.load offset=8 - (get_local $1) - ) - (get_local $0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 19) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) - ) - (get_local $0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 20) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 23) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.load offset=8 - (get_local $1) - ) - (get_local $0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 24) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) - ) - (get_local $0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 25) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 28) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.load offset=8 - (get_local $1) - ) - (get_local $0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 29) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) - ) - (get_local $0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 30) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 33) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.load offset=8 - (get_local $1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 34) - (i32.const 2) - ) - (unreachable) - ) - ) - (if - (i32.ne - (i32.shr_s - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) - ) - (i32.const 1) - ) - (get_local $0) - ) (block (call $~lib/env/abort (i32.const 0) @@ -945,39 +793,18 @@ (unreachable) ) ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 38) - (i32.const 2) - ) - (unreachable) - ) - ) (if (i32.ne (i32.load offset=8 (get_local $1) ) - (i32.shl - (get_local $0) - (i32.const 1) - ) + (get_local $0) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 39) + (i32.const 36) (i32.const 2) ) (unreachable) @@ -985,19 +812,34 @@ ) (if (i32.ne - (i32.shr_s - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) ) - (i32.const 1) ) (get_local $0) ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 37) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) (block (call $~lib/env/abort (i32.const 0) @@ -1008,39 +850,18 @@ (unreachable) ) ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 43) - (i32.const 2) - ) - (unreachable) - ) - ) (if (i32.ne (i32.load offset=8 (get_local $1) ) - (i32.shl - (get_local $0) - (i32.const 2) - ) + (get_local $0) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 44) + (i32.const 41) (i32.const 2) ) (unreachable) @@ -1048,19 +869,34 @@ ) (if (i32.ne - (i32.shr_s - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) ) - (i32.const 2) ) (get_local $0) ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 42) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) (block (call $~lib/env/abort (i32.const 0) @@ -1071,39 +907,18 @@ (unreachable) ) ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 48) - (i32.const 2) - ) - (unreachable) - ) - ) (if (i32.ne (i32.load offset=8 (get_local $1) ) - (i32.shl - (get_local $0) - (i32.const 2) - ) + (get_local $0) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 49) + (i32.const 46) (i32.const 2) ) (unreachable) @@ -1111,19 +926,34 @@ ) (if (i32.ne - (i32.shr_s - (i32.sub - (i32.load offset=8 - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) ) - (i32.const 2) ) (get_local $0) ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 47) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) (block (call $~lib/env/abort (i32.const 0) @@ -1134,24 +964,6 @@ (unreachable) ) ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 53) - (i32.const 2) - ) - (unreachable) - ) - ) (if (i32.ne (i32.load offset=8 @@ -1159,14 +971,14 @@ ) (i32.shl (get_local $0) - (i32.const 3) + (i32.const 1) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 54) + (i32.const 51) (i32.const 2) ) (unreachable) @@ -1183,10 +995,28 @@ (get_local $1) ) ) - (i32.const 3) + (i32.const 1) ) (get_local $0) ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 52) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) (block (call $~lib/env/abort (i32.const 0) @@ -1197,24 +1027,6 @@ (unreachable) ) ) - (if - (i32.load offset=4 - (tee_local $1 - (call $~lib/internal/typedarray/TypedArray#constructor - (get_local $0) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 8) - (i32.const 58) - (i32.const 2) - ) - (unreachable) - ) - ) (if (i32.ne (i32.load offset=8 @@ -1222,14 +1034,14 @@ ) (i32.shl (get_local $0) - (i32.const 3) + (i32.const 1) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 59) + (i32.const 56) (i32.const 2) ) (unreachable) @@ -1246,7 +1058,7 @@ (get_local $1) ) ) - (i32.const 3) + (i32.const 1) ) (get_local $0) ) @@ -1254,7 +1066,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 60) + (i32.const 57) (i32.const 2) ) (unreachable) @@ -1272,7 +1084,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 63) + (i32.const 60) (i32.const 2) ) (unreachable) @@ -1292,7 +1104,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 64) + (i32.const 61) (i32.const 2) ) (unreachable) @@ -1313,6 +1125,24 @@ ) (get_local $0) ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 62) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) (block (call $~lib/env/abort (i32.const 0) @@ -1323,6 +1153,51 @@ (unreachable) ) ) + (if + (i32.ne + (i32.load offset=8 + (get_local $1) + ) + (i32.shl + (get_local $0) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 66) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) + ) + ) + (i32.const 2) + ) + (get_local $0) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 67) + (i32.const 2) + ) + (unreachable) + ) + ) (if (i32.load offset=4 (tee_local $1 @@ -1335,7 +1210,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 68) + (i32.const 70) (i32.const 2) ) (unreachable) @@ -1355,7 +1230,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 69) + (i32.const 71) (i32.const 2) ) (unreachable) @@ -1380,7 +1255,196 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 70) + (i32.const 72) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 75) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.load offset=8 + (get_local $1) + ) + (i32.shl + (get_local $0) + (i32.const 3) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 76) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) + ) + ) + (i32.const 3) + ) + (get_local $0) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 77) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 80) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.load offset=8 + (get_local $1) + ) + (i32.shl + (get_local $0) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 81) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) + ) + ) + (i32.const 2) + ) + (get_local $0) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 82) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.load offset=4 + (tee_local $1 + (call $~lib/internal/typedarray/TypedArray#constructor + (get_local $0) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 85) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.load offset=8 + (get_local $1) + ) + (i32.shl + (get_local $0) + (i32.const 3) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 86) + (i32.const 2) + ) + (unreachable) + ) + ) + (if + (i32.ne + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $1) + ) + (i32.load offset=4 + (get_local $1) + ) + ) + (i32.const 3) + ) + (get_local $0) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 87) (i32.const 2) ) (unreachable) @@ -1476,14 +1540,13 @@ ) ) ) - (func $~lib/typedarray/Int32Array#subarray (; 13 ;) (; has Stack IR ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Int32Array#subarray (; 13 ;) (; has Stack IR ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (set_local $2 + (set_local $3 (select (i32.const 1) - (tee_local $1 + (tee_local $2 (i32.shr_s (i32.sub (i32.load offset=8 @@ -1498,31 +1561,50 @@ ) (i32.lt_s (i32.const 1) - (get_local $1) - ) - ) - ) - (set_local $3 - (select - (tee_local $1 - (select - (i32.const 2) - (get_local $1) - (i32.lt_s - (i32.const 2) - (get_local $1) - ) - ) - ) - (get_local $2) - (i32.gt_s - (get_local $1) (get_local $2) ) ) ) + (set_local $1 + (if (result i32) + (i32.lt_s + (get_local $1) + (i32.const 0) + ) + (select + (tee_local $2 + (i32.add + (get_local $2) + (get_local $1) + ) + ) + (get_local $3) + (i32.gt_s + (get_local $2) + (get_local $3) + ) + ) + (select + (tee_local $2 + (select + (get_local $1) + (get_local $2) + (i32.lt_s + (get_local $1) + (get_local $2) + ) + ) + ) + (get_local $3) + (i32.gt_s + (get_local $2) + (get_local $3) + ) + ) + ) + ) (i32.store - (tee_local $1 + (tee_local $2 (call $~lib/allocator/arena/__memory_allocate (i32.const 12) ) @@ -1532,20 +1614,20 @@ ) ) (i32.store offset=4 - (get_local $1) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (i32.store offset=8 - (get_local $1) + (get_local $2) (i32.shl (get_local $3) (i32.const 2) ) ) - (get_local $1) + (i32.store offset=8 + (get_local $2) + (i32.shl + (get_local $1) + (i32.const 2) + ) + ) + (get_local $2) ) (func $~lib/internal/typedarray/TypedArray#__set (; 14 ;) (; has Stack IR ;) (type $iiFv) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) @@ -1814,6 +1896,7 @@ ) ) ) + (i32.const 0) (get_local $6) ) (block $break|0 @@ -2555,10 +2638,622 @@ ) ) ) - (func $start (; 26 ;) (; has Stack IR ;) (type $v) + (func $~lib/internal/typedarray/TypedArray#fill (; 26 ;) (; has Stack IR ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (set_local $6 + (i32.load + (get_local $0) + ) + ) + (set_local $7 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $4 + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + ) + (if + (i32.lt_s + (tee_local $2 + (if (result i32) + (i32.lt_s + (get_local $2) + (i32.const 0) + ) + (select + (tee_local $5 + (i32.add + (get_local $4) + (get_local $2) + ) + ) + (i32.const 0) + (i32.gt_s + (get_local $5) + (i32.const 0) + ) + ) + (select + (tee_local $5 + (get_local $2) + ) + (get_local $4) + (i32.lt_s + (get_local $2) + (get_local $4) + ) + ) + ) + ) + (tee_local $3 + (if (result i32) + (i32.lt_s + (get_local $3) + (i32.const 0) + ) + (select + (tee_local $5 + (i32.add + (get_local $4) + (get_local $3) + ) + ) + (i32.const 0) + (i32.gt_s + (get_local $5) + (i32.const 0) + ) + ) + (select + (tee_local $5 + (get_local $3) + ) + (get_local $4) + (i32.lt_s + (get_local $3) + (get_local $4) + ) + ) + ) + ) + ) + (call $~lib/internal/memory/memset + (i32.add + (i32.add + (i32.add + (get_local $6) + (get_local $2) + ) + (get_local $7) + ) + (i32.const 8) + ) + (get_local $1) + (i32.sub + (get_local $3) + (get_local $2) + ) + ) + ) + (get_local $0) + ) + (func $~lib/internal/typedarray/TypedArray#__get (; 27 ;) (; has Stack IR ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (if + (i32.ge_u + (get_local $1) + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (tee_local $2 + (i32.load offset=4 + (get_local $0) + ) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 42) + (i32.const 42) + ) + (unreachable) + ) + ) + (i32.load8_s offset=8 + (i32.add + (i32.add + (i32.load + (get_local $0) + ) + (get_local $2) + ) + (get_local $1) + ) + ) + ) + (func $~lib/array/Array#__get (; 28 ;) (; has Stack IR ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (tee_local $0 + (if (result i32) + (i32.lt_u + (get_local $1) + (i32.load + (tee_local $0 + (i32.load + (get_local $0) + ) + ) + ) + ) + (i32.load8_s offset=8 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (unreachable) + ) + ) + ) + (func $std/typedarray/isInt8ArrayEqual (; 29 ;) (; has Stack IR ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (if + (i32.ne + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.load offset=4 + (get_local $1) + ) + ) + (return + (i32.const 0) + ) + ) + (block $break|0 + (set_local $3 + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + ) + (loop $repeat|0 + (br_if $break|0 + (i32.ge_s + (get_local $2) + (get_local $3) + ) + ) + (set_local $4 + (i32.shr_s + (i32.shl + (call $~lib/internal/typedarray/TypedArray#__get + (get_local $0) + (get_local $2) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (set_local $5 + (i32.shr_s + (i32.shl + (call $~lib/array/Array#__get + (get_local $1) + (get_local $2) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (if + (i32.ne + (get_local $4) + (get_local $5) + ) + (return + (i32.const 0) + ) + (block + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $repeat|0) + ) + ) + ) + ) + (i32.const 1) + ) + (func $~lib/internal/typedarray/TypedArray#fill|trampoline (; 30 ;) (; has Stack IR ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (block $2of2 + (block $1of2 + (block $0of2 + (block $outOfRange + (br_table $0of2 $1of2 $2of2 $outOfRange + (i32.sub + (get_global $~argc) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (set_local $2 + (i32.const 0) + ) + ) + (set_local $3 + (i32.const 2147483647) + ) + ) + (call $~lib/internal/typedarray/TypedArray#fill + (get_local $0) + (get_local $1) + (get_local $2) + (get_local $3) + ) + ) + (func $~lib/typedarray/Int8Array#subarray (; 31 ;) (; has Stack IR ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (set_local $2 + (select + (i32.const 1) + (tee_local $1 + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + ) + (i32.lt_s + (i32.const 1) + (get_local $1) + ) + ) + ) + (set_local $3 + (select + (tee_local $1 + (select + (i32.const 4) + (get_local $1) + (i32.lt_s + (i32.const 4) + (get_local $1) + ) + ) + ) + (get_local $2) + (i32.gt_s + (get_local $1) + (get_local $2) + ) + ) + ) + (i32.store + (tee_local $1 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 12) + ) + ) + (i32.load + (get_local $0) + ) + ) + (i32.store offset=4 + (get_local $1) + (get_local $2) + ) + (i32.store offset=8 + (get_local $1) + (get_local $3) + ) + (get_local $1) + ) + (func $~lib/internal/typedarray/TypedArray#fill (; 32 ;) (; has Stack IR ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (set_local $6 + (i32.load + (get_local $0) + ) + ) + (set_local $7 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $4 + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + (set_local $2 + (if (result i32) + (i32.lt_s + (get_local $2) + (i32.const 0) + ) + (select + (tee_local $5 + (i32.add + (get_local $4) + (get_local $2) + ) + ) + (i32.const 0) + (i32.gt_s + (get_local $5) + (i32.const 0) + ) + ) + (select + (tee_local $5 + (get_local $2) + ) + (get_local $4) + (i32.lt_s + (get_local $2) + (get_local $4) + ) + ) + ) + ) + (set_local $3 + (if (result i32) + (i32.lt_s + (get_local $3) + (i32.const 0) + ) + (select + (tee_local $5 + (i32.add + (get_local $4) + (get_local $3) + ) + ) + (i32.const 0) + (i32.gt_s + (get_local $5) + (i32.const 0) + ) + ) + (select + (tee_local $5 + (get_local $3) + ) + (get_local $4) + (i32.lt_s + (get_local $3) + (get_local $4) + ) + ) + ) + ) + (block $break|0 + (loop $repeat|0 + (br_if $break|0 + (i32.ge_s + (get_local $2) + (get_local $3) + ) + ) + (i32.store offset=8 + (i32.add + (i32.add + (get_local $6) + (get_local $7) + ) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + (get_local $1) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $repeat|0) + ) + ) + (get_local $0) + ) + (func $~lib/array/Array#__get (; 33 ;) (; has Stack IR ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (tee_local $0 + (if (result i32) + (i32.lt_u + (get_local $1) + (i32.shr_u + (i32.load + (tee_local $0 + (i32.load + (get_local $0) + ) + ) + ) + (i32.const 2) + ) + ) + (i32.load offset=8 + (i32.add + (get_local $0) + (i32.shl + (get_local $1) + (i32.const 2) + ) + ) + ) + (unreachable) + ) + ) + ) + (func $std/typedarray/isInt32ArrayEqual (; 34 ;) (; has Stack IR ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (if + (i32.ne + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + (i32.load offset=4 + (get_local $1) + ) + ) + (return + (i32.const 0) + ) + ) + (block $break|0 + (set_local $3 + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + (loop $repeat|0 + (br_if $break|0 + (i32.ge_s + (get_local $2) + (get_local $3) + ) + ) + (set_local $4 + (call $~lib/internal/typedarray/TypedArray#__get + (get_local $0) + (get_local $2) + ) + ) + (set_local $5 + (call $~lib/array/Array#__get + (get_local $1) + (get_local $2) + ) + ) + (if + (i32.ne + (get_local $4) + (get_local $5) + ) + (return + (i32.const 0) + ) + (block + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $repeat|0) + ) + ) + ) + ) + (i32.const 1) + ) + (func $~lib/internal/typedarray/TypedArray#fill|trampoline (; 35 ;) (; has Stack IR ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (block $2of2 + (block $1of2 + (block $0of2 + (block $outOfRange + (br_table $0of2 $1of2 $2of2 $outOfRange + (i32.sub + (get_global $~argc) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (set_local $2 + (i32.const 0) + ) + ) + (set_local $3 + (i32.const 2147483647) + ) + ) + (call $~lib/internal/typedarray/TypedArray#fill + (get_local $0) + (get_local $1) + (get_local $2) + (get_local $3) + ) + ) + (func $start (; 36 ;) (; has Stack IR ;) (type $v) (local $0 i32) (set_global $~lib/allocator/arena/startOffset - (i32.const 176) + (i32.const 624) ) (set_global $~lib/allocator/arena/offset (get_global $~lib/allocator/arena/startOffset) @@ -2610,7 +3305,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 80) + (i32.const 97) (i32.const 0) ) (unreachable) @@ -2624,7 +3319,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 81) + (i32.const 98) (i32.const 0) ) (unreachable) @@ -2641,7 +3336,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 82) + (i32.const 99) (i32.const 0) ) (unreachable) @@ -2659,7 +3354,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 83) + (i32.const 100) (i32.const 0) ) (unreachable) @@ -2677,7 +3372,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 84) + (i32.const 101) (i32.const 0) ) (unreachable) @@ -2695,7 +3390,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 85) + (i32.const 102) (i32.const 0) ) (unreachable) @@ -2704,6 +3399,7 @@ (set_global $std/typedarray/arr (call $~lib/typedarray/Int32Array#subarray (get_global $std/typedarray/arr) + (i32.const 2) ) ) (if @@ -2727,7 +3423,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 88) + (i32.const 105) (i32.const 0) ) (unreachable) @@ -2744,7 +3440,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 89) + (i32.const 106) (i32.const 0) ) (unreachable) @@ -2761,7 +3457,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 90) + (i32.const 107) (i32.const 0) ) (unreachable) @@ -2779,7 +3475,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 91) + (i32.const 108) (i32.const 0) ) (unreachable) @@ -2856,7 +3552,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 105) + (i32.const 122) (i32.const 0) ) (unreachable) @@ -2922,7 +3618,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 107) + (i32.const 124) (i32.const 0) ) (unreachable) @@ -2960,7 +3656,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 114) + (i32.const 131) (i32.const 0) ) (unreachable) @@ -2981,7 +3677,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 115) + (i32.const 132) (i32.const 0) ) (unreachable) @@ -3002,7 +3698,475 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 116) + (i32.const 133) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/arr8 + (call $~lib/internal/typedarray/TypedArray#constructor + (i32.const 5) + ) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 0) + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 2) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 2) + (i32.const 3) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 3) + (i32.const 4) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 4) + (i32.const 5) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 1) + (i32.const 3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 192) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 143) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $~argc + (i32.const 1) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr8) + (i32.const 0) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 216) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 146) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 0) + (i32.const -3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 240) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 149) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $~argc + (i32.const 2) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr8) + (i32.const 2) + (i32.const -2) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 264) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 152) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr8) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 288) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 155) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/sub8 + (call $~lib/typedarray/Int8Array#subarray + (get_global $std/typedarray/arr8) + ) + ) + (set_global $~argc + (i32.const 1) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/sub8) + (i32.const 0) + (i32.const 0) + ) + ) + (if + (i32.ne + (i32.sub + (i32.load offset=8 + (tee_local $0 + (get_global $std/typedarray/sub8) + ) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 3) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 159) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/sub8) + (i32.const 312) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 160) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 336) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 161) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/arr32 + (call $~lib/internal/typedarray/TypedArray#constructor + (i32.const 5) + ) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 0) + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 2) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 2) + (i32.const 3) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 3) + (i32.const 4) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 4) + (i32.const 5) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 1) + (i32.const 3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 376) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 171) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $~argc + (i32.const 1) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr32) + (i32.const 0) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 416) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 174) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 0) + (i32.const -3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 456) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 177) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $~argc + (i32.const 2) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr32) + (i32.const 2) + (i32.const -2) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 496) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 180) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr32) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 536) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 183) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/sub32 + (call $~lib/typedarray/Int32Array#subarray + (get_global $std/typedarray/arr32) + (i32.const 4) + ) + ) + (set_global $~argc + (i32.const 1) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/sub32) + (i32.const 0) + (i32.const 0) + ) + ) + (if + (i32.ne + (i32.shr_s + (i32.sub + (i32.load offset=8 + (tee_local $0 + (get_global $std/typedarray/sub32) + ) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + (i32.const 3) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 187) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/sub32) + (i32.const 576) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 188) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 616) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 189) (i32.const 0) ) (unreachable) @@ -3014,7 +4178,7 @@ ) ) ) - (func $null (; 27 ;) (; has Stack IR ;) (type $v) + (func $null (; 37 ;) (; has Stack IR ;) (type $v) (nop) ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index 279df220..74a8eedf 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -10,6 +10,23 @@ assert(Uint64Array.BYTES_PER_ELEMENT == 8); assert(Float32Array.BYTES_PER_ELEMENT == 4); assert(Float64Array.BYTES_PER_ELEMENT == 8); + +function isInt8ArrayEqual(a: Int8Array, b: Array): bool { + if (a.length != b.length) return false; + for (let i = 0, len = a.length; i < len; i++) { + if (a[i] != b[i]) return false; + } + return true; +} + +function isInt32ArrayEqual(a: Int32Array, b: Array): bool { + if (a.length != b.length) return false; + for (let i = 0, len = a.length; i < len; i++) { + if (a[i] != b[i]) return false; + } + return true; +} + import "allocator/arena"; function testInstantiate(len: i32): void { @@ -115,6 +132,62 @@ assert(clampedArr[0] == 0); assert(clampedArr[1] == 2); assert(clampedArr[2] == 255); +var arr8 = new Int8Array(5); +arr8[0] = 1; +arr8[1] = 2; +arr8[2] = 3; +arr8[3] = 4; +arr8[4] = 5; + +arr8.fill(1, 1, 3); +assert(isInt8ArrayEqual(arr8, [1, 1, 1, 4, 5])); + +arr8.fill(0); +assert(isInt8ArrayEqual(arr8, [0, 0, 0, 0, 0])); + +arr8.fill(1, 0, -3); +assert(isInt8ArrayEqual(arr8, [1, 1, 0, 0, 0])); + +arr8.fill(2, -2); +assert(isInt8ArrayEqual(arr8, [1, 1, 0, 2, 2])); + +arr8.fill(0, 1, 0); +assert(isInt8ArrayEqual(arr8, [1, 1, 0, 2, 2])); + +var sub8 = arr8.subarray(1, 4); +sub8.fill(0); +assert(sub8.length == 3); +assert(isInt8ArrayEqual(sub8, [0, 0, 0])); +assert(isInt8ArrayEqual(arr8, [1, 0, 0, 0, 2])); + +var arr32 = new Int32Array(5); +arr32[0] = 1; +arr32[1] = 2; +arr32[2] = 3; +arr32[3] = 4; +arr32[4] = 5; + +arr32.fill(1, 1, 3); +assert(isInt32ArrayEqual(arr32, [1, 1, 1, 4, 5])); + +arr32.fill(0); +assert(isInt32ArrayEqual(arr32, [0, 0, 0, 0, 0])); + +arr32.fill(1, 0, -3); +assert(isInt32ArrayEqual(arr32, [1, 1, 0, 0, 0])); + +arr32.fill(2, -2); +assert(isInt32ArrayEqual(arr32, [1, 1, 0, 2, 2])); + +arr32.fill(0, 1, 0); +assert(isInt32ArrayEqual(arr32, [1, 1, 0, 2, 2])); + +var sub32 = arr32.subarray(1, 4); +sub32.fill(0); +assert(sub32.length == 3); +assert(isInt32ArrayEqual(sub32, [0, 0, 0])); +assert(isInt32ArrayEqual(arr32, [1, 0, 0, 0, 2])); + import { MAX_BLENGTH } from "internal/arraybuffer"; const MAX_F64LENGTH = MAX_BLENGTH >> alignof(); diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 3198d5f7..73ce8270 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -8,11 +8,40 @@ (type $iiFv (func (param i32 i32 f64))) (type $FFi (func (param f64 f64) (result i32))) (type $iiF (func (param i32 i32) (result f64))) + (type $iiiii (func (param i32 i32 i32 i32) (result i32))) (type $v (func)) (memory $0 1) (data (i32.const 8) "\11\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 48) "\1b\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 112) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 176) "\05\00\00\00\00\00\00\00\01\01\01\04\05\00\00\00") + (data (i32.const 192) "\b0\00\00\00\05\00\00\00") + (data (i32.const 200) "\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 216) "\c8\00\00\00\05\00\00\00") + (data (i32.const 224) "\05\00\00\00\00\00\00\00\01\01\00\00\00\00\00\00") + (data (i32.const 240) "\e0\00\00\00\05\00\00\00") + (data (i32.const 248) "\05\00\00\00\00\00\00\00\01\01\00\02\02\00\00\00") + (data (i32.const 264) "\f8\00\00\00\05\00\00\00") + (data (i32.const 272) "\05\00\00\00\00\00\00\00\01\01\00\02\02\00\00\00") + (data (i32.const 288) "\10\01\00\00\05\00\00\00") + (data (i32.const 296) "\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 312) "(\01\00\00\03\00\00\00") + (data (i32.const 320) "\05\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 336) "@\01\00\00\05\00\00\00") + (data (i32.const 344) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 376) "X\01\00\00\05\00\00\00") + (data (i32.const 384) "\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 416) "\80\01\00\00\05\00\00\00") + (data (i32.const 424) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 456) "\a8\01\00\00\05\00\00\00") + (data (i32.const 464) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 496) "\d0\01\00\00\05\00\00\00") + (data (i32.const 504) "\14\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 536) "\f8\01\00\00\05\00\00\00") + (data (i32.const 544) "\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 576) " \02\00\00\03\00\00\00") + (data (i32.const 584) "\14\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 616) "H\02\00\00\05\00\00\00") (table 2 anyfunc) (elem (i32.const 0) $null $~lib/internal/typedarray/TypedArray#sort|trampoline~anonymous|1) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -39,8 +68,13 @@ (global $std/typedarray/af64 (mut i32) (i32.const 0)) (global $~argc (mut i32) (i32.const 0)) (global $std/typedarray/clampedArr (mut i32) (i32.const 0)) + (global $std/typedarray/arr8 (mut i32) (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $std/typedarray/sub8 (mut i32) (i32.const 0)) + (global $std/typedarray/arr32 (mut i32) (i32.const 0)) + (global $std/typedarray/sub32 (mut i32) (i32.const 0)) (global $std/typedarray/MAX_F64LENGTH i32 (i32.const 134217727)) - (global $HEAP_BASE i32 (i32.const 172)) + (global $HEAP_BASE i32 (i32.const 624)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -1482,7 +1516,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 18) + (i32.const 35) (i32.const 2) ) (unreachable) @@ -1504,7 +1538,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 19) + (i32.const 36) (i32.const 2) ) (unreachable) @@ -1533,7 +1567,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 20) + (i32.const 37) (i32.const 2) ) (unreachable) @@ -1558,7 +1592,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 23) + (i32.const 40) (i32.const 2) ) (unreachable) @@ -1580,7 +1614,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 24) + (i32.const 41) (i32.const 2) ) (unreachable) @@ -1609,7 +1643,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 25) + (i32.const 42) (i32.const 2) ) (unreachable) @@ -1634,7 +1668,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 28) + (i32.const 45) (i32.const 2) ) (unreachable) @@ -1656,7 +1690,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 29) + (i32.const 46) (i32.const 2) ) (unreachable) @@ -1685,7 +1719,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 30) + (i32.const 47) (i32.const 2) ) (unreachable) @@ -1710,7 +1744,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 33) + (i32.const 50) (i32.const 2) ) (unreachable) @@ -1732,7 +1766,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 34) + (i32.const 51) (i32.const 2) ) (unreachable) @@ -1761,7 +1795,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 35) + (i32.const 52) (i32.const 2) ) (unreachable) @@ -1786,7 +1820,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 38) + (i32.const 55) (i32.const 2) ) (unreachable) @@ -1808,7 +1842,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 39) + (i32.const 56) (i32.const 2) ) (unreachable) @@ -1837,7 +1871,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 40) + (i32.const 57) (i32.const 2) ) (unreachable) @@ -1862,7 +1896,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 43) + (i32.const 60) (i32.const 2) ) (unreachable) @@ -1884,7 +1918,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 44) + (i32.const 61) (i32.const 2) ) (unreachable) @@ -1913,7 +1947,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 45) + (i32.const 62) (i32.const 2) ) (unreachable) @@ -1938,7 +1972,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 48) + (i32.const 65) (i32.const 2) ) (unreachable) @@ -1960,7 +1994,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 49) + (i32.const 66) (i32.const 2) ) (unreachable) @@ -1989,7 +2023,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 50) + (i32.const 67) (i32.const 2) ) (unreachable) @@ -2014,7 +2048,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 53) + (i32.const 70) (i32.const 2) ) (unreachable) @@ -2036,7 +2070,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 54) + (i32.const 71) (i32.const 2) ) (unreachable) @@ -2065,7 +2099,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 55) + (i32.const 72) (i32.const 2) ) (unreachable) @@ -2090,7 +2124,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 58) + (i32.const 75) (i32.const 2) ) (unreachable) @@ -2112,7 +2146,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 59) + (i32.const 76) (i32.const 2) ) (unreachable) @@ -2141,7 +2175,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 60) + (i32.const 77) (i32.const 2) ) (unreachable) @@ -2166,7 +2200,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 63) + (i32.const 80) (i32.const 2) ) (unreachable) @@ -2188,7 +2222,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 64) + (i32.const 81) (i32.const 2) ) (unreachable) @@ -2217,7 +2251,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 65) + (i32.const 82) (i32.const 2) ) (unreachable) @@ -2242,7 +2276,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 68) + (i32.const 85) (i32.const 2) ) (unreachable) @@ -2264,7 +2298,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 69) + (i32.const 86) (i32.const 2) ) (unreachable) @@ -2293,7 +2327,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 70) + (i32.const 87) (i32.const 2) ) (unreachable) @@ -3934,7 +3968,829 @@ ) ) ) - (func $start (; 32 ;) (type $v) + (func $~lib/internal/typedarray/TypedArray#__set (; 32 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (set_local $3 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $4 + (i32.shr_u + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (get_local $3) + ) + (i32.const 0) + ) + ) + (if + (i32.ge_u + (get_local $1) + (get_local $4) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 55) + (i32.const 42) + ) + (unreachable) + ) + ) + (block $~lib/internal/arraybuffer/storeUnsafeWithOffset|inlined.0 + (set_local $5 + (i32.load + (get_local $0) + ) + ) + (i32.store8 offset=8 + (i32.add + (i32.add + (get_local $5) + (get_local $3) + ) + (i32.shl + (get_local $1) + (i32.const 0) + ) + ) + (get_local $2) + ) + ) + ) + (func $~lib/internal/typedarray/TypedArray#fill (; 33 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (set_local $4 + (i32.load + (get_local $0) + ) + ) + (set_local $5 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $6 + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.1 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 0) + ) + ) + ) + (set_local $2 + (if (result i32) + (i32.lt_s + (get_local $2) + (i32.const 0) + ) + (select + (tee_local $7 + (i32.add + (get_local $6) + (get_local $2) + ) + ) + (tee_local $8 + (i32.const 0) + ) + (i32.gt_s + (get_local $7) + (get_local $8) + ) + ) + (select + (tee_local $7 + (get_local $2) + ) + (tee_local $8 + (get_local $6) + ) + (i32.lt_s + (get_local $7) + (get_local $8) + ) + ) + ) + ) + (set_local $3 + (if (result i32) + (i32.lt_s + (get_local $3) + (i32.const 0) + ) + (select + (tee_local $7 + (i32.add + (get_local $6) + (get_local $3) + ) + ) + (tee_local $8 + (i32.const 0) + ) + (i32.gt_s + (get_local $7) + (get_local $8) + ) + ) + (select + (tee_local $7 + (get_local $3) + ) + (tee_local $8 + (get_local $6) + ) + (i32.lt_s + (get_local $7) + (get_local $8) + ) + ) + ) + ) + (if + (i32.lt_s + (get_local $2) + (get_local $3) + ) + (block $~lib/memory/memory.fill|inlined.11 + (set_local $7 + (i32.add + (i32.add + (i32.add + (get_local $4) + (get_local $2) + ) + (get_local $5) + ) + (get_global $~lib/internal/arraybuffer/HEADER_SIZE) + ) + ) + (set_local $8 + (i32.sub + (get_local $3) + (get_local $2) + ) + ) + (call $~lib/internal/memory/memset + (get_local $7) + (get_local $1) + (get_local $8) + ) + ) + ) + (get_local $0) + ) + (func $~lib/internal/typedarray/TypedArray#__get (; 34 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (set_local $2 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $3 + (i32.shr_u + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (get_local $2) + ) + (i32.const 0) + ) + ) + (if + (i32.ge_u + (get_local $1) + (get_local $3) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 42) + (i32.const 42) + ) + (unreachable) + ) + ) + (block $~lib/internal/arraybuffer/loadUnsafeWithOffset|inlined.0 (result i32) + (set_local $4 + (i32.load + (get_local $0) + ) + ) + (i32.load8_s offset=8 + (i32.add + (i32.add + (get_local $4) + (get_local $2) + ) + (i32.shl + (get_local $1) + (i32.const 0) + ) + ) + ) + ) + ) + (func $~lib/array/Array#__get (; 35 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (if (result i32) + (i32.lt_u + (get_local $1) + (i32.shr_u + (i32.load + (get_local $2) + ) + (i32.const 0) + ) + ) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.0 (result i32) + (i32.load8_s offset=8 + (i32.add + (get_local $2) + (i32.shl + (get_local $1) + (i32.const 0) + ) + ) + ) + ) + (unreachable) + ) + ) + (func $std/typedarray/isInt8ArrayEqual (; 36 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (if + (i32.ne + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.3 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 0) + ) + ) + (block $~lib/array/Array#get:length|inlined.1 (result i32) + (i32.load offset=4 + (get_local $1) + ) + ) + ) + (return + (i32.const 0) + ) + ) + (block $break|0 + (block + (set_local $2 + (i32.const 0) + ) + (set_local $3 + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.4 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 0) + ) + ) + ) + ) + (loop $repeat|0 + (br_if $break|0 + (i32.eqz + (i32.lt_s + (get_local $2) + (get_local $3) + ) + ) + ) + (if + (i32.ne + (i32.shr_s + (i32.shl + (call $~lib/internal/typedarray/TypedArray#__get + (get_local $0) + (get_local $2) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.shr_s + (i32.shl + (call $~lib/array/Array#__get + (get_local $1) + (get_local $2) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (return + (i32.const 0) + ) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $repeat|0) + ) + ) + (i32.const 1) + ) + (func $~lib/internal/typedarray/TypedArray#fill|trampoline (; 37 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (block $2of2 + (block $1of2 + (block $0of2 + (block $outOfRange + (br_table $0of2 $1of2 $2of2 $outOfRange + (i32.sub + (get_global $~argc) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (set_local $2 + (i32.const 0) + ) + ) + (set_local $3 + (get_global $~lib/builtins/i32.MAX_VALUE) + ) + ) + (call $~lib/internal/typedarray/TypedArray#fill + (get_local $0) + (get_local $1) + (get_local $2) + (get_local $3) + ) + ) + (func $~lib/typedarray/Int8Array#subarray (; 38 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (block $~lib/internal/typedarray/TypedArray#subarray|inlined.0 (result i32) + (set_local $3 + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.5 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 0) + ) + ) + ) + (if + (i32.lt_s + (get_local $1) + (i32.const 0) + ) + (set_local $1 + (select + (tee_local $4 + (i32.add + (get_local $3) + (get_local $1) + ) + ) + (tee_local $5 + (i32.const 0) + ) + (i32.gt_s + (get_local $4) + (get_local $5) + ) + ) + ) + (set_local $1 + (select + (tee_local $4 + (get_local $1) + ) + (tee_local $5 + (get_local $3) + ) + (i32.lt_s + (get_local $4) + (get_local $5) + ) + ) + ) + ) + (if + (i32.lt_s + (get_local $2) + (i32.const 0) + ) + (set_local $2 + (select + (tee_local $4 + (i32.add + (get_local $3) + (get_local $2) + ) + ) + (tee_local $5 + (get_local $1) + ) + (i32.gt_s + (get_local $4) + (get_local $5) + ) + ) + ) + (set_local $2 + (select + (tee_local $4 + (select + (tee_local $4 + (get_local $2) + ) + (tee_local $5 + (get_local $3) + ) + (i32.lt_s + (get_local $4) + (get_local $5) + ) + ) + ) + (tee_local $5 + (get_local $1) + ) + (i32.gt_s + (get_local $4) + (get_local $5) + ) + ) + ) + ) + (set_local $4 + (block $~lib/memory/memory.allocate|inlined.4 (result i32) + (set_local $4 + (i32.const 12) + ) + (br $~lib/memory/memory.allocate|inlined.4 + (call $~lib/allocator/arena/__memory_allocate + (get_local $4) + ) + ) + ) + ) + (i32.store + (get_local $4) + (i32.load + (get_local $0) + ) + ) + (i32.store offset=4 + (get_local $4) + (i32.shl + (get_local $1) + (i32.const 0) + ) + ) + (i32.store offset=8 + (get_local $4) + (i32.shl + (get_local $2) + (i32.const 0) + ) + ) + (get_local $4) + ) + ) + (func $~lib/internal/typedarray/TypedArray#fill (; 39 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (set_local $4 + (i32.load + (get_local $0) + ) + ) + (set_local $5 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $6 + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.4 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + ) + (set_local $2 + (if (result i32) + (i32.lt_s + (get_local $2) + (i32.const 0) + ) + (select + (tee_local $7 + (i32.add + (get_local $6) + (get_local $2) + ) + ) + (tee_local $8 + (i32.const 0) + ) + (i32.gt_s + (get_local $7) + (get_local $8) + ) + ) + (select + (tee_local $7 + (get_local $2) + ) + (tee_local $8 + (get_local $6) + ) + (i32.lt_s + (get_local $7) + (get_local $8) + ) + ) + ) + ) + (set_local $3 + (if (result i32) + (i32.lt_s + (get_local $3) + (i32.const 0) + ) + (select + (tee_local $7 + (i32.add + (get_local $6) + (get_local $3) + ) + ) + (tee_local $8 + (i32.const 0) + ) + (i32.gt_s + (get_local $7) + (get_local $8) + ) + ) + (select + (tee_local $7 + (get_local $3) + ) + (tee_local $8 + (get_local $6) + ) + (i32.lt_s + (get_local $7) + (get_local $8) + ) + ) + ) + ) + (block $break|0 + (loop $repeat|0 + (br_if $break|0 + (i32.eqz + (i32.lt_s + (get_local $2) + (get_local $3) + ) + ) + ) + (block $~lib/internal/arraybuffer/storeUnsafeWithOffset|inlined.1 + (i32.store offset=8 + (i32.add + (i32.add + (get_local $4) + (get_local $5) + ) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + (get_local $1) + ) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $repeat|0) + ) + ) + (get_local $0) + ) + (func $~lib/array/Array#__get (; 40 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (if (result i32) + (i32.lt_u + (get_local $1) + (i32.shr_u + (i32.load + (get_local $2) + ) + (i32.const 2) + ) + ) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.0 (result i32) + (i32.load offset=8 + (i32.add + (get_local $2) + (i32.shl + (get_local $1) + (i32.const 2) + ) + ) + ) + ) + (unreachable) + ) + ) + (func $std/typedarray/isInt32ArrayEqual (; 41 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (if + (i32.ne + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.6 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + (block $~lib/array/Array#get:length|inlined.1 (result i32) + (i32.load offset=4 + (get_local $1) + ) + ) + ) + (return + (i32.const 0) + ) + ) + (block $break|0 + (block + (set_local $2 + (i32.const 0) + ) + (set_local $3 + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.7 (result i32) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + ) + ) + (loop $repeat|0 + (br_if $break|0 + (i32.eqz + (i32.lt_s + (get_local $2) + (get_local $3) + ) + ) + ) + (if + (i32.ne + (call $~lib/internal/typedarray/TypedArray#__get + (get_local $0) + (get_local $2) + ) + (call $~lib/array/Array#__get + (get_local $1) + (get_local $2) + ) + ) + (return + (i32.const 0) + ) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $repeat|0) + ) + ) + (i32.const 1) + ) + (func $~lib/internal/typedarray/TypedArray#fill|trampoline (; 42 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (block $2of2 + (block $1of2 + (block $0of2 + (block $outOfRange + (br_table $0of2 $1of2 $2of2 $outOfRange + (i32.sub + (get_global $~argc) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (set_local $2 + (i32.const 0) + ) + ) + (set_local $3 + (get_global $~lib/builtins/i32.MAX_VALUE) + ) + ) + (call $~lib/internal/typedarray/TypedArray#fill + (get_local $0) + (get_local $1) + (get_local $2) + (get_local $3) + ) + ) + (func $start (; 43 ;) (type $v) (local $0 i32) (if (i32.eqz @@ -4191,7 +5047,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 80) + (i32.const 97) (i32.const 0) ) (unreachable) @@ -4210,7 +5066,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 81) + (i32.const 98) (i32.const 0) ) (unreachable) @@ -4232,7 +5088,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 82) + (i32.const 99) (i32.const 0) ) (unreachable) @@ -4252,7 +5108,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 83) + (i32.const 100) (i32.const 0) ) (unreachable) @@ -4272,7 +5128,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 84) + (i32.const 101) (i32.const 0) ) (unreachable) @@ -4292,7 +5148,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 85) + (i32.const 102) (i32.const 0) ) (unreachable) @@ -4331,7 +5187,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 88) + (i32.const 105) (i32.const 0) ) (unreachable) @@ -4353,7 +5209,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 89) + (i32.const 106) (i32.const 0) ) (unreachable) @@ -4375,7 +5231,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 90) + (i32.const 107) (i32.const 0) ) (unreachable) @@ -4395,7 +5251,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 91) + (i32.const 108) (i32.const 0) ) (unreachable) @@ -4480,7 +5336,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 105) + (i32.const 122) (i32.const 0) ) (unreachable) @@ -4547,7 +5403,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 107) + (i32.const 124) (i32.const 0) ) (unreachable) @@ -4591,7 +5447,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 114) + (i32.const 131) (i32.const 0) ) (unreachable) @@ -4614,7 +5470,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 115) + (i32.const 132) (i32.const 0) ) (unreachable) @@ -4637,7 +5493,511 @@ (call $~lib/env/abort (i32.const 0) (i32.const 8) - (i32.const 116) + (i32.const 133) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/arr8 + (call $~lib/internal/typedarray/TypedArray#constructor + (i32.const 0) + (i32.const 5) + ) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 0) + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 2) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 2) + (i32.const 3) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 3) + (i32.const 4) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr8) + (i32.const 4) + (i32.const 5) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 1) + (i32.const 3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 192) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 143) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr8) + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 216) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 146) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 0) + (i32.const -3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 240) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 149) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (block (result i32) + (set_global $~argc + (i32.const 2) + ) + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr8) + (i32.const 2) + (i32.const -2) + (i32.const 0) + ) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 264) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 152) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr8) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 288) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 155) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/sub8 + (call $~lib/typedarray/Int8Array#subarray + (get_global $std/typedarray/arr8) + (i32.const 1) + (i32.const 4) + ) + ) + (drop + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/sub8) + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) + (if + (i32.eqz + (i32.eq + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.6 (result i32) + (set_local $0 + (get_global $std/typedarray/sub8) + ) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 0) + ) + ) + (i32.const 3) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 159) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/sub8) + (i32.const 312) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 160) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt8ArrayEqual + (get_global $std/typedarray/arr8) + (i32.const 336) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 161) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/arr32 + (call $~lib/internal/typedarray/TypedArray#constructor + (i32.const 0) + (i32.const 5) + ) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 0) + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 2) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 2) + (i32.const 3) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 3) + (i32.const 4) + ) + (call $~lib/internal/typedarray/TypedArray#__set + (get_global $std/typedarray/arr32) + (i32.const 4) + (i32.const 5) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 1) + (i32.const 3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 376) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 171) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr32) + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 416) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 174) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 0) + (i32.const -3) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 456) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 177) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (block (result i32) + (set_global $~argc + (i32.const 2) + ) + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/arr32) + (i32.const 2) + (i32.const -2) + (i32.const 0) + ) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 496) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 180) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/internal/typedarray/TypedArray#fill + (get_global $std/typedarray/arr32) + (i32.const 0) + (i32.const 1) + (i32.const 0) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 536) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 183) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/typedarray/sub32 + (call $~lib/typedarray/Int32Array#subarray + (get_global $std/typedarray/arr32) + (i32.const 1) + (i32.const 4) + ) + ) + (drop + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/internal/typedarray/TypedArray#fill|trampoline + (get_global $std/typedarray/sub32) + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) + (if + (i32.eqz + (i32.eq + (block $~lib/internal/typedarray/TypedArray#get:length|inlined.8 (result i32) + (set_local $0 + (get_global $std/typedarray/sub32) + ) + (i32.shr_s + (i32.sub + (i32.load offset=8 + (get_local $0) + ) + (i32.load offset=4 + (get_local $0) + ) + ) + (i32.const 2) + ) + ) + (i32.const 3) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 187) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/sub32) + (i32.const 576) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 188) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $std/typedarray/isInt32ArrayEqual + (get_global $std/typedarray/arr32) + (i32.const 616) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 189) (i32.const 0) ) (unreachable) @@ -4650,6 +6010,6 @@ ) ) ) - (func $null (; 33 ;) (type $v) + (func $null (; 44 ;) (type $v) ) )