From 4114efb9d6d1b5a504c251093635608d2b2f2320 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 15 Oct 2020 06:34:27 +0200 Subject: [PATCH 01/10] Generalize runtime to prepare of tracing/Wasm GC --- lib/loader/index.d.ts | 12 +- lib/loader/index.js | 16 +- lib/loader/tests/build/default.wasm | Bin 9668 -> 10075 bytes lib/loader/tests/build/legacy.wasm | Bin 9668 -> 10075 bytes lib/loader/tests/index.js | 34 +- lib/rtrace/index.js | 10 +- src/builtins.ts | 6 +- src/common.ts | 8 +- src/compiler.ts | 71 +- src/program.ts | 81 +- std/assembly/array.ts | 18 +- std/assembly/arraybuffer.ts | 10 +- std/assembly/gc.ts | 3 - std/assembly/index.d.ts | 2 - std/assembly/rt.ts | 35 +- std/assembly/rt/README.md | 20 +- std/assembly/rt/common.ts | 56 +- std/assembly/rt/index-full.ts | 4 +- std/assembly/rt/index-stub.ts | 3 +- std/assembly/rt/index.d.ts | 26 +- std/assembly/rt/pure.ts | 81 +- std/assembly/rt/stub.ts | 68 +- std/assembly/rt/tlsf.ts | 184 +- std/assembly/staticarray.ts | 18 +- std/assembly/string.ts | 84 +- std/assembly/typedarray.ts | 14 +- std/assembly/util/number.ts | 41 +- std/assembly/util/sort.ts | 2 +- std/assembly/util/string.ts | 8 +- std/assembly/wasi/index.ts | 2 +- tests/allocators/buddy/optimized.wat | 274 +- tests/allocators/buddy/untouched.wat | 134 +- tests/allocators/index.js | 3 +- tests/allocators/rt-full/assembly/index.ts | 1 - tests/allocators/rt-full/optimized.wat | 1594 ++--- tests/allocators/rt-full/package.json | 2 +- tests/allocators/rt-full/untouched.wat | 1861 +++-- tests/allocators/rt-stub/assembly/index.ts | 1 - tests/allocators/rt-stub/optimized.wat | 404 +- tests/allocators/rt-stub/untouched.wat | 1631 ++++- tests/compiler/abi.optimized.wat | 2 +- tests/compiler/abi.untouched.wat | 2 +- tests/compiler/assert-nonnull.optimized.wat | 62 +- tests/compiler/assert-nonnull.untouched.wat | 50 +- tests/compiler/bool.optimized.wat | 2 +- tests/compiler/bool.untouched.wat | 2 +- tests/compiler/builtins.optimized.wat | 214 +- tests/compiler/builtins.untouched.wat | 266 +- tests/compiler/call-inferred.optimized.wat | 2 +- tests/compiler/call-inferred.untouched.wat | 2 +- tests/compiler/call-optional.optimized.wat | 22 +- tests/compiler/call-optional.untouched.wat | 6 +- tests/compiler/call-super.optimized.wat | 137 +- tests/compiler/call-super.untouched.wat | 122 +- tests/compiler/class-implements.optimized.wat | 42 +- tests/compiler/class-implements.untouched.wat | 108 +- .../compiler/class-overloading.optimized.wat | 236 +- .../compiler/class-overloading.untouched.wat | 268 +- .../class-static-function.optimized.wat | 8 +- .../class-static-function.untouched.wat | 4 +- tests/compiler/class.optimized.wat | 92 +- tests/compiler/class.untouched.wat | 114 +- tests/compiler/comma.optimized.wat | 12 +- tests/compiler/comma.untouched.wat | 2 +- tests/compiler/constructor.optimized.wat | 101 +- tests/compiler/constructor.untouched.wat | 118 +- tests/compiler/declare.optimized.wat | 6 +- tests/compiler/declare.untouched.wat | 2 +- tests/compiler/do.optimized.wat | 523 +- tests/compiler/do.untouched.wat | 665 +- tests/compiler/empty.optimized.wat | 393 +- tests/compiler/empty.ts | 9 + tests/compiler/empty.untouched.wat | 1600 ++++- .../compiler/exportimport-table.optimized.wat | 2 +- .../compiler/exportimport-table.untouched.wat | 2 +- tests/compiler/exports-lazy.optimized.wat | 7 +- tests/compiler/exports-lazy.untouched.wat | 4 +- tests/compiler/exports.optimized.wat | 38 +- tests/compiler/exports.untouched.wat | 104 +- .../exportstar-rereexport.optimized.wat | 63 +- .../exportstar-rereexport.untouched.wat | 106 +- .../extends-baseaggregate.optimized.wat | 1290 ++-- .../extends-baseaggregate.untouched.wat | 1261 ++-- .../compiler/extends-recursive.untouched.wat | 104 +- .../js-bigint-integration.optimized.wat | 6 +- .../js-bigint-integration.untouched.wat | 2 +- .../features/mutable-globals.optimized.wat | 10 +- .../features/mutable-globals.untouched.wat | 2 +- .../features/reference-types.optimized.wat | 8 +- .../features/reference-types.untouched.wat | 2 +- tests/compiler/features/simd.optimized.wat | 66 +- tests/compiler/features/simd.ts | 2 +- tests/compiler/features/simd.untouched.wat | 334 +- .../field-initialization.optimized.wat | 254 +- .../field-initialization.untouched.wat | 194 +- tests/compiler/for.optimized.wat | 517 +- tests/compiler/for.untouched.wat | 665 +- tests/compiler/function-call.optimized.wat | 73 +- tests/compiler/function-call.untouched.wat | 134 +- .../function-expression.optimized.wat | 121 +- .../function-expression.untouched.wat | 138 +- tests/compiler/function-types.optimized.wat | 42 +- tests/compiler/function-types.untouched.wat | 10 +- tests/compiler/getter-call.optimized.wat | 38 +- tests/compiler/getter-call.untouched.wat | 106 +- tests/compiler/getter-setter.optimized.wat | 4 +- tests/compiler/getter-setter.untouched.wat | 2 +- tests/compiler/if.optimized.wat | 12 +- tests/compiler/if.untouched.wat | 4 +- .../implicit-getter-setter.optimized.wat | 1028 ++- .../implicit-getter-setter.untouched.wat | 2306 +++++-- tests/compiler/infer-array.optimized.wat | 211 +- tests/compiler/infer-array.untouched.wat | 180 +- tests/compiler/infer-generic.optimized.wat | 17 +- tests/compiler/infer-generic.untouched.wat | 12 +- .../inlining-blocklocals.optimized.wat | 6 +- .../inlining-blocklocals.untouched.wat | 2 +- tests/compiler/inlining.optimized.wat | 104 +- tests/compiler/inlining.untouched.wat | 110 +- tests/compiler/instanceof-class.optimized.wat | 56 +- tests/compiler/instanceof-class.untouched.wat | 114 +- tests/compiler/instanceof.optimized.wat | 4 +- tests/compiler/instanceof.untouched.wat | 2 +- tests/compiler/issues/1095.optimized.wat | 508 +- tests/compiler/issues/1095.untouched.wat | 674 +- tests/compiler/issues/1225.optimized.wat | 504 +- tests/compiler/issues/1225.untouched.wat | 669 +- tests/compiler/logical.optimized.wat | 491 +- tests/compiler/logical.untouched.wat | 666 +- tests/compiler/loop-flow.optimized.wat | 34 +- tests/compiler/loop-flow.untouched.wat | 4 +- tests/compiler/managed-cast.optimized.wat | 562 +- tests/compiler/managed-cast.untouched.wat | 694 +- tests/compiler/many-locals.optimized.wat | 4 +- tests/compiler/many-locals.untouched.wat | 2 +- tests/compiler/memcpy.optimized.wat | 26 +- tests/compiler/memcpy.untouched.wat | 2 +- tests/compiler/memmove.optimized.wat | 26 +- tests/compiler/memmove.untouched.wat | 2 +- tests/compiler/memory.optimized.wat | 2 +- tests/compiler/memory.untouched.wat | 2 +- tests/compiler/memorybase.optimized.wat | 1 - tests/compiler/memorybase.ts | 6 +- tests/compiler/memorybase.untouched.wat | 8 +- tests/compiler/memset.optimized.wat | 18 +- tests/compiler/memset.untouched.wat | 2 +- tests/compiler/new.optimized.wat | 52 +- tests/compiler/new.untouched.wat | 106 +- tests/compiler/number.optimized.wat | 883 ++- tests/compiler/number.untouched.wat | 497 +- tests/compiler/object-literal.optimized.wat | 773 +-- tests/compiler/object-literal.untouched.wat | 797 ++- .../optional-typeparameters.optimized.wat | 40 +- .../optional-typeparameters.untouched.wat | 104 +- tests/compiler/overflow.optimized.wat | 2 +- tests/compiler/overflow.untouched.wat | 2 +- .../portable-conversions.optimized.wat | 2 +- .../portable-conversions.untouched.wat | 2 +- tests/compiler/rc/global-init.optimized.wat | 6 +- tests/compiler/rc/global-init.untouched.wat | 105 +- tests/compiler/rc/local-init.optimized.wat | 489 +- tests/compiler/rc/local-init.untouched.wat | 667 +- .../rc/logical-and-mismatch.optimized.wat | 485 +- .../rc/logical-and-mismatch.untouched.wat | 663 +- .../rc/logical-or-mismatch.optimized.wat | 485 +- .../rc/logical-or-mismatch.untouched.wat | 663 +- tests/compiler/rc/optimize.optimized.wat | 741 +- tests/compiler/rc/optimize.ts | 2 +- tests/compiler/rc/optimize.untouched.wat | 661 +- tests/compiler/rc/rereturn.optimized.wat | 1029 ++- tests/compiler/rc/rereturn.untouched.wat | 2301 +++++-- .../rc/ternary-mismatch.optimized.wat | 485 +- .../rc/ternary-mismatch.untouched.wat | 663 +- tests/compiler/reexport.optimized.wat | 42 +- tests/compiler/reexport.untouched.wat | 108 +- tests/compiler/rereexport.optimized.wat | 63 +- tests/compiler/rereexport.untouched.wat | 106 +- tests/compiler/resolve-access.optimized.wat | 131 +- tests/compiler/resolve-access.untouched.wat | 150 +- tests/compiler/resolve-binary.optimized.wat | 1108 ++- tests/compiler/resolve-binary.untouched.wat | 519 +- .../resolve-elementaccess.optimized.wat | 982 ++- .../resolve-elementaccess.untouched.wat | 417 +- .../resolve-function-expression.optimized.wat | 147 +- .../resolve-function-expression.untouched.wat | 138 +- tests/compiler/resolve-nested.optimized.wat | 38 +- tests/compiler/resolve-nested.untouched.wat | 104 +- tests/compiler/resolve-new.optimized.wat | 40 +- tests/compiler/resolve-new.untouched.wat | 104 +- .../resolve-propertyaccess.optimized.wat | 176 +- .../resolve-propertyaccess.untouched.wat | 202 +- tests/compiler/resolve-ternary.optimized.wat | 2766 ++++---- tests/compiler/resolve-ternary.untouched.wat | 5982 +++++++++-------- tests/compiler/resolve-unary.optimized.wat | 226 +- tests/compiler/resolve-unary.untouched.wat | 256 +- tests/compiler/retain-i32.optimized.wat | 2 +- tests/compiler/retain-i32.untouched.wat | 2 +- .../retain-release-sanity.optimized.wat | 949 +-- .../retain-release-sanity.untouched.wat | 935 +-- tests/compiler/retain-release.optimized.wat | 98 +- tests/compiler/retain-release.untouched.wat | 108 +- tests/compiler/retain-return.optimized.wat | 523 +- tests/compiler/retain-return.untouched.wat | 683 +- tests/compiler/rt/finalize.optimized.wat | 735 +- tests/compiler/rt/finalize.untouched.wat | 762 +-- tests/compiler/rt/flags.optimized.wat | 26 +- tests/compiler/rt/flags.untouched.wat | 6 +- tests/compiler/rt/instanceof.optimized.wat | 84 +- tests/compiler/rt/instanceof.untouched.wat | 112 +- tests/compiler/rt/stub-realloc.optimized.wat | 344 +- tests/compiler/rt/stub-realloc.ts | 26 +- tests/compiler/rt/stub-realloc.untouched.wat | 303 +- tests/compiler/runtime-full.optimized.wat | 1026 ++- tests/compiler/runtime-full.untouched.wat | 2274 +++++-- tests/compiler/runtime-stub.optimized.wat | 458 +- tests/compiler/runtime-stub.untouched.wat | 1541 ++++- tests/compiler/static-this.optimized.wat | 2 +- tests/compiler/static-this.untouched.wat | 2 +- tests/compiler/std/array-access.optimized.wat | 30 +- tests/compiler/std/array-access.untouched.wat | 20 +- .../compiler/std/array-literal.optimized.wat | 695 +- .../compiler/std/array-literal.untouched.wat | 750 +-- tests/compiler/std/array.optimized.wat | 3304 ++++----- tests/compiler/std/array.untouched.wat | 3106 ++++----- tests/compiler/std/arraybuffer.optimized.wat | 714 +- tests/compiler/std/arraybuffer.untouched.wat | 758 +-- tests/compiler/std/dataview.optimized.wat | 899 ++- tests/compiler/std/dataview.untouched.wat | 974 ++- tests/compiler/std/date.optimized.wat | 47 +- tests/compiler/std/date.untouched.wat | 106 +- tests/compiler/std/hash.optimized.wat | 16 +- tests/compiler/std/hash.untouched.wat | 18 +- tests/compiler/std/map.optimized.wat | 1563 ++--- tests/compiler/std/map.untouched.wat | 1574 ++--- tests/compiler/std/math.optimized.wat | 5756 ++++++++-------- tests/compiler/std/math.untouched.wat | 4 +- tests/compiler/std/mod.optimized.wat | 272 +- tests/compiler/std/mod.untouched.wat | 2 +- tests/compiler/std/new.optimized.wat | 35 +- tests/compiler/std/new.untouched.wat | 104 +- tests/compiler/std/object.optimized.wat | 106 +- tests/compiler/std/object.untouched.wat | 14 +- .../std/operator-overloading.optimized.wat | 108 +- .../std/operator-overloading.untouched.wat | 108 +- tests/compiler/std/pointer.optimized.wat | 52 +- tests/compiler/std/pointer.untouched.wat | 2 +- tests/compiler/std/polyfills.optimized.wat | 2 +- tests/compiler/std/polyfills.untouched.wat | 2 +- tests/compiler/std/set.optimized.wat | 1387 ++-- tests/compiler/std/set.untouched.wat | 1376 ++-- tests/compiler/std/static-array.optimized.wat | 322 +- tests/compiler/std/static-array.untouched.wat | 263 +- tests/compiler/std/staticarray.optimized.wat | 670 +- tests/compiler/std/staticarray.ts | 4 +- tests/compiler/std/staticarray.untouched.wat | 695 +- .../std/string-casemapping.optimized.wat | 2002 +++--- .../std/string-casemapping.untouched.wat | 1742 ++--- .../std/string-encoding.optimized.wat | 1171 ++-- .../std/string-encoding.untouched.wat | 1022 +-- tests/compiler/std/string.optimized.wat | 5265 ++++++++------- tests/compiler/std/string.untouched.wat | 4677 ++++++------- tests/compiler/std/symbol.json | 3 +- tests/compiler/std/symbol.optimized.wat | 258 +- tests/compiler/std/symbol.untouched.wat | 220 +- tests/compiler/std/trace.optimized.wat | 32 +- tests/compiler/std/trace.untouched.wat | 26 +- tests/compiler/std/typedarray.optimized.wat | 4631 +++++++------ tests/compiler/std/typedarray.untouched.wat | 4712 ++++++------- tests/compiler/super-inline.optimized.wat | 38 +- tests/compiler/super-inline.untouched.wat | 104 +- tests/compiler/switch.optimized.wat | 56 +- tests/compiler/switch.untouched.wat | 2 +- tests/compiler/tablebase.optimized.wat | 8 +- tests/compiler/tablebase.untouched.wat | 4 +- tests/compiler/throw.optimized.wat | 30 +- tests/compiler/throw.untouched.wat | 127 +- tests/compiler/typeof.optimized.wat | 185 +- tests/compiler/typeof.untouched.wat | 162 +- tests/compiler/wasi/abort.optimized.wat | 16 +- tests/compiler/wasi/abort.untouched.wat | 8 +- tests/compiler/wasi/seed.optimized.wat | 8 +- tests/compiler/wasi/seed.untouched.wat | 6 +- tests/compiler/wasi/trace.optimized.wat | 131 +- tests/compiler/wasi/trace.untouched.wat | 112 +- tests/compiler/while.optimized.wat | 525 +- tests/compiler/while.untouched.wat | 667 +- 286 files changed, 65102 insertions(+), 53019 deletions(-) diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index bc6854277a..e7009582e4 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -25,10 +25,6 @@ export interface ASUtil { /** Explicit start function, if requested. */ _start(): void; - /** Allocates a new string in the module's memory and returns a reference (pointer) to it. */ - __allocString(str: string): number; - /** Allocates a new array in the module's memory and returns a reference (pointer) to it. */ - __allocArray(id: number, values: ArrayLike): number; /** Copies a string's value from the module's memory. */ __getString(ptr: number): string; @@ -85,14 +81,18 @@ export interface ASUtil { /** Gets a live view on a Float64Array's values in the module's memory. */ __getFloat64ArrayView(ptr: number): Float64Array; + /** Allocates an instance of the class represented by the specified id. */ + __new(size: number, id: number): number; + /** Allocates a new string in the module's memory and returns a reference (pointer) to it. */ + __newString(str: string): number; + /** Allocates a new array in the module's memory and returns a reference (pointer) to it. */ + __newArray(id: number, values: ArrayLike): number; /** Retains a reference to a managed object externally, making sure that it doesn't become collected prematurely. Returns the pointer. */ __retain(ptr: number): number; /** Releases a previously retained reference to a managed object, allowing the runtime to collect it once its reference count reaches zero. */ __release(ptr: number): void; /** Forcefully resets the heap to its initial offset, effectively clearing dynamic memory. Stub runtime only. */ __reset?(): void; - /** Allocates an instance of the class represented by the specified id. */ - __alloc(size: number, id: number): number; /** Tests whether a managed object is an instance of the class represented by the specified base id. */ __instanceof(ptr: number, baseId: number): boolean; /** Forces a cycle collection. Only relevant if objects potentially forming reference cycles are used. */ diff --git a/lib/loader/index.js b/lib/loader/index.js index d49733c39a..6dc2873cd3 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -83,7 +83,7 @@ function postInstantiate(extendedExports, instance) { const exports = instance.exports; const memory = exports.memory; const table = exports.table; - const alloc = exports["__alloc"]; + const new_ = exports["__new"]; const retain = exports["__retain"]; const rttiBase = exports["__rtti_base"] || ~0; // oob if not present @@ -121,15 +121,15 @@ function postInstantiate(extendedExports, instance) { // } /** Allocates a new string in the module's memory and returns its retained pointer. */ - function __allocString(str) { + function __newString(str) { const length = str.length; - const ptr = alloc(length << 1, STRING_ID); + const ptr = new_(length << 1, STRING_ID); const U16 = new Uint16Array(memory.buffer); for (var i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i); return ptr; } - extendedExports.__allocString = __allocString; + extendedExports.__newString = __newString; /** Reads a string from the module's memory by its pointer. */ function __getString(ptr) { @@ -161,16 +161,16 @@ function postInstantiate(extendedExports, instance) { } /** Allocates a new array in the module's memory and returns its retained pointer. */ - function __allocArray(id, values) { + function __newArray(id, values) { const info = getArrayInfo(id); const align = getValueAlign(info); const length = values.length; - const buf = alloc(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); + const buf = new_(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); let result; if (info & STATICARRAY) { result = buf; } else { - const arr = alloc(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); + const arr = new_(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); const U32 = new Uint32Array(memory.buffer); U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = retain(buf); U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; @@ -187,7 +187,7 @@ function postInstantiate(extendedExports, instance) { return result; } - extendedExports.__allocArray = __allocArray; + extendedExports.__newArray = __newArray; /** Gets a live view on an array's values in the module's memory. Infers the array type from RTTI. */ function __getArrayView(arr) { diff --git a/lib/loader/tests/build/default.wasm b/lib/loader/tests/build/default.wasm index af296fe0283699ab2d7cf42c89821a646cb8bd38..2fa01d76eaa454bff0b801577fe9ba3e363fe5fa 100644 GIT binary patch literal 10075 zcmeHNTaO&ab*@WyPtVlsZu3r2vQ)jK97?gMTTIim9d20^#g!#3KuJLIv>cK{a%XSc z+2KkA6imJQ41|IG5+DWw_zxI13r|!ds(jhw{lrT}<$fV}GJ9 zDs{0j9KOc~SnnzGh_T(Zt+aD#y+2Tyd=L7a%U#v9^XHXHa;=R@jn-+ZlEheJthVSH zqm}&OQ+k+JNh>kB(a3C;SZlywd~A~F8_J{>2-&-bhB_!WR1>d{H2W!EmajiGd?%y9 zj9(4Da=w~;wfJ&;wfUOjYnrbaS1<5^;C)XJ3)lE*`dqf!U0v_rGODq-*jZUwzpUEL z#l?O%e(%c`7q9laU9~@5TwLqEqYeP9-{sfAoL_^^(waIf7%Sb*W>-DpFgzG6EnY&; z?oVG@cx~Z=wb|yNztUY(kL9bK!SxfJD_7L#>`R@#Jy_s<^jddtdhO=w+4c4Qrg}n# zHYbPtz8Y$2Q-Bt3fY?zPCE(=fu^GZ%USGqKH!ly?`|9y2j;sSEF7V{EK&-59cH_Y3 z32@@|@JEYh7ZxtOX%hmRxVd?=vmyXCwVO9r)l*Hp-yC!XOPAF%?aS9YYuCE3b=R&9 zuB+#>txlg(ooU4n=;o@;8keC*4!_X2vL3zY#i_UF-+1d(xNsr-@#6eh+n7T4`IDo5 zKF#@wfhGZ7d|?F85`c*TH*@Z_g)j-yb^<;B;tO11YR{W*g}3HknjD*+9D6&$%@h-G zZ=WJ+F$p&R{7H`OnH)P8QTNWkCC;s^cLw0A-|yT~C-<(dUs<|(Yun%{7rpJo(%RBM zeYx&k>95~Vr>Cm9e)mSVGf-cduKJhPS8sIsUG>%di;J*z=wG|J+FcuLR+^u0Hna-b z=`*dLoH_rg(XFA^$BimY&__I88!snwK?NT^Fk!k-%3;uk;pRqZ31LHfAsM3ia;NfXP;wrr`;1uPw9hlaMTL1s#&XW|^Xw2fd6LN9sv9G!N=& zD7I1l`n_*5Gd7rlpiL;h1uZpbx`EF|E(s^Xt_FXBDI7f7JLm#q^dNDxHgFrj zwO#|i4V3}kMqh>7!&gTx)*Mhtf;9!KHjD(5;0s!XQ6&f%Z@x9?gXWZPi?66gK~ z8*p?B` zie(rCqVfyGqVuNO!F`FQ!VlVGybo+h=|%89ub1g;AqnjsNK3kzag;73E6b2dBV2Q6 zN%!eB8{#&3)UY%;mV`qzdJGvPJaH`18ABb~^7bSJfm-td{_Ot3=&9k+10(56bw+_> z;V>W<_V^OD6kDYshp!@)kdVvhwEOMw-H-VDKy?I zQ|UyZ%63pl_`ZEcgaPRZM(?ND<>8|O}&X~ABBU0?Ytdqlo=F;tpv^*bGA$vXa{r1tK!6E17FuG zpU;IBc7mD~NWgnZL3Yw#n6Q`P%fd|n=RUiR)g{FYJXBciOJ&2Q4+G>I?%P^tL)vGg zGR9D?GH9%alnDnF-9kUb016Y@@IHyqR|Wt9&fTsH-Ogf{o=su;^wmchWpi|3s002h zABaGZZXh&B7(piP;eMpGt*Qx21;9qg6dNzsdiZsnMUdMWDBdj7#U+N}Egrc9kx|8} zM5lpAGB&_F0+|U~`Lv*;08o<#!-#t!H#~%MI(P9W%Rw(x;4IC1OGXpod7hdL*YMvDd={>8}SG2;K@E_u%5qwre(1Dtj zTnAT*8j&6fxJn}q`-ll%@)vWd0ZkMm;$r&T6wrb>HwE}$&rO-O<^C+yntd?s&jJF> zStv1DJnX4Wgy^Tv5mE5BaCi$*lS?501*9@#AqR|?aMF$^n>8Brd=KW-2oq+#8*>-S zLM2FcpQTbDGIB*N^4_t?rsf@t7ZkauMb1Wyi^!M+L_OK6(W1!PF{ekEBJy_3-9$G3 zH<2L_qpq^yzOg{I<_zrS6zFixb7RDo2!u&kxt?@2S`=tI=FA9F1lo?dn?M=@F%F7{ zikZ*Cum7J0^Yl0m{qE?4e!^V-yTkEshtqn``t7Xt;8n;^b!vaW9{6yy9&$f*|7dlJ z3dQq8sIfsA6j`Y1P-md*Kux93d`y}=f^kVrVb&sTBgjGHbE@V*Wl{*SrEsK%)rv zatmedLJ`Nn!>E^}nu+x`YgUXD)}53Z6?LqW^J`TEMo_8diy5zv9zfMp;}o!h`#YXf zfYkt&6iF=j1s?i@VrgeCX=8n?XQU*fT3M=WyL`gomh}ye_3>&;3jRD2>k-3So+6ZQ z$b}Y`+3;C)Xqa4pM|vDJiaqY>Q7!J((E~Vj^7L9vLEb&-=yR`>=#OHCAagUQ+b8Px zsiJUi%7tV24R1uhQJ;Em>+l^@AA3XLRj+8{jKOoOC{XTtEbjqw=mGaUZ8Yc=04aKI z6*WByw|i*b9??WGw;v^hH@p+Y0pqx7v-U%Qjn#Co*arneMFPUR44#=~H5{M08cv2> z4R@_QcS(#(LK=%gjypW`Zs1$wVs2#CYzJS4?S&icp)$dB=( z3L$asp#q^E;k!5lE4V$|$Ntc{21dZVLzPYOj+-LrEq74ZD-NTWSH+{H#`_Um2-Lt| zP-f24C;`G02M7o1a>c^tw8EV*sLJU@kl;qH30g8HBhLUPju5(qIgH>WHZgcG4${AI zKtR$0WYF$V9OmkAoa?4%vnBp-Z_4Q0@&{ zUr~^tN^L+IhE~Pzl{{=9@8Fz#o=0ao8)?IvkJo3MUVWI;@Cqu*PHGeEP`Bfyo}q3* zqIi15+HD(trNUD+X9$PiFAbyG?8eyB_hIY{_hIb2)-;Ctn-F4RYv6|P>Jf}dE;mg6 z$cu2~jN1T@tQi~Lq8X%*wm@J2l@rH#c|2|q_#vBw!VPF7f^-?j15R|yJm57z0QZ5+ zON|($@9|fUVYs8$khSjUjTK}c;pVZ(4SpmbH)sxHor)eHFu*%KG`Q+vQ^aOJpbn3? z!FW4DAq)w%KQ@OWa78(Zy^2sf9A;E+@YZ}gxA_l!{=={PZ~b}M5+AWR!s6DtiHJ*m zi<_A=6aYQ0h=y!?%9;ib$>V0>+&kib{FMc%3FADBw;!{S9?l4 zej>LHxLM++=3q?AJ*pU+dvOA?B(E?B@b*&0Mxrz2uQ={=RUSg7tag!Lie~}F{OI-q zAtnL17CT_aT4~1FIQ@zK4x`L#Q`v6p$ZK>sM!QngT*Zyue@h7DkX(*sm~x5 z?joXkByWrOImF`KYh*x+qM=FLbgT&_}yImsmy_h2MsrRAw&z9o;u=wXxi~ zg2r|m3~$)rcEu5HcXg>W!HynR4?jbZ!q_0!%LR6Q2MpQ&ia9q;rLaq4b1r3f*Y|&G z#J`!trnu7|=;!=da(a(a+5i-fP13B9tEQmLfPLOn@lTeVHP9srBP<-}#IA+vl?op!_toPSJQ~4czXP}xwXQDXYXA!CY7MIm(5|Ch!DwGy zQ(aJaUq9T+H`GnwbjK@ecO<)OW%dbk1$2L--DCO0yv6rqA1fPo>evJXWoCaKyj}s7 zcfsj8Rvk!t74JUyUaR>2a2M>c#s=z^x*^<9TH@XsasR$`r$2w!+U$?9H?eNi9d&p& z{)g5*_t;(d?34E`z|(41!0`&!C&vSI9Xk2Mx)Vq4!eW2C>b)!dQ?fJ8TcFs*3e?D^ zdI#Tq^p?acewjQ-y74-fpy8|dBYy2w-%EG)i8o*mT4PDALbH@@75~;S7H$5^bZ4!M zK5~S;GXjQ Pfc}W*7~uJMc`Nn5gZi%K literal 9668 zcmeHN%a0t#d9O!zPtVlsZj)Szl&DBGyK9+JB7tMAy)$e5(9w`VSc}_x@Tq| zBy|uB7|1NAyB^=WzVEB5Z>YN48(Jx)&$lm|-CcEA@9JH)@U*+~(imk^T~6?foj*~R zmAc&6-Ti|s@gXf8G`l~QXUeAKL%PyR z*p-Qltp*=CA5A`5d^kSZd`$2$$wy5eqy_n31bfOg{vmyK`qHKCUKs}0Zf^88%k4LN zo7c+g>U6fz+vpE&8P&LSsk^@3Usf)^bZO8lyDOV&qRHlZue;q-lV~sZ*VlW?r8?^{ zUY0AD-p7o6I6b%Y=F&x*WZUIny|<~3<{RDe`swbKE9#g%*B#gs1)j6ldga;8n;Yl* z{lT_+NQNNMXz1Z%HPp(s04?1Bu}5T-fa9Z&P7!vwzX_H%m&^V@O;2#750uE@!~ zDq}sH?Q{p!s%XUqjC0jC8p|*oho5U)=|?Yme&W5wx8FSzE?x|Od};B#%_q=(VSd%-PhEI(DU5?mIDuY#=|yswJo3)F;oZe^<6~3fWA8<{q8NjF z?+j6ojDsz{Fwe20<6{>h>anTK-ghso_q!$J8VtI()JsP<`d3!2-r6(xvWqTtdS!E^ zRP%N3%AkKkeSM;u8}x4Ux}`cZS@oCu8#lUxp87_!p&1CeX#MTCUj3EPtzEBA8Pze~ z1ikfIvJh18;crZsER=E>v|)F9t7E+l#Zt11*XMWd-nEM`S(ug&*!T^ak3h4{B>4$|nj2&>+bq%6y-gJBacUkdB#EpV(BEEKC4 zi9muES4~7p3ga~ax4a$97zicQGoKMFJB+%cCm7HlLMCf~b66F^3x|>S{HG3uc#n+| zkZdK_Di*L&xsV8xL6{8A0%00a7@u`C_$83v3?N*MiiOCd59WvX;C~H`NN)M6PcGE< z{qK5;4(K&W=0iv2+QLy=bkrP)g(oUl(5A(M1h@zElp+?>;i;8zDN<7jRY?DX{UkdOw?lr!CGVOR3{e%c>N;u zN3N?791xIhI!!^^o4~|P9GqIOcJej?38944u-ZwbQz`N%&uw@di>n;|LC>1T3|4qXGRhk#-9HH6d&$1(7N6+;_tc8LawiA(Kl;X|Ah%hhmp|)WbU); zU@Zxy^vNjd8!i=c4*>EF_g7kHG*4wI22X7%7-|)Hv2x4;wkS&Y`kuIay#xqw_PZ=h zI)m+ZCWX(Y-#JMw7U;MzL{c@dFM)Ie-ax{LGI0p^k6K#@6jQt;hg$t#)|+#c;}HyW z>fqrp9+?HXuZmH)2hu+rkf8vP5x`8r@VkO;0YJ^zV$^^Y!HAH8XQ(#0dyNysRJhLl zD{cJQ zhd}%=i4MWNi;{hS?RA(K|01b`L1sd5)63@#Jd4S{4T{{8@dRZgD>tDEvcVw@rf`3# zH8z%0CXvPc5TD&Gdd6yq?P{aDt-~*2GD*L{#XK3s^T$?Y6~KIsyNoDu3~MlZ{0&9} zR;6HKbVv4%ebc!HM!a5iUr|gx{F{Af(rROo2C%(!@G$U8k#-7#3$atC9rTWSSOhO7 zm==p89gXKCg1sjB3>TcKH>6>zaD-!CVgBUntb+8iJEAK{u&QgKBYU`vJgbsw1kkR9 zIgAAL`q<#{ILK2e_Y)N~K#~1V#BuSKI6;n>AeB=FC%zr`5?IxpmH8Px{GDtVtfGv`mDt@P9vBx9*BQm~CH)LKVb#IEt8QBOtWNA}n zX*w*7WydWFfoR_mt7m9mkSG{*-~{15GvOC1JT;OHPSoMy{$6tV`^YtOAG!WO)|R_1 z1c1e_@v!qK6!9-?3?C^_!a;5al!GPE7!ivE?X!jK6r22~$NMji4|zs-KT z?lXyrrg)JV^sbnhkn`Mqf6~Aq@wm*%L3o)@s(GHXN$)wWzNr<=isVUryrP@LbGVw3 zeI0o;T10xdkW?0NbZR5{xQ<+qva;0$eF2_?Q`ChCAOw41!nEn0Ri+nn-|Cw8!B{e!_hI+avLBMpD{^`_^xU+k?4Ko~j=8fPL_b(PHiF z3qZO%R;M_nc-B8O_9%mc8m=`sYqXJPc!0;%1yz-xdEG%Ld5c9JfZ%BV6@ft;)eR)X z#uoP8##Vh!VVhSo%vqd|+8O9sCRYo=(is#!c!z3mvrl3#K`$PEm zgM!kshf_qgv~w#>V>4Dn_Ik@4J?_VVqf|;tC+FxLkfK9yrxSmf*!J6ePyYqi9K` z3r$px5|naq9gdgi;z_S(k4Kui_$tagIOXxGSj^#^e~OpIzqY2atG~a`Ma7}$p!7+U zSD*makLTu$FIM+a3yeN26Ug11U~P8vg0Lam1BOy#B!i`^CISwYYdmK*K%zl2Sl^)c zS=hM)+l0G%6Gp$Qx7MMj2=rJK2*q~_gx3i`*8~BA5f;+$LXm~9BEF^pc48zDCfX6K zh_C7RIuW5O+DYtHl-l70;v(5%VS2B;`Hy}6<5&F;KkBq%l;A9l@^BL?n)(*QN?ud} zJ#xg0g8LY29=b>0b+_bBh^2)YU_@_rc>TYZ1@y4i}3vD_7)Gq@RpKs zi;BrpbUm&ix!bkkY4noUqm#+KCe{w&ODT-y+@p*JTxZ+7go2|fewS|;${khk8(dS_ zFP`Cb(`D$)Jp`W$X6_+K3Y;T25I(2EhqxJgbzW7U`!oveKGxLt5cPh7UwXnfhU!r- zR1a0*#62j-(+D{!37}kkup}S_4HgJcesMDiU@eMTthUT#G(rk}QbgM%932IAs)m{` zZxYa$IFDh7H`O$>Lr(gv$eZE?TEXSG$HELRx|ab@qvfap3~$zVO!)ie;n#j|&cI63 zM6T?KOa0fxqA=y>Nw|}S*;q#(_MeXZmr-8}yzHPXuwE62vCfMzBSUarQ$g)XtUm64 zRo4D9R#|B&XuEe83M%d~OwG*C_t;zjmNFY48N=@rzEE2CIgNWK653+-)tz>bg3HfV!);=IZYYp>6`cH{|#e?HtOc3+ztn`3(s+^=B%d*Iy%ty11s z@f<*s%}SEn<{;)s_fp+bH-raeC*G~0Jf9jj|Ku1?wnv!T;1{hxYwX9pZQV1Ejp4FQ zd3OLyyI&D|^+d{2U8lXRd-~Ba47Nwy4s!VX5cqdNsRzo`ep`JP?E!i#vYvO6`)McK{a%XSc z+2KkA6imJQ41|IG5+DWw_zxI13r|!ds(jhw{lrT}<$fV}GJ9 zDs{0j9KOc~SnnzGh_T(Zt+aD#y+2Tyd=L7a%U#v9^XHXHa;=R@jn-+ZlEheJthVSH zqm}&OQ+k+JNh>kB(a3C;SZlywd~A~F8_J{>2-&-bhB_!WR1>d{H2W!EmajiGd?%y9 zj9(4Da=w~;wfJ&;wfUOjYnrbaS1<5^;C)XJ3)lE*`dqf!U0v_rGODq-*jZUwzpUEL z#l?O%e(%c`7q9laU9~@5TwLqEqYeP9-{sfAoL_^^(waIf7%Sb*W>-DpFgzG6EnY&; z?oVG@cx~Z=wb|yNztUY(kL9bK!SxfJD_7L#>`R@#Jy_s<^jddtdhO=w+4c4Qrg}n# zHYbPtz8Y$2Q-Bt3fY?zPCE(=fu^GZ%USGqKH!ly?`|9y2j;sSEF7V{EK&-59cH_Y3 z32@@|@JEYh7ZxtOX%hmRxVd?=vmyXCwVO9r)l*Hp-yC!XOPAF%?aS9YYuCE3b=R&9 zuB+#>txlg(ooU4n=;o@;8keC*4!_X2vL3zY#i_UF-+1d(xNsr-@#6eh+n7T4`IDo5 zKF#@wfhGZ7d|?F85`c*TH*@Z_g)j-yb^<;B;tO11YR{W*g}3HknjD*+9D6&$%@h-G zZ=WJ+F$p&R{7H`OnH)P8QTNWkCC;s^cLw0A-|yT~C-<(dUs<|(Yun%{7rpJo(%RBM zeYx&k>95~Vr>Cm9e)mSVGf-cduKJhPS8sIsUG>%di;J*z=wG|J+FcuLR+^u0Hna-b z=`*dLoH_rg(XFA^$BimY&__I88!snwK?NT^Fk!k-%3;uk;pRqZ31LHfAsM3ia;NfXP;wrr`;1uPw9hlaMTL1s#&XW|^Xw2fd6LN9sv9G!N=& zD7I1l`n_*5Gd7rlpiL;h1uZpbx`EF|E(s^Xt_FXBDI7f7JLm#q^dNDxHgFrj zwO#|i4V3}kMqh>7!&gTx)*Mhtf;9!KHjD(5;0s!XQ6&f%Z@x9?gXWZPi?66gK~ z8*p?B` zie(rCqVfyGqVuNO!F`FQ!VlVGybo+h=|%89ub1g;AqnjsNK3kzag;73E6b2dBV2Q6 zN%!eB8{#&3)UY%;mV`qzdJGvPJaH`18ABb~^7bSJfm-td{_Ot3=&9k+10(56bw+_> z;V>W<_V^OD6kDYshp!@)kdVvhwEOMw-H-VDKy?I zQ|UyZ%63pl_`ZEcgaPRZM(?ND<>8|O}&X~ABBU0?Ytdqlo=F;tpv^*bGA$vXa{r1tK!6E17FuG zpU;IBc7mD~NWgnZL3Yw#n6Q`P%fd|n=RUiR)g{FYJXBciOJ&2Q4+G>I?%P^tL)vGg zGR9D?GH9%alnDnF-9kUb016Y@@IHyqR|Wt9&fTsH-Ogf{o=su;^wmchWpi|3s002h zABaGZZXh&B7(piP;eMpGt*Qx21;9qg6dNzsdiZsnMUdMWDBdj7#U+N}Egrc9kx|8} zM5lpAGB&_F0+|U~`Lv*;08o<#!-#t!H#~%MI(P9W%Rw(x;4IC1OGXpod7hdL*YMvDd={>8}SG2;K@E_u%5qwre(1Dtj zTnAT*8j&6fxJn}q`-ll%@)vWd0ZkMm;$r&T6wrb>HwE}$&rO-O<^C+yntd?s&jJF> zStv1DJnX4Wgy^Tv5mE5BaCi$*lS?501*9@#AqR|?aMF$^n>8Brd=KW-2oq+#8*>-S zLM2FcpQTbDGIB*N^4_t?rsf@t7ZkauMb1Wyi^!M+L_OK6(W1!PF{ekEBJy_3-9$G3 zH<2L_qpq^yzOg{I<_zrS6zFixb7RDo2!u&kxt?@2S`=tI=FA9F1lo?dn?M=@F%F7{ zikZ*Cum7J0^Yl0m{qE?4e!^V-yTkEshtqn``t7Xt;8n;^b!vaW9{6yy9&$f*|7dlJ z3dQq8sIfsA6j`Y1P-md*Kux93d`y}=f^kVrVb&sTBgjGHbE@V*Wl{*SrEsK%)rv zatmedLJ`Nn!>E^}nu+x`YgUXD)}53Z6?LqW^J`TEMo_8diy5zv9zfMp;}o!h`#YXf zfYkt&6iF=j1s?i@VrgeCX=8n?XQU*fT3M=WyL`gomh}ye_3>&;3jRD2>k-3So+6ZQ z$b}Y`+3;C)Xqa4pM|vDJiaqY>Q7!J((E~Vj^7L9vLEb&-=yR`>=#OHCAagUQ+b8Px zsiJUi%7tV24R1uhQJ;Em>+l^@AA3XLRj+8{jKOoOC{XTtEbjqw=mGaUZ8Yc=04aKI z6*WByw|i*b9??WGw;v^hH@p+Y0pqx7v-U%Qjn#Co*arneMFPUR44#=~H5{M08cv2> z4R@_QcS(#(LK=%gjypW`Zs1$wVs2#CYzJS4?S&icp)$dB=( z3L$asp#q^E;k!5lE4V$|$Ntc{21dZVLzPYOj+-LrEq74ZD-NTWSH+{H#`_Um2-Lt| zP-f24C;`G02M7o1a>c^tw8EV*sLJU@kl;qH30g8HBhLUPju5(qIgH>WHZgcG4${AI zKtR$0WYF$V9OmkAoa?4%vnBp-Z_4Q0@&{ zUr~^tN^L+IhE~Pzl{{=9@8Fz#o=0ao8)?IvkJo3MUVWI;@Cqu*PHGeEP`Bfyo}q3* zqIi15+HD(trNUD+X9$PiFAbyG?8eyB_hIY{_hIb2)-;Ctn-F4RYv6|P>Jf}dE;mg6 z$cu2~jN1T@tQi~Lq8X%*wm@J2l@rH#c|2|q_#vBw!VPF7f^-?j15R|yJm57z0QZ5+ zON|($@9|fUVYs8$khSjUjTK}c;pVZ(4SpmbH)sxHor)eHFu*%KG`Q+vQ^aOJpbn3? z!FW4DAq)w%KQ@OWa78(Zy^2sf9A;E+@YZ}gxA_l!{=={PZ~b}M5+AWR!s6DtiHJ*m zi<_A=6aYQ0h=y!?%9;ib$>V0>+&kib{FMc%3FADBw;!{S9?l4 zej>LHxLM++=3q?AJ*pU+dvOA?B(E?B@b*&0Mxrz2uQ={=RUSg7tag!Lie~}F{OI-q zAtnL17CT_aT4~1FIQ@zK4x`L#Q`v6p$ZK>sM!QngT*Zyue@h7DkX(*sm~x5 z?joXkByWrOImF`KYh*x+qM=FLbgT&_}yImsmy_h2MsrRAw&z9o;u=wXxi~ zg2r|m3~$)rcEu5HcXg>W!HynR4?jbZ!q_0!%LR6Q2MpQ&ia9q;rLaq4b1r3f*Y|&G z#J`!trnu7|=;!=da(a(a+5i-fP13B9tEQmLfPLOn@lTeVHP9srBP<-}#IA+vl?op!_toPSJQ~4czXP}xwXQDXYXA!CY7MIm(5|Ch!DwGy zQ(aJaUq9T+H`GnwbjK@ecO<)OW%dbk1$2L--DCO0yv6rqA1fPo>evJXWoCaKyj}s7 zcfsj8Rvk!t74JUyUaR>2a2M>c#s=z^x*^<9TH@XsasR$`r$2w!+U$?9H?eNi9d&p& z{)g5*_t;(d?34E`z|(41!0`&!C&vSI9Xk2Mx)Vq4!eW2C>b)!dQ?fJ8TcFs*3e?D^ zdI#Tq^p?acewjQ-y74-fpy8|dBYy2w-%EG)i8o*mT4PDALbH@@75~;S7H$5^bZ4!M zK5~S;GXjQ Pfc}W*7~uJMc`Nn5gZi%K literal 9668 zcmeHN%a0t#d9O!zPtVlsZj)Szl&DBGyK9+JB7tMAy)$e5(9w`VSc}_x@Tq| zBy|uB7|1NAyB^=WzVEB5Z>YN48(Jx)&$lm|-CcEA@9JH)@U*+~(imk^T~6?foj*~R zmAc&6-Ti|s@gXf8G`l~QXUeAKL%PyR z*p-Qltp*=CA5A`5d^kSZd`$2$$wy5eqy_n31bfOg{vmyK`qHKCUKs}0Zf^88%k4LN zo7c+g>U6fz+vpE&8P&LSsk^@3Usf)^bZO8lyDOV&qRHlZue;q-lV~sZ*VlW?r8?^{ zUY0AD-p7o6I6b%Y=F&x*WZUIny|<~3<{RDe`swbKE9#g%*B#gs1)j6ldga;8n;Yl* z{lT_+NQNNMXz1Z%HPp(s04?1Bu}5T-fa9Z&P7!vwzX_H%m&^V@O;2#750uE@!~ zDq}sH?Q{p!s%XUqjC0jC8p|*oho5U)=|?Yme&W5wx8FSzE?x|Od};B#%_q=(VSd%-PhEI(DU5?mIDuY#=|yswJo3)F;oZe^<6~3fWA8<{q8NjF z?+j6ojDsz{Fwe20<6{>h>anTK-ghso_q!$J8VtI()JsP<`d3!2-r6(xvWqTtdS!E^ zRP%N3%AkKkeSM;u8}x4Ux}`cZS@oCu8#lUxp87_!p&1CeX#MTCUj3EPtzEBA8Pze~ z1ikfIvJh18;crZsER=E>v|)F9t7E+l#Zt11*XMWd-nEM`S(ug&*!T^ak3h4{B>4$|nj2&>+bq%6y-gJBacUkdB#EpV(BEEKC4 zi9muES4~7p3ga~ax4a$97zicQGoKMFJB+%cCm7HlLMCf~b66F^3x|>S{HG3uc#n+| zkZdK_Di*L&xsV8xL6{8A0%00a7@u`C_$83v3?N*MiiOCd59WvX;C~H`NN)M6PcGE< z{qK5;4(K&W=0iv2+QLy=bkrP)g(oUl(5A(M1h@zElp+?>;i;8zDN<7jRY?DX{UkdOw?lr!CGVOR3{e%c>N;u zN3N?791xIhI!!^^o4~|P9GqIOcJej?38944u-ZwbQz`N%&uw@di>n;|LC>1T3|4qXGRhk#-9HH6d&$1(7N6+;_tc8LawiA(Kl;X|Ah%hhmp|)WbU); zU@Zxy^vNjd8!i=c4*>EF_g7kHG*4wI22X7%7-|)Hv2x4;wkS&Y`kuIay#xqw_PZ=h zI)m+ZCWX(Y-#JMw7U;MzL{c@dFM)Ie-ax{LGI0p^k6K#@6jQt;hg$t#)|+#c;}HyW z>fqrp9+?HXuZmH)2hu+rkf8vP5x`8r@VkO;0YJ^zV$^^Y!HAH8XQ(#0dyNysRJhLl zD{cJQ zhd}%=i4MWNi;{hS?RA(K|01b`L1sd5)63@#Jd4S{4T{{8@dRZgD>tDEvcVw@rf`3# zH8z%0CXvPc5TD&Gdd6yq?P{aDt-~*2GD*L{#XK3s^T$?Y6~KIsyNoDu3~MlZ{0&9} zR;6HKbVv4%ebc!HM!a5iUr|gx{F{Af(rROo2C%(!@G$U8k#-7#3$atC9rTWSSOhO7 zm==p89gXKCg1sjB3>TcKH>6>zaD-!CVgBUntb+8iJEAK{u&QgKBYU`vJgbsw1kkR9 zIgAAL`q<#{ILK2e_Y)N~K#~1V#BuSKI6;n>AeB=FC%zr`5?IxpmH8Px{GDtVtfGv`mDt@P9vBx9*BQm~CH)LKVb#IEt8QBOtWNA}n zX*w*7WydWFfoR_mt7m9mkSG{*-~{15GvOC1JT;OHPSoMy{$6tV`^YtOAG!WO)|R_1 z1c1e_@v!qK6!9-?3?C^_!a;5al!GPE7!ivE?X!jK6r22~$NMji4|zs-KT z?lXyrrg)JV^sbnhkn`Mqf6~Aq@wm*%L3o)@s(GHXN$)wWzNr<=isVUryrP@LbGVw3 zeI0o;T10xdkW?0NbZR5{xQ<+qva;0$eF2_?Q`ChCAOw41!nEn0Ri+nn-|Cw8!B{e!_hI+avLBMpD{^`_^xU+k?4Ko~j=8fPL_b(PHiF z3qZO%R;M_nc-B8O_9%mc8m=`sYqXJPc!0;%1yz-xdEG%Ld5c9JfZ%BV6@ft;)eR)X z#uoP8##Vh!VVhSo%vqd|+8O9sCRYo=(is#!c!z3mvrl3#K`$PEm zgM!kshf_qgv~w#>V>4Dn_Ik@4J?_VVqf|;tC+FxLkfK9yrxSmf*!J6ePyYqi9K` z3r$px5|naq9gdgi;z_S(k4Kui_$tagIOXxGSj^#^e~OpIzqY2atG~a`Ma7}$p!7+U zSD*makLTu$FIM+a3yeN26Ug11U~P8vg0Lam1BOy#B!i`^CISwYYdmK*K%zl2Sl^)c zS=hM)+l0G%6Gp$Qx7MMj2=rJK2*q~_gx3i`*8~BA5f;+$LXm~9BEF^pc48zDCfX6K zh_C7RIuW5O+DYtHl-l70;v(5%VS2B;`Hy}6<5&F;KkBq%l;A9l@^BL?n)(*QN?ud} zJ#xg0g8LY29=b>0b+_bBh^2)YU_@_rc>TYZ1@y4i}3vD_7)Gq@RpKs zi;BrpbUm&ix!bkkY4noUqm#+KCe{w&ODT-y+@p*JTxZ+7go2|fewS|;${khk8(dS_ zFP`Cb(`D$)Jp`W$X6_+K3Y;T25I(2EhqxJgbzW7U`!oveKGxLt5cPh7UwXnfhU!r- zR1a0*#62j-(+D{!37}kkup}S_4HgJcesMDiU@eMTthUT#G(rk}QbgM%932IAs)m{` zZxYa$IFDh7H`O$>Lr(gv$eZE?TEXSG$HELRx|ab@qvfap3~$zVO!)ie;n#j|&cI63 zM6T?KOa0fxqA=y>Nw|}S*;q#(_MeXZmr-8}yzHPXuwE62vCfMzBSUarQ$g)XtUm64 zRo4D9R#|B&XuEe83M%d~OwG*C_t;zjmNFY48N=@rzEE2CIgNWK653+-)tz>bg3HfV!);=IZYYp>6`cH{|#e?HtOc3+ztn`3(s+^=B%d*Iy%ty11s z@f<*s%}SEn<{;)s_fp+bH-raeC*G~0Jf9jj|Ku1?wnv!T;1{hxYwX9pZQV1Ejp4FQ zd3OLyyI&D|^+d{2U8lXRd-~Ba47Nwy4s!VX5cqdNsRzo`ep`JP?E!i#vYvO6`)M>> 0, 0x80000000]; let arr = new Uint32Array(values); - let ref = exports.__retain(exports.__allocArray(exports.UINT32ARRAY_ID, arr)); + let ref = exports.__retain(exports.__newArray(exports.UINT32ARRAY_ID, arr)); assert(exports.__instanceof(ref, exports.UINT32ARRAY_ID)); assert.deepEqual(exports.__getUint32Array(ref), arr); assert.deepEqual(exports.__getUint32ArrayView(ref), arr); @@ -175,7 +175,7 @@ function test(file) { // should be able to distinguish between signed and unsigned with static array layout { let arr = [1, -1 >>> 0, 0x80000000]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYU32_ID, arr)); + let ref = exports.__retain(exports.__newArray(exports.STATICARRAYU32_ID, arr)); assert(exports.__instanceof(ref, exports.STATICARRAYU32_ID)); assert.deepEqual(exports.__getArray(ref), arr); exports.__release(ref); @@ -186,7 +186,7 @@ function test(file) { { let values = [0.0, 1.5, 2.5]; let arr = new Float32Array(values); - let ref = exports.__retain(exports.__allocArray(exports.FLOAT32ARRAY_ID, arr)); + let ref = exports.__retain(exports.__newArray(exports.FLOAT32ARRAY_ID, arr)); assert(exports.__instanceof(ref, exports.FLOAT32ARRAY_ID)); assert.deepEqual(exports.__getFloat32Array(ref), arr); assert.deepEqual(exports.__getFloat32ArrayView(ref), arr); @@ -198,7 +198,7 @@ function test(file) { // should be able to distinguish between integer and float static arrays { let arr = [0.0, 1.5, 2.5]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYF32_ID, arr)); + let ref = exports.__retain(exports.__newArray(exports.STATICARRAYF32_ID, arr)); assert(exports.__instanceof(ref, exports.STATICARRAYF32_ID)); assert.deepEqual(exports.__getArray(ref), arr); exports.__release(ref); @@ -208,7 +208,7 @@ function test(file) { // should be able to work with normal arrays { let arr = [1, 2, 3, 4, 5]; - let ref = exports.__retain(exports.__allocArray(exports.ARRAYI32_ID, arr)); + let ref = exports.__retain(exports.__newArray(exports.ARRAYI32_ID, arr)); assert(exports.__instanceof(ref, exports.ARRAYI32_ID)); exports.changeLength(ref, 3); assert.deepEqual(exports.__getArray(ref), [1, 2, 3]); @@ -248,7 +248,7 @@ function test(file) { // should be able to mutate an array in place using getArrayView { - let ptr = exports.__retain(exports.__allocArray(exports.FLOAT32ARRAY_ID, [1, 2, 3])); + let ptr = exports.__retain(exports.__newArray(exports.FLOAT32ARRAY_ID, [1, 2, 3])); let view = exports.__getArrayView(ptr); assert.deepEqual(view, new Float32Array([1, 2, 3])); exports.modifyFloat32Array(ptr, 0, 4); diff --git a/lib/rtrace/index.js b/lib/rtrace/index.js index 4815afa12c..788b5d2dac 100644 --- a/lib/rtrace/index.js +++ b/lib/rtrace/index.js @@ -9,7 +9,7 @@ const PTR_SIZE = 1 << PTR_SIZE_BITS; const PTR_MASK = PTR_SIZE - 1; const PTR_VIEW = Uint32Array; -const BLOCK_OVERHEAD = 16; +const BLOCK_OVERHEAD = PTR_SIZE; function assert(x) { if (!x) throw Error("assertion failed"); @@ -142,9 +142,10 @@ class Rtrace { /** Obtains information about a block. */ getBlockInfo(ptr) { - var header = new Uint32Array(this.memory.buffer, ptr, 4); + var header = new Uint32Array(this.memory.buffer, ptr, 5); var mmInfo = header[0]; var gcInfo = header[1]; + var gcInfo2 = header[2]; const mmTags = [ // 0│L│F [], ["FREE"], @@ -171,8 +172,9 @@ class Rtrace { color: gcColor[gcInfo << 1 >>> 29], rc: gcInfo << 4 >>> 4 }, - rtId: header[2], - rtSize: header[3] + gcInfo2, + rtId: header[3], + rtSize: header[4] } }; } diff --git a/src/builtins.ts b/src/builtins.ts index eb6e4f60f6..e1c2edbd7f 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -2879,7 +2879,7 @@ function builtin_memory_data(ctx: BuiltinContext): ExpressionRef { } let buf = new Uint8Array(numElements * elementType.byteSize); assert(compiler.writeStaticBuffer(buf, 0, elementType, exprs) == buf.byteLength); - offset = compiler.addMemorySegment(buf, align).offset; + offset = compiler.addAlignedMemorySegment(buf, align).offset; } else { // data(size[, align]) let arg0 = compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT); let precomp = module.runExpression(arg0, ExpressionRunnerFlags.PreserveSideeffects); @@ -2908,7 +2908,7 @@ function builtin_memory_data(ctx: BuiltinContext): ExpressionRef { return module.unreachable(); } } - offset = compiler.addMemorySegment(new Uint8Array(size), align).offset; + offset = compiler.addAlignedMemorySegment(new Uint8Array(size), align).offset; } // FIXME: what if recompiles happen? recompiles are bad. compiler.currentType = usizeType; @@ -8835,7 +8835,7 @@ export function compileRTTI(compiler: Compiler): void { } assert(off == size); var usizeType = program.options.usizeType; - var segment = compiler.addMemorySegment(data); + var segment = compiler.addAlignedMemorySegment(data); if (usizeType.size == 8) { let offset = segment.offset; module.addGlobal(BuiltinNames.rtti_base, NativeType.I64, false, module.i64(i64_low(offset), i64_high(offset))); diff --git a/src/common.ts b/src/common.ts index 5a8d66769b..301d1e2f47 100644 --- a/src/common.ts +++ b/src/common.ts @@ -229,14 +229,18 @@ export namespace CommonNames { export const alloc = "__alloc"; export const realloc = "__realloc"; export const free = "__free"; + export const new_ = "__new"; + export const renew = "__renew"; export const retain = "__retain"; export const release = "__release"; export const collect = "__collect"; export const typeinfo = "__typeinfo"; export const instanceof_ = "__instanceof"; export const visit = "__visit"; - export const allocBuffer = "__allocBuffer"; - export const allocArray = "__allocArray"; + export const newBuffer = "__newBuffer"; + export const newArray = "__newArray"; + export const BLOCK = "~lib/rt/common/BLOCK"; + export const OBJECT = "~lib/rt/common/OBJECT"; } // shared diff --git a/src/compiler.ts b/src/compiler.ts index 7063a56113..f5dd506bfd 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1835,7 +1835,7 @@ export class Compiler extends DiagnosticEmitter { // === Memory =================================================================================== /** Adds a static memory segment with the specified data. */ - addMemorySegment(buffer: Uint8Array, alignment: i32 = 16): MemorySegment { + addAlignedMemorySegment(buffer: Uint8Array, alignment: i32 = 16): MemorySegment { assert(isPowerOf2(alignment)); var memoryOffset = i64_align(this.memoryOffset, alignment); var segment = new MemorySegment(buffer, memoryOffset); @@ -1844,6 +1844,18 @@ export class Compiler extends DiagnosticEmitter { return segment; } + /** Adds a static memory segment representing a runtime object. */ + addRuntimeMemorySegment(buffer: Uint8Array): MemorySegment { + // Runtime objects imply a full BLOCK and OBJECT header, see rt/common.ts + // ((memoryOffset + sizeof_usize + AL_MASK) & ~AL_MASK) - sizeof_usize + var usizeSize = this.options.usizeType.byteSize; + var memoryOffset = i64_sub(i64_align(i64_add(this.memoryOffset, i64_new(usizeSize)), 16), i64_new(usizeSize)); + var segment = new MemorySegment(buffer, memoryOffset); + this.memorySegments.push(segment); + this.memoryOffset = i64_add(memoryOffset, i64_new(buffer.length, 0)); + return segment; + } + /** Ensures that a string exists in static memory and returns a pointer to it. Deduplicates. */ ensureStaticString(stringValue: string): ExpressionRef { var program = this.program; @@ -1859,7 +1871,7 @@ export class Compiler extends DiagnosticEmitter { for (let i = 0; i < len; ++i) { writeI16(stringValue.charCodeAt(i), buf, rtHeaderSize + (i << 1)); } - stringSegment = this.addMemorySegment(buf); + stringSegment = this.addRuntimeMemorySegment(buf); segments.set(stringValue, stringSegment); } var ptr = i64_add(stringSegment.offset, i64_new(rtHeaderSize)); @@ -1954,9 +1966,9 @@ export class Compiler extends DiagnosticEmitter { var program = this.program; var arrayBufferInstance = program.arrayBufferInstance; var buf = arrayBufferInstance.createBuffer(values.length * elementType.byteSize); - writeI32(id, buf, 8); // use specified rtId + this.program.OBJECTInstance.writeField("rtId", id, buf, 0); // use specified rtId assert(this.writeStaticBuffer(buf, program.runtimeHeaderSize, elementType, values) == buf.length); - return this.addMemorySegment(buf); + return this.addRuntimeMemorySegment(buf); } /** Adds an array header to static memory and returns the created segment. */ @@ -1974,7 +1986,7 @@ export class Compiler extends DiagnosticEmitter { assert(arrayInstance.writeField("dataStart", bufferAddress, buf)); assert(arrayInstance.writeField("byteLength", bufferLength, buf)); assert(arrayInstance.writeField("length_", arrayLength, buf)); - return this.addMemorySegment(buf); + return this.addRuntimeMemorySegment(buf); } // === Table ==================================================================================== @@ -1998,7 +2010,7 @@ export class Compiler extends DiagnosticEmitter { let buf = rtInstance.createBuffer(); assert(rtInstance.writeField("_index", index, buf)); assert(rtInstance.writeField("_env", 0, buf)); - instance.memorySegment = memorySegment = this.addMemorySegment(buf); + instance.memorySegment = memorySegment = this.addRuntimeMemorySegment(buf); } return i64_add(memorySegment.offset, i64_new(program.runtimeHeaderSize)); } @@ -8880,8 +8892,8 @@ export class Compiler extends DiagnosticEmitter { // otherwise allocate a new array header and make it wrap a copy of the static buffer } else { - // __allocArray(length, alignLog2, classId, staticBuffer) - let expr = this.makeCallDirect(program.allocArrayInstance, [ + // __newArray(length, alignLog2, classId, staticBuffer) + let expr = this.makeCallDirect(program.newArrayInstance, [ module.i32(length), program.options.isWasm64 ? module.i64(elementType.alignLog2) @@ -8919,11 +8931,11 @@ export class Compiler extends DiagnosticEmitter { var nativeArrayType = arrayType.toNativeType(); var stmts = new Array(); - // tempThis = __allocArray(length, alignLog2, classId, source = 0) + // tempThis = __newArray(length, alignLog2, classId, source = 0) stmts.push( module.local_set(tempThis.index, this.makeRetain( - this.makeCallDirect(program.allocArrayInstance, [ + this.makeCallDirect(program.newArrayInstance, [ module.i32(length), program.options.isWasm64 ? module.i64(elementType.alignLog2) @@ -9055,9 +9067,9 @@ export class Compiler extends DiagnosticEmitter { // otherwise allocate a new chunk of memory and return a copy of the buffer } else { - // __allocBuffer(bufferSize, id, buffer) + // __newBuffer(bufferSize, id, buffer) let expr = this.makeRetain( - this.makeCallDirect(program.allocBufferInstance, [ + this.makeCallDirect(program.newBufferInstance, [ isWasm64 ? module.i64(bufferSize) : module.i32(bufferSize), @@ -9094,11 +9106,11 @@ export class Compiler extends DiagnosticEmitter { var nativeArrayType = arrayType.toNativeType(); var stmts = new Array(); - // tempThis = __allocBuffer(bufferSize, classId) + // tempThis = __newBuffer(bufferSize, classId) stmts.push( module.local_set(tempThis.index, this.makeRetain( - this.makeCallDirect(program.allocBufferInstance, [ + this.makeCallDirect(program.newBufferInstance, [ isWasm64 ? module.i64(bufferSize) : module.i32(bufferSize), @@ -10859,24 +10871,29 @@ export class Compiler extends DiagnosticEmitter { makeAllocation( classInstance: Class ): ExpressionRef { - // TODO: investigate if it's possible to allocate with RC=1 immediately var program = this.program; assert(classInstance.program == program); var module = this.module; var options = this.options; this.currentType = classInstance.type; - var allocInstance = program.allocInstance; - this.compileFunction(allocInstance); - return module.call(allocInstance.internalName, [ - options.isWasm64 - ? module.i64(classInstance.nextMemoryOffset) - : module.i32(classInstance.nextMemoryOffset), - module.i32( - classInstance.hasDecorator(DecoratorFlags.UNMANAGED) - ? 0 - : classInstance.id - ) - ], options.nativeSizeType); + if (classInstance.hasDecorator(DecoratorFlags.UNMANAGED)) { + let allocInstance = program.allocInstance; + this.compileFunction(allocInstance); + return module.call(allocInstance.internalName, [ + options.isWasm64 + ? module.i64(classInstance.nextMemoryOffset) + : module.i32(classInstance.nextMemoryOffset) + ], options.nativeSizeType); + } else { + let newInstance = program.newInstance; + this.compileFunction(newInstance); + return module.call(newInstance.internalName, [ + options.isWasm64 + ? module.i64(classInstance.nextMemoryOffset) + : module.i32(classInstance.nextMemoryOffset), + module.i32(classInstance.id) + ], options.nativeSizeType); + } } /** Makes the initializers for a class's fields within the constructor. */ diff --git a/src/program.ts b/src/program.ts index c497a82243..1d55709ccf 100644 --- a/src/program.ts +++ b/src/program.ts @@ -632,7 +632,7 @@ export class Program extends DiagnosticEmitter { // Runtime interface - /** Gets the runtime `__alloc(size: usize, id: u32): usize` instance. */ + /** Gets the runtime `__alloc(size: usize): usize` instance. */ get allocInstance(): Function { var cached = this._allocInstance; if (!cached) this._allocInstance = cached = this.requireFunction(CommonNames.alloc); @@ -656,6 +656,22 @@ export class Program extends DiagnosticEmitter { } private _freeInstance: Function | null = null; + /** Gets the runtime `__new(size: usize, id: u32): usize` instance. */ + get newInstance(): Function { + var cached = this._newInstance; + if (!cached) this._newInstance = cached = this.requireFunction(CommonNames.new_); + return cached; + } + private _newInstance: Function | null = null; + + /** Gets the runtime `__renew(ptr: usize, size: usize): usize` instance. */ + get renewInstance(): Function { + var cached = this._renewInstance; + if (!cached) this._renewInstance = cached = this.requireFunction(CommonNames.renew); + return cached; + } + private _renewInstance: Function | null = null; + /** Gets the runtime `__retain(ptr: usize): usize` instance. */ get retainInstance(): Function { var cached = this._retainInstance; @@ -704,21 +720,37 @@ export class Program extends DiagnosticEmitter { } private _instanceofInstance: Function | null = null; - /** Gets the runtime `__allocBuffer(size: usize, id: u32, data: usize = 0): usize` instance. */ - get allocBufferInstance(): Function { - var cached = this._allocBufferInstance; - if (!cached) this._allocBufferInstance = cached = this.requireFunction(CommonNames.allocBuffer); + /** Gets the runtime `__newBuffer(size: usize, id: u32, data: usize = 0): usize` instance. */ + get newBufferInstance(): Function { + var cached = this._newBufferInstance; + if (!cached) this._newBufferInstance = cached = this.requireFunction(CommonNames.newBuffer); + return cached; + } + private _newBufferInstance: Function | null = null; + + /** Gets the runtime `__newArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize` instance. */ + get newArrayInstance(): Function { + var cached = this._newArrayInstance; + if (!cached) this._newArrayInstance = cached = this.requireFunction(CommonNames.newArray); return cached; } - private _allocBufferInstance: Function | null = null; + private _newArrayInstance: Function | null = null; - /** Gets the runtime `__allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize` instance. */ - get allocArrayInstance(): Function { - var cached = this._allocArrayInstance; - if (!cached) this._allocArrayInstance = cached = this.requireFunction(CommonNames.allocArray); + /** Gets the runtime's internal `BLOCK` instance. */ + get BLOCKInstance(): Class { + var cached = this._BLOCKInstance; + if (!cached) this._BLOCKInstance = cached = this.requireClass(CommonNames.BLOCK); return cached; } - private _allocArrayInstance: Function | null = null; + private _BLOCKInstance: Class | null = null; + + /** Gets the runtime's internal `OBJECT` instance. */ + get OBJECTInstance(): Class { + var cached = this._OBJECTInstance; + if (!cached) this._OBJECTInstance = cached = this.requireClass(CommonNames.OBJECT); + return cached; + } + private _OBJECTInstance: Class | null = null; // Utility @@ -739,8 +771,21 @@ export class Program extends DiagnosticEmitter { /** Gets the size of a runtime header. */ get runtimeHeaderSize(): i32 { - return 16; + var cached = this._runtimeHeaderSize; + if (!cached) { + // see: rt/common.ts + var blockOverhead = this.BLOCKInstance.nextMemoryOffset; + var totalOverhead = this.OBJECTInstance.nextMemoryOffset; + const AL_SIZE = 16; + const AL_MASK = AL_SIZE - 1; + var objectOverhead = (totalOverhead - blockOverhead + AL_MASK) & ~AL_MASK; + var headerSize = blockOverhead + objectOverhead; + assert(headerSize == 20); + this._runtimeHeaderSize = cached = headerSize; + } + return cached; } + private _runtimeHeaderSize: u32 = 0; /** Creates a native variable declaration. */ makeNativeVariableDeclaration( @@ -4253,11 +4298,13 @@ export class Class extends TypedElement { var buffer = new Uint8Array(this.program.runtimeHeaderSize + size); assert(!this.program.options.isWasm64); // TODO: WASM64, mmInfo is usize // see: std/assembly/rt/common.ts - assert(size < (1 << 28)); // 1 bit BUFFERED + 3 bits color - writeI32(size, buffer, 0); // mmInfo = 0 - writeI32(1, buffer, 4); // gcInfo (RC) = 1 - writeI32(this.id, buffer, 8); // rtId - writeI32(size, buffer, 12); // rtSize + assert(size < (1 << 28)); // 1 bit BUFFERED + 3 bits color + var OBJECT = this.program.OBJECTInstance; + OBJECT.writeField("mmInfo", size, buffer, 0); + OBJECT.writeField("gcInfo", 1, buffer, 0); // RC = 1 + OBJECT.writeField("gcInfo2", 0, buffer, 0); + OBJECT.writeField("rtId", this.id, buffer, 0); + OBJECT.writeField("rtSize", size, buffer, 0); return buffer; } diff --git a/std/assembly/array.ts b/std/assembly/array.ts index d67fe683cf..712e8f0b79 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -14,7 +14,7 @@ function ensureSize(array: usize, minSize: usize, alignLog2: u32): void { if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); let oldData = changetype(changetype(array).buffer); let newCapacity = minSize << alignLog2; - let newData = __realloc(oldData, newCapacity); // keeps RC + let newData = __renew(oldData, newCapacity); // keeps RC memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); if (newData !== oldData) { // oldData has been free'd store(array, newData, offsetof("buffer")); @@ -56,7 +56,7 @@ export class Array { constructor(length: i32 = 0) { if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH); var bufferSize = length << alignof(); - var buffer = __alloc(bufferSize, idof()); + var buffer = __new(bufferSize, idof()); memory.fill(buffer, 0, bufferSize); this.buffer = changetype(buffer); // retains this.dataStart = buffer; @@ -227,7 +227,7 @@ export class Array { var otherLen = select(0, other.length_, other === null); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains + var out = changetype>(__newArray(outLen, alignof(), idof>())); // retains var outStart = out.dataStart; var thisSize = thisLen << alignof(); if (isManaged()) { @@ -311,7 +311,7 @@ export class Array { map(fn: (value: T, index: i32, array: Array) => U): Array { var length = this.length_; - var out = changetype>(__allocArray(length, alignof(), idof>())); // retains + var out = changetype>(__newArray(length, alignof(), idof>())); // retains var outStart = out.dataStart; for (let index = 0; index < min(length, this.length_); ++index) { let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains @@ -326,7 +326,7 @@ export class Array { } filter(fn: (value: T, index: i32, array: Array) => bool): Array { - var result = changetype>(__allocArray(0, alignof(), idof>())); // retains + var result = changetype>(__newArray(0, alignof(), idof>())); // retains for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) { let value = load(this.dataStart + (index << alignof())); if (fn(value, index, this)) result.push(value); @@ -407,7 +407,7 @@ export class Array { start = start < 0 ? max(start + length, 0) : min(start, length); end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); - var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains + var slice = changetype>(__newArray(length, alignof(), idof>())); // retains var sliceBase = slice.dataStart; var thisBase = this.dataStart + (start << alignof()); if (isManaged()) { @@ -428,7 +428,7 @@ export class Array { var length = this.length_; start = start < 0 ? max(length + start, 0) : min(start, length); deleteCount = max(min(deleteCount, length - start), 0); - var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains + var result = changetype>(__newArray(deleteCount, alignof(), idof>())); // retains var resultStart = result.dataStart; var thisStart = this.dataStart; var thisBase = thisStart + (start << alignof()); @@ -516,10 +516,10 @@ export class Array { // calculate the byteLength of the resulting backing ArrayBuffer var byteLength = size << usize(alignof>()); - var dataStart = __alloc(byteLength, idof()); + var dataStart = __new(byteLength, idof()); // create the return value and initialize it - var result = __alloc(offsetof(), idof()); + var result = __new(offsetof(), idof()); store(result, size, offsetof("length_")); // byteLength, dataStart, and buffer are all readonly diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index 02878f13dc..433e3636ba 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -1,6 +1,6 @@ /// -import { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common"; +import { OBJECT, BLOCK_MAXSIZE, TOTAL_OVERHEAD } from "./rt/common"; import { idof } from "./builtins"; import { E_INVALIDLENGTH } from "./util/error"; @@ -16,7 +16,7 @@ export abstract class ArrayBufferView { protected constructor(length: i32, alignLog2: i32) { if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); - var buffer = __alloc(length = length << alignLog2, idof()); + var buffer = __new(length = length << alignLog2, idof()); memory.fill(buffer, 0, length); this.buffer = changetype(buffer); // retains this.dataStart = buffer; @@ -47,13 +47,13 @@ export abstract class ArrayBufferView { constructor(length: i32) { if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH); - var buffer = __alloc(length, idof()); + var buffer = __new(length, idof()); memory.fill(buffer, 0, length); return changetype(buffer); // retains } get byteLength(): i32 { - return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize; + return changetype(changetype(this) - TOTAL_OVERHEAD).rtSize; } slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer { @@ -61,7 +61,7 @@ export abstract class ArrayBufferView { begin = begin < 0 ? max(length + begin, 0) : min(begin, length); end = end < 0 ? max(length + end , 0) : min(end , length); var outSize = max(end - begin, 0); - var out = __alloc(outSize, idof()); + var out = __new(outSize, idof()); memory.copy(out, changetype(this) + begin, outSize); return changetype(out); // retains } diff --git a/std/assembly/gc.ts b/std/assembly/gc.ts index eefa6539c4..93523a3bcb 100644 --- a/std/assembly/gc.ts +++ b/std/assembly/gc.ts @@ -3,9 +3,6 @@ /** Garbage collector interface. */ export namespace gc { - /** Can be set to `false` to disable automatic collection. Defaults to `true`. */ - export var auto: bool = true; - /** Performs a full garbage collection cycle. */ export function collect(): void { __collect(); diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 3b7ed7f76a..3b9d63aa26 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1244,8 +1244,6 @@ declare namespace memory { /** Garbage collector interface. */ declare namespace gc { - /** Can be set to `false` to disable automatic collection. Defaults to `true`. */ - export var auto: bool; /** Performs a full garbage collection cycle. */ export function collect(): void; } diff --git a/std/assembly/rt.ts b/std/assembly/rt.ts index 0c9d3d7795..10dff618c4 100644 --- a/std/assembly/rt.ts +++ b/std/assembly/rt.ts @@ -1,6 +1,6 @@ import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo"; import { E_INDEXOUTOFRANGE } from "./util/error"; -import { BLOCK, BLOCK_OVERHEAD } from "./rt/common"; +import { OBJECT, TOTAL_OVERHEAD } from "./rt/common"; import { ArrayBufferView } from "./arraybuffer"; // @ts-ignore: decorator @@ -26,7 +26,7 @@ export function __typeinfo(id: u32): TypeinfoFlags { // @ts-ignore: decorator @unsafe export function __instanceof(ref: usize, superId: u32): bool { // keyword - var id = changetype(ref - BLOCK_OVERHEAD).rtId; + var id = changetype(ref - TOTAL_OVERHEAD).rtId; var ptr = __rtti_base; if (id <= load(ptr)) { do if (id == superId) return true; @@ -37,18 +37,18 @@ export function __instanceof(ref: usize, superId: u32): bool { // keyword // @ts-ignore: decorator @unsafe -export function __allocBuffer(size: usize, id: u32, data: usize = 0): usize { - var buffer = __alloc(size, id); +export function __newBuffer(size: usize, id: u32, data: usize = 0): usize { + var buffer = __new(size, id); if (data) memory.copy(buffer, data, size); return buffer; } // @ts-ignore: decorator @unsafe -export function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize { - var array = __alloc(offsetof(), id); +export function __newArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize { + var array = __new(offsetof(), id); var bufferSize = length << alignLog2; - var buffer = __allocBuffer(bufferSize, idof(), data); + var buffer = __newBuffer(bufferSize, idof(), data); store(array, __retain(buffer), offsetof("buffer")); store(array, buffer, offsetof("dataStart")); store(array, bufferSize, offsetof("byteLength")); @@ -58,24 +58,33 @@ export function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize // These are provided by the respective implementation, included as another entry file by asc: +// // @ts-ignore: decorator +// @builtin @unsafe +// export declare function __alloc(size: usize): usize; + +// // @ts-ignore: decorator +// @builtin @unsafe +// export declare function __realloc(ptr: usize, size: usize): usize; + +// // @ts-ignore: decorator // @builtin @unsafe -// export declare function __alloc(size: usize, id: u32): usize; +// export declare function __free(ptr: usize): void; // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __realloc(ref: usize, size: usize): usize; +// export declare function __new(size: usize, id: u32): usize; // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __free(ref: usize): void; +// export declare function __renew(ptr: usize, size: usize): usize; // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __retain(ref: usize): usize; +// export declare function __retain(ptr: usize): usize; // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __release(ref: usize): void; +// export declare function __release(ptr: usize): void; // // @ts-ignore: decorator // @builtin @unsafe @@ -83,4 +92,4 @@ export function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __visit(ref: usize, cookie: u32): void; +// export declare function __visit(ptr: usize, cookie: u32): void; diff --git a/std/assembly/rt/README.md b/std/assembly/rt/README.md index 67c6a5b45c..5ca6a832e1 100644 --- a/std/assembly/rt/README.md +++ b/std/assembly/rt/README.md @@ -6,7 +6,9 @@ The runtime provides the functionality necessary to dynamically allocate and dea Interface --------- -* **__alloc**(size: `usize`, id: `u32` = 0): `usize`
+### Memory manager + +* **__alloc**(size: `usize`): `usize`
Dynamically allocates a chunk of memory of at least the specified size and returns its address. Alignment is guaranteed to be 16 bytes to fit up to v128 values naturally. @@ -16,6 +18,16 @@ Interface * **__free**(ref: `usize`): `void`
Frees a dynamically allocated chunk of memory by its address. +### Garbage collector + +* **__new**(size: `usize`, id: `u32` = 0): `usize`
+ Dynamically allocates a GC object of at least the specified size and returns its address. + Alignment is guaranteed to be 16 bytes to fit up to v128 values naturally. + GC-allocated objects cannot be used with `__realloc` and `__free`. + +* **__renew**(ptr: `usize`, size: `usize`): `usize`
+ Like `__realloc`, but for `__new`ed GC objects. + * **__retain**(ref: `usize`): `usize`
Retains a reference to an object. The object doesn't become collected as long as there's at least one retained reference. Returns the retained reference. @@ -65,7 +77,7 @@ The underlying reference counting implementation works very similar to other imp Differences to other implementations include: -* A new object from `__alloc` doesn't start with a reference count of 1, but 0. +* A new object from `__new` doesn't start with a reference count of 1, but 0. * When an object is returned from a function, it remains at RC + 1 and the caller is expected to release it. * Functions with reference type arguments retain each such argument when called, and release it again when exited. This can't be counted on, however, because the compiler may decide to eliminate these where unnecessary. * Getters, setters, operator overloads and constructors are function calls and behave like one. @@ -78,7 +90,7 @@ Even though the rules are simple, working with the runtime internals within stan **GOOD:** In case of doubt, the following pattern is universal: ```ts -var ref = changetype(__alloc(SIZE, idof())); // assignment retains, RC=1 +var ref = changetype(__new(SIZE, idof())); // assignment retains, RC=1 // ... safe ... return ref; // knows `ref` is already retained and simply returns it ``` @@ -86,7 +98,7 @@ return ref; // knows `ref` is already retained and simply returns it **BAD:** A pattern one shouldn't use is: ```ts -var ptr = __alloc(SIZE, idof()); // RC=0 +var ptr = __new(SIZE, idof()); // RC=0 // ... not safe while RC=0 ... e.g.: someFunc(changetype(ptr)); // might, or might not, free the object! ``` diff --git a/std/assembly/rt/common.ts b/std/assembly/rt/common.ts index 58ffd86eed..0a98ac12a3 100644 --- a/std/assembly/rt/common.ts +++ b/std/assembly/rt/common.ts @@ -11,33 +11,67 @@ // @ts-ignore: decorator @inline export const DEBUG = true; +// @ts-ignore: decorator +@inline export const TRACE = false; + +// Memory manager -// ╒════════════════ Common block layout (32-bit) ═════════════════╕ +// ╒════════════ Memory manager block layout (32-bit) ═════════════╕ // 3 2 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ -// │ MM info │ -16 +// │ MM info │ -4 +// ╞>ptr═══════════════════════════════════════════════════════════╡ +// │ ... │ +@unmanaged export class BLOCK { + /** Memory manager info. */ + mmInfo: usize; +} + +/** Overhead of a memory manager block. */ +// @ts-ignore: decorator +@inline export const BLOCK_OVERHEAD: usize = offsetof(); + +/** Maximum size of a memory manager block's payload. */ +// @ts-ignore: decorator +@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD; + +// Garbage collector + +// ╒══════════ Garbage collector object layout (32-bit) ═══════════╕ +// 3 2 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits +// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ +// │ Memory manager block │ -20 +// ╞═══════════════════════════════════════════════════════════════╡ +// │ GC info │ -16 // ├───────────────────────────────────────────────────────────────┤ -// │ GC info │ -12 +// │ GC info │ -12 // ├───────────────────────────────────────────────────────────────┤ -// │ runtime id │ -8 +// │ RT id │ -8 // ├───────────────────────────────────────────────────────────────┤ -// │ runtime size │ -4 -// ╞═══════════════════════════════════════════════════════════════╡ +// │ RT size │ -4 +// ╞>ptr═══════════════════════════════════════════════════════════╡ // │ ... │ ref -@unmanaged export class BLOCK { - /** Memory manager info. */ - mmInfo: usize; // WASM64 needs adaption +@unmanaged export class OBJECT extends BLOCK { /** Garbage collector info. */ gcInfo: u32; + /** Garbage collector info. */ + gcInfo2: u32; /** Runtime class id. */ rtId: u32; /** Runtime object size. */ rtSize: u32; } +/** Overhead of a garbage collector object. Excludes memory manager block overhead. */ // @ts-ignore: decorator -@inline export const BLOCK_OVERHEAD: usize = (offsetof() + AL_MASK) & ~AL_MASK; +@inline export const OBJECT_OVERHEAD: usize = (offsetof() - BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK; +/** Maximum size of a garbage collector object's payload. */ // @ts-ignore: decorator -@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD; +@inline export const OBJECT_MAXSIZE: usize = BLOCK_MAXSIZE - OBJECT_OVERHEAD; + +/** Total of memory manager and garbage collector overhead. */ +// @ts-ignore: decorator +@inline export const TOTAL_OVERHEAD: usize = BLOCK_OVERHEAD + OBJECT_OVERHEAD; diff --git a/std/assembly/rt/index-full.ts b/std/assembly/rt/index-full.ts index c9fa6549d0..aec272c4cd 100644 --- a/std/assembly/rt/index-full.ts +++ b/std/assembly/rt/index-full.ts @@ -1,3 +1,3 @@ -export { __alloc } from "rt/tlsf"; -export { __retain, __release, __collect } from "rt/pure"; +export { __alloc, __realloc, __free } from "rt/tlsf"; +export { __new, __renew, __retain, __release, __collect } from "rt/pure"; export { __rtti_base } from "rt"; diff --git a/std/assembly/rt/index-stub.ts b/std/assembly/rt/index-stub.ts index b1f3b1a1fc..6618a8ee0c 100644 --- a/std/assembly/rt/index-stub.ts +++ b/std/assembly/rt/index-stub.ts @@ -1,2 +1,3 @@ -export { __alloc, __retain, __release, __collect, __reset } from "rt/stub"; +export { __alloc, __realloc, __free } from "rt/stub"; +export { __new, __renew, __retain, __release, __collect, __reset } from "rt/stub"; export { __rtti_base } from "rt"; diff --git a/std/assembly/rt/index.d.ts b/std/assembly/rt/index.d.ts index a911e2627c..2aeab16b0a 100644 --- a/std/assembly/rt/index.d.ts +++ b/std/assembly/rt/index.d.ts @@ -1,17 +1,19 @@ -declare function __alloc(size: usize, id: u32): usize; -declare function __realloc(ref: usize, size: usize): usize; -declare function __free(ref: usize): void; -declare function __reset(): void; -declare function __retain(ref: usize): usize; -declare function __release(ref: usize): void; +declare function __alloc(size: usize): usize; +declare function __realloc(ptr: usize, size: usize): usize; +declare function __free(ptr: usize): void; +declare function __new(size: usize, id: u32): usize; +declare function __renew(ptr: usize, size: usize): usize; +declare function __retain(ptr: usize): usize; +declare function __release(ptr: usize): void; declare function __collect(): void; +declare function __reset(): void; declare function __typeinfo(id: u32): u32; -declare function __instanceof(ref: usize, superId: u32): bool; -declare function __visit(ref: usize, cookie: i32): void; +declare function __instanceof(ptr: usize, superId: u32): bool; +declare function __visit(ptr: usize, cookie: i32): void; declare function __visit_globals(cookie: u32): void; -declare function __visit_members(ref: usize, cookie: u32): void; -declare function __allocBuffer(size: usize, id: u32, data?: usize): usize; -declare function __allocArray(length: i32, alignLog2: usize, id: u32, data?: usize): usize; -declare function __finalize(ref: usize): void; +declare function __visit_members(ptr: usize, cookie: u32): void; +declare function __newBuffer(size: usize, id: u32, data?: usize): usize; +declare function __newArray(length: i32, alignLog2: usize, id: u32, data?: usize): usize; +declare function __finalize(ptr: usize): void; declare const ASC_RTRACE: bool; declare const __GC_ALL_ACYCLIC: bool; diff --git a/std/assembly/rt/pure.ts b/std/assembly/rt/pure.ts index 1c81d38ad9..c299e11874 100644 --- a/std/assembly/rt/pure.ts +++ b/std/assembly/rt/pure.ts @@ -1,4 +1,4 @@ -import { DEBUG, BLOCK_OVERHEAD } from "rt/common"; +import { BLOCK_OVERHEAD, DEBUG, OBJECT, OBJECT_MAXSIZE, OBJECT_OVERHEAD, TOTAL_OVERHEAD } from "rt/common"; import { Block, freeBlock, ROOT } from "rt/tlsf"; import { TypeinfoFlags } from "shared/typeinfo"; import { onincrement, ondecrement } from "./rtrace"; @@ -67,9 +67,9 @@ function __visit(ref: usize, cookie: i32): void { // eslint-disable-line @typesc if (ref < __heap_base) return; if (isDefined(__GC_ALL_ACYCLIC)) { if (DEBUG) assert(cookie == VISIT_DECREMENT); - decrement(changetype(ref - BLOCK_OVERHEAD)); + decrement(changetype(ref - TOTAL_OVERHEAD)); } else { - let s = changetype(ref - BLOCK_OVERHEAD); + let s = changetype(ref - TOTAL_OVERHEAD); switch (cookie) { case VISIT_DECREMENT: { decrement(s); @@ -104,7 +104,7 @@ function __visit(ref: usize, cookie: i32): void { // eslint-disable-line @typesc } /** Increments the reference count of the specified block by one.*/ -function increment(s: Block): void { +function increment(s: OBJECT): void { var info = s.gcInfo; assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow s.gcInfo = info + 1; @@ -115,13 +115,13 @@ function increment(s: Block): void { /** Decrements the reference count of the specified block by one, possibly freeing it. */ // @ts-ignore: decorator @lazy -function decrement(s: Block): void { +function decrement(s: OBJECT): void { var info = s.gcInfo; var rc = info & REFCOUNT_MASK; if (isDefined(ASC_RTRACE)) ondecrement(s); if (DEBUG) assert(!(s.mmInfo & 1)); // used if (rc == 1) { - __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT); + __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_DECREMENT); if (isDefined(__GC_ALL_ACYCLIC)) { if (DEBUG) assert(!(info & BUFFERED_MASK)); finalize(s); @@ -150,11 +150,11 @@ function decrement(s: Block): void { } /** Finalizes the specified block, giving it back to the memory manager. */ -function finalize(s: Block): void { +function finalize(s: OBJECT): void { if (isDefined(__finalize)) { - __finalize(changetype(s) + BLOCK_OVERHEAD); + __finalize(changetype(s) + TOTAL_OVERHEAD); } - freeBlock(ROOT, s); + freeBlock(ROOT, changetype(s)); } /** Buffer of possible roots. */ @@ -168,13 +168,13 @@ function finalize(s: Block): void { @lazy var END: usize = 0; /** Appends a block to possible roots. */ -function appendRoot(s: Block): void { +function appendRoot(s: OBJECT): void { var cur = CUR; if (cur >= END) { growRoots(); // TBD: either that or pick a default and force collection on overflow cur = CUR; } - store(cur, s); + store(cur, s); CUR = cur + sizeof(); } @@ -183,7 +183,7 @@ function growRoots(): void { var oldRoots = ROOTS; var oldSize = CUR - oldRoots; var newSize = max(oldSize * 2, 64 << alignof()); - var newRoots = __alloc(newSize, 0); + var newRoots = __alloc(newSize); memory.copy(newRoots, oldRoots, oldSize); if (oldRoots) __free(oldRoots); ROOTS = newRoots; @@ -201,11 +201,11 @@ export function __collect(): void { var roots = ROOTS; var cur = roots; for (let pos = cur, end = CUR; pos < end; pos += sizeof()) { - let s = load(pos); + let s = load(pos); let info = s.gcInfo; if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) { markGray(s); - store(cur, s); + store(cur, s); cur += sizeof(); } else { if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) { @@ -219,12 +219,12 @@ export function __collect(): void { // scanRoots for (let pos = roots; pos < cur; pos += sizeof()) { - scan(load(pos)); + scan(load(pos)); } // collectRoots for (let pos = roots; pos < cur; pos += sizeof()) { - let s = load(pos); + let s = load(pos); s.gcInfo = s.gcInfo & ~BUFFERED_MASK; collectWhite(s); } @@ -232,52 +232,81 @@ export function __collect(): void { } /** Marks a block as gray (possible member of cycle) during the collection phase. */ -function markGray(s: Block): void { +function markGray(s: OBJECT): void { var info = s.gcInfo; if ((info & COLOR_MASK) != COLOR_GRAY) { s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY; - __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY); + __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_MARKGRAY); } } /** Scans a block during the collection phase, determining whether it is garbage or not. */ -function scan(s: Block): void { +function scan(s: OBJECT): void { var info = s.gcInfo; if ((info & COLOR_MASK) == COLOR_GRAY) { if ((info & REFCOUNT_MASK) > 0) { scanBlack(s); } else { s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE; - __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN); + __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_SCAN); } } } /** Marks a block as black (in use) if it was found to be reachable during the collection phase. */ -function scanBlack(s: Block): void { +function scanBlack(s: OBJECT): void { s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK; - __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK); + __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_SCANBLACK); } /** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */ -function collectWhite(s: Block): void { +function collectWhite(s: OBJECT): void { var info = s.gcInfo; if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) { s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK; - __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE); + __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_COLLECTWHITE); finalize(s); } } +// @ts-ignore: decorator +@global @unsafe +export function __new(size: usize, id: u32): usize { + if (size > OBJECT_MAXSIZE) throw new Error("allocation too large"); + var ptr = __alloc(OBJECT_OVERHEAD + size); + var object = changetype(ptr - BLOCK_OVERHEAD); + object.gcInfo = 0; // RC=0 + object.gcInfo2 = 0; + object.rtId = id; + object.rtSize = size; + return ptr + OBJECT_OVERHEAD; +} + +// @ts-ignore: decorator +@global @unsafe +export function __renew(oldPtr: usize, size: usize): usize { + if (size > OBJECT_MAXSIZE) throw new Error("allocation too large"); + var object = changetype(oldPtr - TOTAL_OVERHEAD); + var oldGcInfo = object.gcInfo; + var oldRtId = object.rtId; + var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); + object = changetype(newPtr - BLOCK_OVERHEAD); + object.gcInfo = oldGcInfo; + object.gcInfo2 = 0; + object.rtId = oldRtId; + object.rtSize = size; + return newPtr + OBJECT_OVERHEAD; +} + // @ts-ignore: decorator @global @unsafe export function __retain(ptr: usize): usize { - if (ptr > __heap_base) increment(changetype(ptr - BLOCK_OVERHEAD)); + if (ptr > __heap_base) increment(changetype(ptr - TOTAL_OVERHEAD)); return ptr; } // @ts-ignore: decorator @global @unsafe export function __release(ptr: usize): void { - if (ptr > __heap_base) decrement(changetype(ptr - BLOCK_OVERHEAD)); + if (ptr > __heap_base) decrement(changetype(ptr - TOTAL_OVERHEAD)); } diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index a064bb905f..c9194fc725 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -1,7 +1,7 @@ -import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common"; +import { AL_MASK, OBJECT, OBJECT_OVERHEAD, BLOCK_MAXSIZE, BLOCK_OVERHEAD, BLOCK, OBJECT_MAXSIZE, TOTAL_OVERHEAD } from "rt/common"; // @ts-ignore: decorator -@lazy var startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK; +@lazy var startOffset: usize = ((__heap_base + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; // @ts-ignore: decorator @lazy var offset: usize = startOffset; @@ -9,7 +9,7 @@ import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "r function maybeGrowMemory(newOffset: usize): void { // assumes newOffset is aligned var pagesBefore = memory.size(); - var maxOffset = pagesBefore << 16; + var maxOffset = (((pagesBefore << 16) + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; if (newOffset > maxOffset) { let pagesNeeded = (((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16); let pagesWanted = max(pagesBefore, pagesNeeded); // double memory @@ -20,54 +20,80 @@ function maybeGrowMemory(newOffset: usize): void { offset = newOffset; } +function computeSize(size: usize): usize { + return ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; +} + // @ts-ignore: decorator @unsafe @global -export function __alloc(size: usize, id: u32): usize { +export function __alloc(size: usize): usize { if (size > BLOCK_MAXSIZE) unreachable(); + var block = changetype(offset); var ptr = offset + BLOCK_OVERHEAD; - var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE); - maybeGrowMemory(ptr + actualSize); - var block = changetype(ptr - BLOCK_OVERHEAD); - block.mmInfo = actualSize; - if (DEBUG) block.gcInfo = 1; - block.rtId = id; - block.rtSize = size; + var payloadSize = computeSize(size); + maybeGrowMemory(ptr + payloadSize); + block.mmInfo = payloadSize; return ptr; } +// @ts-ignore: decorator +@unsafe @global +export function __new(size: usize, id: u32): usize { + if (size > OBJECT_MAXSIZE) unreachable(); + var ptr = __alloc(OBJECT_OVERHEAD + size); + var object = changetype(ptr - BLOCK_OVERHEAD); + object.gcInfo = 0; + object.gcInfo2 = 0; + object.rtId = id; + object.rtSize = size; + return ptr + OBJECT_OVERHEAD; +} + // @ts-ignore: decorator @unsafe @global export function __realloc(ptr: usize, size: usize): usize { assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned var block = changetype(ptr - BLOCK_OVERHEAD); var actualSize = block.mmInfo; - if (DEBUG) assert(block.gcInfo == 1); var isLast = ptr + actualSize == offset; - var alignedSize = (size + AL_MASK) & ~AL_MASK; + var payloadSize = computeSize(size); if (size > actualSize) { if (isLast) { // last block: grow if (size > BLOCK_MAXSIZE) unreachable(); - maybeGrowMemory(ptr + alignedSize); - block.mmInfo = alignedSize; + maybeGrowMemory(ptr + payloadSize); + block.mmInfo = payloadSize; } else { // copy to new block at least double the size - let newPtr = __alloc(max(alignedSize, actualSize << 1), block.rtId); - memory.copy(newPtr, ptr, block.rtSize); + let newPtr = __alloc(max(payloadSize, actualSize << 1)); + memory.copy(newPtr, ptr, actualSize); block = changetype((ptr = newPtr) - BLOCK_OVERHEAD); } } else if (isLast) { // last block: shrink - offset = ptr + alignedSize; - block.mmInfo = alignedSize; + offset = ptr + payloadSize; + block.mmInfo = payloadSize; } - block.rtSize = size; return ptr; } +// @ts-ignore: decorator +@unsafe @global +export function __renew(oldPtr: usize, size: usize): usize { + if (size > OBJECT_MAXSIZE) unreachable(); + var object = changetype(oldPtr - TOTAL_OVERHEAD); + var oldRtId = object.rtId; + var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); + object = changetype(newPtr - BLOCK_OVERHEAD); + object.gcInfo = 0; + object.gcInfo2 = 0; + object.rtId = oldRtId; + object.rtSize = size; + return newPtr + OBJECT_OVERHEAD; +} + // @ts-ignore: decorator @unsafe @global export function __free(ptr: usize): void { assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned var block = changetype(ptr - BLOCK_OVERHEAD); - if (DEBUG) assert(block.gcInfo == 1); if (ptr + block.mmInfo == offset) { // last block: discard offset = changetype(block); } diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index c74ae995a2..028332451c 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -1,6 +1,5 @@ -import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "rt/common"; +import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "rt/common"; import { onalloc, onresize, onmove, onfree } from "./rtrace"; -import { REFCOUNT_MASK } from "./pure"; // === The TLSF (Two-Level Segregate Fit) memory allocator === // see: http://www.gii.upv.es/tlsf/ @@ -39,7 +38,7 @@ import { REFCOUNT_MASK } from "./pure"; // [07]: < 32K [19]: < 128M // [08]: < 64K [20]: < 256M // [09]: < 128K [21]: < 512M -// [10]: < 256K [22]: <= 1G - OVERHEAD +// [10]: < 256K [22]: <= 1G - OFFSET // [11]: < 512K // VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead @@ -55,21 +54,17 @@ import { REFCOUNT_MASK } from "./pure"; // ╒════════════════════ Block layout (32-bit) ════════════════════╕ // 3 2 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits -// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐ -// │ size │0│L│F│ ◄─┐ info -// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │ -// │ │ │ -// │ ... additional runtime overhead ... │ │ -// │ │ │ -// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘ +// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤ ┐ +// │ size │L│F│ ◄─┐ info overhead +// ╞>ptr═══════════════════════════════════════════════════════╧═╧═╡ │ ┘ // │ if free: ◄ prev │ ◄─┤ usize // ├───────────────────────────────────────────────────────────────┤ │ // │ if free: next ► │ ◄─┤ // ├───────────────────────────────────────────────────────────────┤ │ -// │ ... │ │ = 0 +// │ ... │ │ >= 0 // ├───────────────────────────────────────────────────────────────┤ │ // │ if free: back ▲ │ ◄─┘ -// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE +// └───────────────────────────────────────────────────────────────┘ >= MIN SIZE // F: FREE, L: LEFTFREE @unmanaged export class Block extends BLOCK { @@ -85,7 +80,7 @@ import { REFCOUNT_MASK } from "./pure"; // `next` and `back` if free. // @ts-ignore: decorator -@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back +@inline const BLOCK_MINSIZE: usize = ((3 * sizeof() + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; // prev + next + back // @ts-ignore: decorator // @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts @@ -95,7 +90,7 @@ import { REFCOUNT_MASK } from "./pure"; return load(changetype(block) - sizeof()); } -/** Gets the right block of of a block by advancing to the right by its size. */ +/** Gets the right block of a block by advancing to the right by its size. */ // @ts-ignore: decorator @inline function GETRIGHT(block: Block): Block { return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK)); @@ -236,7 +231,7 @@ function insertBlock(root: Root, block: Block): void { } right.mmInfo = rightInfo | LEFTFREE; - // right is no longer used now, hence rightInfo is not synced + // reference to right is no longer used now, hence rightInfo is not synced // we now know the size of the block var size = blockInfo & ~TAGS_MASK; @@ -362,7 +357,7 @@ function prepareBlock(root: Root, block: Block, size: usize): void { // size was already asserted by caller var blockInfo = block.mmInfo; - if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is + if (DEBUG) assert(!((size + BLOCK_OVERHEAD) & AL_MASK)); // size must be aligned so the new block is // split if the block can hold another MINSIZE block incl. overhead var remaining = (blockInfo & ~TAGS_MASK) - size; @@ -382,13 +377,9 @@ function prepareBlock(root: Root, block: Block, size: usize): void { /** Adds more memory to the pool. */ function addMemory(root: Root, start: usize, end: usize): bool { - if (DEBUG) { - assert( - start <= end && // must be valid - !(start & AL_MASK) && // must be aligned - !(end & AL_MASK) // must be aligned - ); - } + if (DEBUG) assert(start <= end); // must be valid + start = ((start + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; + end &= ~AL_MASK; var tail = GETTAIL(root); var tailInfo: usize = 0; @@ -396,8 +387,9 @@ function addMemory(root: Root, start: usize, end: usize): bool { if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD); // merge with current tail if adjacent - if (start - BLOCK_OVERHEAD == changetype(tail)) { - start -= BLOCK_OVERHEAD; + const offsetToTail = AL_SIZE; + if (start - offsetToTail == changetype(tail)) { + start -= offsetToTail; tailInfo = tail.mmInfo; } else { // We don't do this, but a user might `memory.grow` manually @@ -415,14 +407,14 @@ function addMemory(root: Root, start: usize, end: usize): bool { } // left size is total minus its own and the zero-length tail's header - var leftSize = size - (BLOCK_OVERHEAD << 1); + var leftSize = size - 2 * BLOCK_OVERHEAD; var left = changetype(start); left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE); left.prev = null; left.next = null; // tail is a zero-length used block - tail = changetype(start + size - BLOCK_OVERHEAD); + tail = changetype(start + BLOCK_OVERHEAD + leftSize); tail.mmInfo = 0 | LEFTFREE; SETTAIL(root, tail); @@ -456,71 +448,56 @@ function growMemory(root: Root, size: usize): void { addMemory(root, pagesBefore << 16, pagesAfter << 16); } +/** Computes the size (excl. header) of a block. */ +function computeSize(size: usize): usize { + // Size must be large enough and aligned minus preceeding overhead + return size <= BLOCK_MINSIZE + ? BLOCK_MINSIZE + : ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; +} + /** Prepares and checks an allocation size. */ function prepareSize(size: usize): usize { if (size >= BLOCK_MAXSIZE) throw new Error("allocation too large"); - return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size + return computeSize(size); } /** Initilizes the root structure. */ -export function maybeInitialize(): Root { - var root = ROOT; - if (!root) { - let rootOffset = (__heap_base + AL_MASK) & ~AL_MASK; - let pagesBefore = memory.size(); - let pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16); - if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable(); - root = changetype(rootOffset); - root.flMap = 0; - SETTAIL(root, changetype(0)); - for (let fl: usize = 0; fl < FL_BITS; ++fl) { - SETSL(root, fl, 0); - for (let sl: u32 = 0; sl < SL_SIZE; ++sl) { - SETHEAD(root, fl, sl, null); - } - } - let memStart = (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK; - if (ASC_LOW_MEMORY_LIMIT) { - const memEnd = ASC_LOW_MEMORY_LIMIT & ~AL_MASK; - if (memStart <= memEnd) addMemory(root, memStart, memEnd); - else unreachable(); // low memory limit already exceeded - } else { - addMemory(root, memStart, memory.size() << 16); +function initialize(): void { + var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK; + var pagesBefore = memory.size(); + var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16); + if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable(); + var root = changetype(rootOffset); + root.flMap = 0; + SETTAIL(root, changetype(0)); + for (let fl: usize = 0; fl < FL_BITS; ++fl) { + SETSL(root, fl, 0); + for (let sl: u32 = 0; sl < SL_SIZE; ++sl) { + SETHEAD(root, fl, sl, null); } - ROOT = root; } - return root; + var memStart = rootOffset + ROOT_SIZE; + if (ASC_LOW_MEMORY_LIMIT) { + const memEnd = ASC_LOW_MEMORY_LIMIT & ~AL_MASK; + if (memStart <= memEnd) addMemory(root, memStart, memEnd); + else unreachable(); // low memory limit already exceeded + } else { + addMemory(root, memStart, memory.size() << 16); + } + ROOT = root; } -// @ts-ignore: decorator -@lazy var collectLock: bool = false; - /** Allocates a block of the specified size. */ -export function allocateBlock(root: Root, size: usize, id: u32): Block { - if (DEBUG) assert(!collectLock); // must not allocate while collecting +export function allocateBlock(root: Root, size: usize): Block { var payloadSize = prepareSize(size); var block = searchBlock(root, payloadSize); if (!block) { - if (gc.auto) { - if (DEBUG) collectLock = true; - __collect(); - if (DEBUG) collectLock = false; - block = searchBlock(root, payloadSize); - if (!block) { - growMemory(root, payloadSize); - block = changetype(searchBlock(root, payloadSize)); - if (DEBUG) assert(block); // must be found now - } - } else { - growMemory(root, payloadSize); - block = changetype(searchBlock(root, payloadSize)); - if (DEBUG) assert(block); // must be found now - } + growMemory(root, payloadSize); + block = changetype(searchBlock(root, payloadSize)); + if (DEBUG) assert(block); // must be found now } if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit - block.gcInfo = 0; // RC=0 - block.rtId = id; - block.rtSize = size; removeBlock(root, block); prepareBlock(root, block, payloadSize); if (isDefined(ASC_RTRACE)) onalloc(block); @@ -531,14 +508,13 @@ export function allocateBlock(root: Root, size: usize, id: u32): Block { export function reallocateBlock(root: Root, block: Block, size: usize): Block { var payloadSize = prepareSize(size); var blockInfo = block.mmInfo; - var currentSize = blockInfo & ~TAGS_MASK; + var blockSize = blockInfo & ~TAGS_MASK; // possibly split and update runtime size if it still fits - if (payloadSize <= currentSize) { + if (payloadSize <= blockSize) { prepareBlock(root, block, payloadSize); - block.rtSize = size; if (isDefined(ASC_RTRACE)) { - if (payloadSize != currentSize) onresize(block, currentSize); + if (payloadSize != blockSize) onresize(block, blockSize); } return block; } @@ -547,23 +523,26 @@ export function reallocateBlock(root: Root, block: Block, size: usize): Block { var right = GETRIGHT(block); var rightInfo = right.mmInfo; if (rightInfo & FREE) { - let mergeSize = currentSize + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK); + let mergeSize = blockSize + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK); if (mergeSize >= payloadSize) { removeBlock(root, right); // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which // is immediately split though. does this trigger any assertions / issues? block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize; - block.rtSize = size; prepareBlock(root, block, payloadSize); - if (isDefined(ASC_RTRACE)) onresize(block, currentSize); + if (isDefined(ASC_RTRACE)) onresize(block, blockSize); return block; } } // otherwise move the block - var newBlock = allocateBlock(root, size, block.rtId); // may invalidate cached blockInfo - newBlock.gcInfo = block.gcInfo; // keep RC - memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size); + return moveBlock(root, block, size); +} + +/** Moves a block to a new one of the specified size. */ +function moveBlock(root: Root, block: Block, newSize: usize): Block { + var newBlock = allocateBlock(root, newSize); + memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, block.mmInfo & ~TAGS_MASK); if (changetype(block) >= __heap_base) { if (isDefined(ASC_RTRACE)) onmove(block, newBlock); freeBlock(root, block); @@ -573,41 +552,42 @@ export function reallocateBlock(root: Root, block: Block, size: usize): Block { /** Frees a block. */ export function freeBlock(root: Root, block: Block): void { - var blockInfo = block.mmInfo; - block.mmInfo = blockInfo | FREE; + block.mmInfo = block.mmInfo | FREE; if (isDefined(ASC_RTRACE)) onfree(block); insertBlock(root, block); } /** Checks that a used block is valid to be freed or reallocated. */ -function checkUsedBlock(ref: usize): Block { - var block = changetype(ref - BLOCK_OVERHEAD); +function checkUsedBlock(ptr: usize): Block { + var block = changetype(ptr - BLOCK_OVERHEAD); assert( - ref != 0 && !(ref & AL_MASK) && // must exist and be aligned - !(block.mmInfo & FREE) && // must be used - !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK + ptr != 0 && !(ptr & AL_MASK) && // must exist and be aligned + !(block.mmInfo & FREE) // must be used ); return block; } // @ts-ignore: decorator @global @unsafe -export function __alloc(size: usize, id: u32): usize { - return changetype( - allocateBlock(maybeInitialize(), size, id) - ) + BLOCK_OVERHEAD; +export function __alloc(size: usize): usize { + if (!ROOT) initialize(); + return changetype(allocateBlock(ROOT, size)) + BLOCK_OVERHEAD; } // @ts-ignore: decorator @global @unsafe -export function __realloc(ref: usize, size: usize): usize { - return changetype( - reallocateBlock(maybeInitialize(), checkUsedBlock(ref), size) +export function __realloc(ptr: usize, size: usize): usize { + if (!ROOT) initialize(); + return (ptr < __heap_base + ? changetype(moveBlock(ROOT, checkUsedBlock(ptr), size)) + : changetype(reallocateBlock(ROOT, checkUsedBlock(ptr), size)) ) + BLOCK_OVERHEAD; } // @ts-ignore: decorator @global @unsafe -export function __free(ref: usize): void { - freeBlock(maybeInitialize(), checkUsedBlock(ref)); +export function __free(ptr: usize): void { + if (ptr < __heap_base) return; + if (!ROOT) initialize(); + freeBlock(ROOT, checkUsedBlock(ptr)); } diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index de528ecb5e..7fdc548cb5 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -1,6 +1,6 @@ /// -import { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common"; +import { OBJECT, BLOCK_MAXSIZE, TOTAL_OVERHEAD } from "./rt/common"; import { idof } from "./builtins"; import { Array } from "./array"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error"; @@ -19,7 +19,7 @@ export class StaticArray { static fromArray(source: Array): StaticArray { var length = source.length; var outSize = length << alignof(); - var out = __alloc(outSize, idof>()); + var out = __new(outSize, idof>()); if (isManaged()) { let sourcePtr = source.dataStart; for (let i = 0; i < length; ++i) { @@ -37,7 +37,7 @@ export class StaticArray { var otherLen = select(0, other.length, other === null); var outLen = sourceLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__alloc(outLen << alignof(), idof>())); // retains + var out = changetype>(__new(outLen << alignof(), idof>())); // retains var outStart = changetype(out); var sourceSize = sourceLen << alignof(); if (isManaged()) { @@ -64,7 +64,7 @@ export class StaticArray { end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); var sliceSize = length << alignof(); - var slice = changetype>(__alloc(sliceSize, idof>())); // retains + var slice = changetype>(__new(sliceSize, idof>())); // retains var sourcePtr = changetype(source) + (start << alignof()); if (isManaged()) { let off: usize = 0; @@ -82,13 +82,13 @@ export class StaticArray { constructor(length: i32) { if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH); var outSize = length << alignof(); - var out = __alloc(outSize, idof>()); + var out = __new(outSize, idof>()); memory.fill(out, 0, outSize); return changetype>(out); // retains } get length(): i32 { - return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof(); + return changetype(changetype(this) - TOTAL_OVERHEAD).rtSize >>> alignof(); } @operator("[]") private __get(index: i32): T { @@ -169,7 +169,7 @@ export class StaticArray { var otherLen = select(0, other.length, other === null); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains + var out = changetype>(__newArray(outLen, alignof(), idof>())); // retains var outStart = out.dataStart; var thisSize = thisLen << alignof(); if (isManaged()) { @@ -197,7 +197,7 @@ export class StaticArray { start = start < 0 ? max(start + length, 0) : min(start, length); end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); - var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains + var slice = changetype>(__newArray(length, alignof(), idof>())); // retains var sliceBase = slice.dataStart; var thisBase = changetype(this) + (start << alignof()); if (isManaged()) { @@ -235,7 +235,7 @@ export class StaticArray { @unsafe private __visit_impl(cookie: u32): void { if (isManaged()) { let cur = changetype(this); - let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize; + let end = cur + changetype(changetype(this) - TOTAL_OVERHEAD).rtSize; while (cur < end) { let val = load(cur); if (val) __visit(val, cookie); diff --git a/std/assembly/string.ts b/std/assembly/string.ts index a9f7d55b39..ea5bef8c60 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -1,6 +1,6 @@ /// -import { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common"; +import { OBJECT, BLOCK_MAXSIZE, TOTAL_OVERHEAD } from "./rt/common"; import { compareImpl, strtol, strtod, isSpace, isAscii, isFinalSigma, toLower8, toUpper8 } from "./util/string"; import { SPECIALS_UPPER, casemap, bsearch } from "./util/casemap"; import { E_INVALIDLENGTH } from "./util/error"; @@ -13,7 +13,7 @@ import { Array } from "./array"; static fromCharCode(unit: i32, surr: i32 = -1): String { var hasSur = surr > 0; - var out = __alloc(2 << i32(hasSur), idof()); + var out = __new(2 << i32(hasSur), idof()); store(out, unit); if (hasSur) store(out, surr, 2); return changetype(out); // retains @@ -21,7 +21,7 @@ import { Array } from "./array"; static fromCharCodes(units: Array): String { var length = units.length; - var out = __alloc(length << 1, idof()); + var out = __new(length << 1, idof()); var ptr = units.dataStart; for (let i = 0; i < length; ++i) { store(out + (i << 1), load(ptr + (i << 2))); @@ -32,7 +32,7 @@ import { Array } from "./array"; static fromCodePoint(code: i32): String { assert(code <= 0x10FFFF); var hasSur = code > 0xFFFF; - var out = __alloc(2 << i32(hasSur), idof()); + var out = __new(2 << i32(hasSur), idof()); if (!hasSur) { store(out, code); } else { @@ -45,12 +45,12 @@ import { Array } from "./array"; } get length(): i32 { - return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1; + return changetype(changetype(this) - TOTAL_OVERHEAD).rtSize >> 1; } @operator("[]") charAt(pos: i32): String { if (pos >= this.length) return changetype(""); - var out = __alloc(2, idof()); + var out = __new(2, idof()); store(out, load(changetype(this) + (pos << 1))); return changetype(out); // retains } @@ -80,7 +80,7 @@ import { Array } from "./array"; var otherSize: isize = other.length << 1; var outSize: usize = thisSize + otherSize; if (outSize == 0) return changetype(""); - var out = changetype(__alloc(outSize, idof())); // retains + var out = changetype(__new(outSize, idof())); // retains memory.copy(changetype(out), changetype(this), thisSize); memory.copy(changetype(out) + thisSize, changetype(other), otherSize); return out; @@ -201,7 +201,7 @@ import { Array } from "./array"; if (intStart < 0) intStart = max(len + intStart, 0); var size = min(max(end, 0), len - intStart) << 1; if (size <= 0) return changetype(""); - var out = __alloc(size, idof()); + var out = __new(size, idof()); memory.copy(out, changetype(this) + (intStart << 1), size); return changetype(out); // retains } @@ -215,7 +215,7 @@ import { Array } from "./array"; var size = toPos - fromPos; if (!size) return changetype(""); if (!fromPos && toPos == len << 1) return this; - var out = __alloc(size, idof()); + var out = __new(size, idof()); memory.copy(out, changetype(this) + fromPos, size); return changetype(out); // retains } @@ -232,7 +232,7 @@ import { Array } from "./array"; } if (!size) return changetype(""); if (!offset && size == len << 1) return this; - var out = __alloc(size, idof()); + var out = __new(size, idof()); memory.copy(out, changetype(this) + offset, size); return changetype(out); // retains } @@ -256,7 +256,7 @@ import { Array } from "./array"; if (!offset) return this; size -= offset; if (!size) return changetype(""); - var out = __alloc(size, idof()); + var out = __new(size, idof()); memory.copy(out, changetype(this) + offset, size); return changetype(out); // retains } @@ -269,7 +269,7 @@ import { Array } from "./array"; } if (!size) return changetype(""); if (size == originalSize) return this; - var out = __alloc(size, idof()); + var out = __new(size, idof()); memory.copy(out, changetype(this), size); return changetype(out); // retains } @@ -280,7 +280,7 @@ import { Array } from "./array"; var padSize = pad.length << 1; if (targetSize < thisSize || !padSize) return this; var prependSize = targetSize - thisSize; - var out = __alloc(targetSize, idof()); + var out = __new(targetSize, idof()); if (prependSize > padSize) { let repeatCount = (prependSize - 2) / padSize; let restBase = repeatCount * padSize; @@ -300,7 +300,7 @@ import { Array } from "./array"; var padSize = pad.length << 1; if (targetSize < thisSize || !padSize) return this; var appendSize = targetSize - thisSize; - var out = __alloc(targetSize, idof()); + var out = __new(targetSize, idof()); memory.copy(out, changetype(this), thisSize); if (appendSize > padSize) { let repeatCount = (appendSize - 2) / padSize; @@ -324,7 +324,7 @@ import { Array } from "./array"; if (count == 0 || !length) return changetype(""); if (count == 1) return this; - var out = __alloc((length * count) << 1, idof()); + var out = __new((length * count) << 1, idof()); memory.repeat(out, changetype(this), length << 1, count); return changetype(out); // retains } @@ -341,7 +341,7 @@ import { Array } from "./array"; len -= slen; let olen = len + rlen; if (olen) { - let out = __alloc(olen << 1, idof()); + let out = __new(olen << 1, idof()); memory.copy(out, changetype(this), index << 1); memory.copy( out + (index << 1), @@ -369,7 +369,7 @@ import { Array } from "./array"; if (!slen) { if (!rlen) return this; // Special case: 'abc'.replaceAll('', '-') -> '-a-b-c-' - let out = __alloc((len + (len + 1) * rlen) << 1, idof()); + let out = __new((len + (len + 1) * rlen) << 1, idof()); memory.copy(out, changetype(replacement), rlen << 1); let offset = rlen; for (let i: usize = 0; i < len; ++i) { @@ -390,7 +390,7 @@ import { Array } from "./array"; if (slen == rlen) { // Fast path when search and replacement have same length let size = len << 1; - let out = __alloc(size, idof()); + let out = __new(size, idof()); memory.copy(out, changetype(this), size); while (~(next = this.indexOf(search, prev))) { memory.copy(out + (next << 1), changetype(replacement), rlen << 1); @@ -400,10 +400,10 @@ import { Array } from "./array"; } var out: usize = 0, offset: usize = 0, resLen = len; while (~(next = this.indexOf(search, prev))) { - if (!out) out = __alloc(len << 1, idof()); + if (!out) out = __new(len << 1, idof()); if (offset > resLen) { let newLength = resLen << 1; - out = __realloc(out, newLength << 1); + out = __renew(out, newLength << 1); resLen = newLength; } let chunk = next - prev; @@ -424,7 +424,7 @@ import { Array } from "./array"; if (offset) { if (offset > resLen) { let newLength = resLen << 1; - out = __realloc(out, newLength << 1); + out = __renew(out, newLength << 1); resLen = newLength; } let rest = len - prev; @@ -436,7 +436,7 @@ import { Array } from "./array"; ); } rest += offset; - if (resLen > rest) out = __realloc(out, rest << 1); + if (resLen > rest) out = __renew(out, rest << 1); return changetype(out); } return this; @@ -448,43 +448,43 @@ import { Array } from "./array"; end = end < 0 ? max(end + len, 0) : min(end, len); len = end - start; if (len <= 0) return changetype(""); - var out = __alloc(len << 1, idof()); + var out = __new(len << 1, idof()); memory.copy(out, changetype(this) + (start << 1), len << 1); return changetype(out); // retains } split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { - if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains + if (!limit) return changetype>(__newArray(0, alignof(), idof>())); // retains if (separator === null) return [this]; var length: isize = this.length; var sepLen = separator.length; if (limit < 0) limit = i32.MAX_VALUE; if (!sepLen) { - if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains + if (!length) return changetype>(__newArray(0, alignof(), idof>())); // retains // split by chars length = min(length, limit); - let result = changetype>(__allocArray(length, alignof(), idof>())); // retains + let result = changetype>(__newArray(length, alignof(), idof>())); // retains // @ts-ignore: cast let resultStart = result.dataStart as usize; for (let i: isize = 0; i < length; ++i) { - let charStr = __alloc(2, idof()); + let charStr = __new(2, idof()); store(charStr, load(changetype(this) + (i << 1))); store(resultStart + (i << alignof()), charStr); // result[i] = charStr if (isManaged()) __retain(charStr); } return result; } else if (!length) { - let result = changetype>(__allocArray(1, alignof(), idof>())); // retains + let result = changetype>(__newArray(1, alignof(), idof>())); // retains // @ts-ignore: cast store(result.dataStart as usize, changetype("")); // static "" return result; } - var result = changetype>(__allocArray(0, alignof(), idof>())); // retains + var result = changetype>(__newArray(0, alignof(), idof>())); // retains var end = 0, start = 0, i = 0; while (~(end = this.indexOf(separator, start))) { let len = end - start; if (len > 0) { - let out = __alloc(len << 1, idof()); + let out = __new(len << 1, idof()); memory.copy(out, changetype(this) + (start << 1), len << 1); result.push(changetype(out)); } else { @@ -499,7 +499,7 @@ import { Array } from "./array"; } var len = length - start; if (len > 0) { - let out = __alloc(len << 1, idof()); + let out = __new(len << 1, idof()); memory.copy(out, changetype(this) + (start << 1), len << 1); result.push(changetype(out)); // retains } else { @@ -511,7 +511,7 @@ import { Array } from "./array"; toLowerCase(): String { var len = this.length; if (!len) return this; - var codes = __alloc(len * 2 * 2, idof()); + var codes = __new(len * 2 * 2, idof()); var j: usize = 0; for (let i: usize = 0; i < len; ++i, ++j) { let c = load(changetype(this) + (i << 1)); @@ -562,14 +562,14 @@ import { Array } from "./array"; } } } - codes = __realloc(codes, j << 1); + codes = __renew(codes, j << 1); return changetype(codes); // retains } toUpperCase(): String { var len = this.length; if (!len) return this; - var codes = __alloc(len * 3 * 2, idof()); + var codes = __new(len * 3 * 2, idof()); var specialsPtr = changetype(SPECIALS_UPPER); var specialsLen = SPECIALS_UPPER.length; var j: usize = 0; @@ -625,7 +625,7 @@ import { Array } from "./array"; } } } - codes = __realloc(codes, j << 1); + codes = __renew(codes, j << 1); return changetype(codes); // retains } @@ -652,7 +652,7 @@ export namespace String { export function byteLength(str: string, nullTerminated: bool = false): i32 { var strOff = changetype(str); - var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize; + var strEnd = strOff + changetype(changetype(str) - TOTAL_OVERHEAD).rtSize; var bufLen = i32(nullTerminated); while (strOff < strEnd) { let c1 = load(strOff); @@ -677,7 +677,7 @@ export namespace String { } export function encode(str: string, nullTerminated: bool = false): ArrayBuffer { - var buf = __alloc(byteLength(str, nullTerminated), idof()); + var buf = __new(byteLength(str, nullTerminated), idof()); encodeUnsafe(changetype(str), str.length, buf, nullTerminated); return changetype(buf); // retains } @@ -736,7 +736,7 @@ export namespace String { var bufOff = buf; var bufEnd = buf + len; assert(bufEnd >= bufOff); // guard wraparound - var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte + var str = __new(len << 1, idof()); // max is one u16 char per u8 byte var strOff = str; while (bufOff < bufEnd) { let u0 = load(bufOff); ++bufOff; @@ -772,18 +772,18 @@ export namespace String { } strOff += 2; } - return changetype(__realloc(str, strOff - str)); // retains + return changetype(__renew(str, strOff - str)); // retains } } export namespace UTF16 { export function byteLength(str: string): i32 { - return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize; + return changetype(changetype(str) - TOTAL_OVERHEAD).rtSize; } export function encode(str: string): ArrayBuffer { - var buf = __alloc(byteLength(str), idof()); + var buf = __new(byteLength(str), idof()); encodeUnsafe(changetype(str), str.length, buf); return changetype(buf); // retains } @@ -803,7 +803,7 @@ export namespace String { // @ts-ignore: decorator @unsafe export function decodeUnsafe(buf: usize, len: usize): String { - var str = __alloc(len &= ~1, idof()); + var str = __new(len &= ~1, idof()); memory.copy(str, buf, len); return changetype(str); // retains } diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index e1e32d4192..6816d89216 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -1488,7 +1488,7 @@ function SUBARRAY( end = end < 0 ? max(len + end, 0) : min(end, len); end = max(end, begin); - var out = __alloc(offsetof(), idof()); + var out = __new(offsetof(), idof()); store(out, __retain(changetype(array.buffer)), offsetof("buffer")); store(out, array.dataStart + (begin << alignof()), offsetof("dataStart")); store(out, (end - begin) << alignof(), offsetof("byteLength")); @@ -1558,8 +1558,8 @@ function MAP( var dataStart = array.dataStart; var byteLength = len << alignof(); - var out = __alloc(offsetof(), idof()); - var buffer = __alloc(byteLength, idof()); + var out = __new(offsetof(), idof()); + var buffer = __new(byteLength, idof()); for (let i = 0; i < len; i++) { store( buffer + (i << alignof()), @@ -1579,8 +1579,8 @@ function FILTER( fn: (value: T, index: i32, self: TArray) => bool, ): TArray { var len = array.length; - var out = __alloc(offsetof(), idof()); - var buffer = __alloc(len << alignof(), idof()); + var out = __new(offsetof(), idof()); + var buffer = __new(len << alignof(), idof()); var dataStart = array.dataStart; var j: usize = 0; for (let i = 0; i < len; i++) { @@ -1594,7 +1594,7 @@ function FILTER( } // shrink output buffer var byteLength = j << alignof(); - var data = __realloc(buffer, byteLength); + var data = __renew(buffer, byteLength); store(out, __retain(data), offsetof("buffer")); store(out, byteLength, offsetof("byteLength")); store(out, data, offsetof("dataStart")); @@ -1755,7 +1755,7 @@ function WRAP(buffer: ArrayBuffer, byteOffset throw new RangeError(E_INVALIDLENGTH); } } - var out = __alloc(offsetof(), idof()); + var out = __new(offsetof(), idof()); store(out, __retain(changetype(buffer)), offsetof("buffer")); store(out, byteLength, offsetof("byteLength")); store(out, changetype(buffer) + byteOffset, offsetof("dataStart")); diff --git a/std/assembly/util/number.ts b/std/assembly/util/number.ts index e3d85bb5c2..19b6a0822f 100644 --- a/std/assembly/util/number.ts +++ b/std/assembly/util/number.ts @@ -354,15 +354,15 @@ export function utoa32(value: u32, radix: i32): String { if (radix == 10) { let decimals = decimalCount32(value); - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa32_dec_core(out, value, decimals); } else if (radix == 16) { let decimals = (31 - clz(value) >> 2) + 1; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa32_hex_core(out, value, decimals); } else { let decimals = ulog_base(value, radix); - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_any_core(out, value, decimals, radix); } return changetype(out); // retains @@ -380,16 +380,16 @@ export function itoa32(value: i32, radix: i32): String { if (radix == 10) { let decimals = decimalCount32(value) + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa32_dec_core(out, value, decimals); } else if (radix == 16) { let decimals = (31 - clz(value) >> 2) + 1 + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa32_hex_core(out, value, decimals); } else { let val32 = u32(value); let decimals = ulog_base(val32, radix) + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_any_core(out, val32, decimals, radix); } if (sign) store(out, CharCode.MINUS); @@ -407,20 +407,20 @@ export function utoa64(value: u64, radix: i32): String { if (value <= u32.MAX_VALUE) { let val32 = value; let decimals = decimalCount32(val32); - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa32_dec_core(out, val32, decimals); } else { let decimals = decimalCount64High(value); - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_dec_core(out, value, decimals); } } else if (radix == 16) { let decimals = (63 - u32(clz(value)) >> 2) + 1; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_hex_core(out, value, decimals); } else { let decimals = ulog_base(value, radix); - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_any_core(out, value, decimals, radix); } return changetype(out); // retains @@ -440,20 +440,20 @@ export function itoa64(value: i64, radix: i32): String { if (value <= u32.MAX_VALUE) { let val32 = value; let decimals = decimalCount32(val32) + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa32_dec_core(out, val32, decimals); } else { let decimals = decimalCount64High(value) + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_dec_core(out, value, decimals); } } else if (radix == 16) { let decimals = (63 - u32(clz(value)) >> 2) + 1 + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_hex_core(out, value, decimals); } else { let decimals = ulog_base(value, radix) + sign; - out = __alloc(decimals << 1, idof()); + out = __new(decimals << 1, idof()); utoa64_any_core(out, value, decimals, radix); } if (sign) store(out, CharCode.MINUS); @@ -728,18 +728,19 @@ function dtoa_core(buffer: usize, value: f64): i32 { return len + sign; } +// @ts-ignore: decorator +@lazy @inline const dtoa_buf = memory.data(MAX_DOUBLE_LENGTH << 1); + export function dtoa(value: f64): String { if (value == 0) return "0.0"; if (!isFinite(value)) { if (isNaN(value)) return "NaN"; return select("-Infinity", "Infinity", value < 0); } - var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof()); - var length = dtoa_core(buffer, value); - if (length == MAX_DOUBLE_LENGTH) return changetype(buffer); - var result = changetype(buffer).substring(0, length); - __free(buffer); - return result; + var size = dtoa_core(dtoa_buf, value) << 1; + var result = __new(size, idof()); + memory.copy(result, dtoa_buf, size); + return changetype(result); } export function itoa_buffered(buffer: usize, value: T): u32 { diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 3ab895b259..4312e9ccdf 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -87,7 +87,7 @@ function weakHeapSort( const shift32 = alignof(); var bitsetSize = (length + 31) >> 5 << shift32; - var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below + var bitset = __alloc(bitsetSize); // indexed in 32-bit chunks below memory.fill(bitset, 0, bitsetSize); // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 76e993ec96..0053dc6a37 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -849,7 +849,7 @@ export function joinBooleanArray(dataStart: usize, length: i32, separator: strin var sepLen = separator.length; var valueLen = 5; // max possible length of element len("false") var estLen = (valueLen + sepLen) * lastIndex + valueLen; - var result = changetype(__alloc(estLen << 1, idof())); // retains + var result = changetype(__new(estLen << 1, idof())); // retains var offset = 0; var value: bool; for (let i = 0; i < lastIndex; ++i) { @@ -910,7 +910,7 @@ export function joinIntegerArray(dataStart: usize, length: i32, separator: st var sepLen = separator.length; const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned()); var estLen = (valueLen + sepLen) * lastIndex + valueLen; - var result = changetype(__alloc(estLen << 1, idof())); // retains + var result = changetype(__new(estLen << 1, idof())); // retains var offset = 0; var value: T; for (let i = 0; i < lastIndex; ++i) { @@ -946,7 +946,7 @@ export function joinFloatArray(dataStart: usize, length: i32, separator: stri const valueLen = MAX_DOUBLE_LENGTH; var sepLen = separator.length; var estLen = (valueLen + sepLen) * lastIndex + valueLen; - var result = changetype(__alloc(estLen << 1, idof())); // retains + var result = changetype(__new(estLen << 1, idof())); // retains var offset = 0; var value: T; for (let i = 0; i < lastIndex; ++i) { @@ -985,7 +985,7 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } var offset = 0; var sepLen = separator.length; - var result = __alloc((estLen + sepLen * lastIndex) << 1, idof()); + var result = __new((estLen + sepLen * lastIndex) << 1, idof()); for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); if (value !== null) { diff --git a/std/assembly/wasi/index.ts b/std/assembly/wasi/index.ts index 7bc8cfb6f3..00d4b7fde1 100644 --- a/std/assembly/wasi/index.ts +++ b/std/assembly/wasi/index.ts @@ -70,7 +70,7 @@ function trace( // eslint-disable-line @typescript-eslint/no-unused-vars // 4: iov.buf_len // 8: len // 12: buf... - var iovPtr = __alloc(offsetof() + sizeof() + 1 + (max(String.UTF8.byteLength(message), MAX_DOUBLE_LENGTH << 1)), 0); + var iovPtr = __alloc(offsetof() + sizeof() + 1 + (max(String.UTF8.byteLength(message), MAX_DOUBLE_LENGTH << 1))); var lenPtr = iovPtr + offsetof(); var bufPtr = lenPtr + sizeof(); changetype(iovPtr).buf = bufPtr; diff --git a/tests/allocators/buddy/optimized.wat b/tests/allocators/buddy/optimized.wat index 213edaf624..f5b0f9dcc1 100644 --- a/tests/allocators/buddy/optimized.wat +++ b/tests/allocators/buddy/optimized.wat @@ -9,46 +9,44 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") - (data (i32.const 64) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (data (i32.const 1100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") (global $assembly/buddy/BUCKETS_START (mut i32) (i32.const 0)) - (global $assembly/buddy/BUCKETS_END (mut i32) (i32.const 0)) (global $assembly/buddy/bucket_limit (mut i32) (i32.const 0)) (global $assembly/buddy/NODE_IS_SPLIT_START (mut i32) (i32.const 0)) (global $assembly/buddy/NODE_IS_SPLIT_END (mut i32) (i32.const 0)) (global $assembly/buddy/base_ptr (mut i32) (i32.const 0)) (global $assembly/buddy/max_ptr (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "memory.copy" (func $~lib/memory/memory.copy)) (export "memory.init" (func $~lib/memory/memory.init)) (export "memory.drop" (func $~lib/memory/memory.drop)) (export "memory.repeat" (func $~lib/memory/memory.repeat)) (export "memory.compare" (func $~lib/memory/memory.compare)) (export "__alloc" (func $assembly/buddy/__mem_allocate)) (export "__free" (func $assembly/buddy/__mem_free)) - (start $start) - (func $~lib/memory/memory.init (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 32 - i32.const 80 + (start $~start) + (func $~lib/memory/memory.init (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + i32.const 1056 + i32.const 1120 i32.const 35 - i32.const 4 + i32.const 5 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.drop (; 2 ;) (param $0 i32) - i32.const 32 - i32.const 80 + (func $~lib/memory/memory.drop (param $0 i32) + i32.const 1056 + i32.const 1120 i32.const 42 - i32.const 4 + i32.const 5 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.copy (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 local.get $2 - local.set $3 + local.set $4 local.get $0 local.get $1 i32.eq @@ -70,32 +68,32 @@ i32.const 7 i32.and if - local.get $3 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $4 local.get $0 local.tee $2 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $1 local.get $2 - local.get $4 + local.get $3 i32.load8_u i32.store8 br $while-continue|0 end end loop $while-continue|1 - local.get $3 + local.get $4 i32.const 8 i32.ge_u if @@ -103,10 +101,10 @@ local.get $1 i64.load i64.store - local.get $3 + local.get $4 i32.const 8 i32.sub - local.set $3 + local.set $4 local.get $0 i32.const 8 i32.add @@ -120,7 +118,7 @@ end end loop $while-continue|2 - local.get $3 + local.get $4 if local.get $0 local.tee $2 @@ -128,18 +126,18 @@ i32.add local.set $0 local.get $1 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $1 local.get $2 - local.get $4 + local.get $3 i32.load8_u i32.store8 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $4 br $while-continue|2 end end @@ -154,22 +152,22 @@ if loop $while-continue|3 local.get $0 - local.get $3 + local.get $4 i32.add i32.const 7 i32.and if - local.get $3 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.tee $3 + local.tee $4 local.get $0 i32.add local.get $1 - local.get $3 + local.get $4 i32.add i32.load8_u i32.store8 @@ -177,18 +175,18 @@ end end loop $while-continue|4 - local.get $3 + local.get $4 i32.const 8 i32.ge_u if - local.get $3 + local.get $4 i32.const 8 i32.sub - local.tee $3 + local.tee $4 local.get $0 i32.add local.get $1 - local.get $3 + local.get $4 i32.add i64.load i64.store @@ -197,16 +195,16 @@ end end loop $while-continue|5 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.const 1 i32.sub - local.tee $3 + local.tee $4 local.get $0 i32.add local.get $1 - local.get $3 + local.get $4 i32.add i32.load8_u i32.store8 @@ -216,7 +214,7 @@ end end ) - (func $~lib/memory/memory.repeat (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) local.get $2 local.get $3 @@ -241,16 +239,15 @@ end end ) - (func $~lib/memory/memory.compare (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/memory.compare (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - block $~lib/util/memory/memcmp|inlined.0 (result i32) - i32.const 0 + (local $5 i32) + block $~lib/util/memory/memcmp|inlined.0 local.get $0 local.get $1 i32.eq br_if $~lib/util/memory/memcmp|inlined.0 - drop local.get $0 i32.const 7 i32.and @@ -265,23 +262,22 @@ i32.and if i32.const 0 + local.set $3 local.get $2 i32.eqz br_if $~lib/util/memory/memcmp|inlined.0 - drop local.get $0 i32.load8_u - local.tee $3 + local.tee $4 local.get $1 i32.load8_u - local.tee $4 + local.tee $5 + i32.sub + local.set $3 + local.get $4 + local.get $5 i32.ne - if - local.get $3 - local.get $4 - i32.sub - br $~lib/util/memory/memcmp|inlined.0 - end + br_if $~lib/util/memory/memcmp|inlined.0 local.get $2 i32.const 1 i32.sub @@ -335,17 +331,16 @@ if local.get $0 i32.load8_u - local.tee $3 + local.tee $4 local.get $1 i32.load8_u - local.tee $4 + local.tee $5 + i32.sub + local.set $3 + local.get $4 + local.get $5 i32.ne - if - local.get $3 - local.get $4 - i32.sub - br $~lib/util/memory/memcmp|inlined.0 - end + br_if $~lib/util/memory/memcmp|inlined.0 local.get $0 i32.const 1 i32.add @@ -358,9 +353,11 @@ end end i32.const 0 + local.set $3 end + local.get $3 ) - (func $assembly/buddy/update_max_ptr (; 6 ;) (param $0 i32) (result i32) + (func $assembly/buddy/update_max_ptr (param $0 i32) (result i32) local.get $0 global.get $assembly/buddy/max_ptr i32.gt_u @@ -389,14 +386,14 @@ end i32.const 1 ) - (func $assembly/buddy/buckets$get (; 7 ;) (param $0 i32) (result i32) + (func $assembly/buddy/buckets$get (param $0 i32) (result i32) global.get $assembly/buddy/BUCKETS_START local.get $0 i32.const 3 i32.shl i32.add ) - (func $assembly/buddy/list_init (; 8 ;) (param $0 i32) + (func $assembly/buddy/list_init (param $0 i32) local.get $0 local.get $0 i32.store @@ -404,7 +401,7 @@ local.get $0 i32.store offset=4 ) - (func $assembly/buddy/list_push (; 9 ;) (param $0 i32) (param $1 i32) + (func $assembly/buddy/list_push (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 local.get $0 @@ -421,7 +418,7 @@ local.get $1 i32.store ) - (func $assembly/buddy/bucket_for_request (; 10 ;) (param $0 i32) (result i32) + (func $assembly/buddy/bucket_for_request (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 26 @@ -446,7 +443,7 @@ end local.get $1 ) - (func $assembly/buddy/node_for_ptr (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/buddy/node_for_ptr (param $0 i32) (param $1 i32) (result i32) i32.const 1 local.get $1 i32.shl @@ -461,32 +458,26 @@ i32.const 1 i32.sub ) - (func $assembly/buddy/node_is_split$get (; 12 ;) (param $0 i32) (result i32) - local.get $0 + (func $assembly/buddy/parent_is_split (param $0 i32) (result i32) global.get $assembly/buddy/NODE_IS_SPLIT_START - i32.add - i32.load8_u - ) - (func $assembly/buddy/parent_is_split (; 13 ;) (param $0 i32) (result i32) local.get $0 i32.const 1 i32.sub - i32.const 2 - i32.div_u + i32.const 1 + i32.shr_u local.tee $0 - i32.const 8 - i32.div_u - call $assembly/buddy/node_is_split$get + i32.const 3 + i32.shr_u + i32.add + i32.load8_u local.get $0 i32.const 7 i32.and i32.shr_u i32.const 1 i32.and - i32.const 1 - i32.eq ) - (func $assembly/buddy/list_remove (; 14 ;) (param $0 i32) + (func $assembly/buddy/list_remove (param $0 i32) (local $1 i32) local.get $0 i32.load @@ -499,7 +490,7 @@ local.get $1 i32.store ) - (func $assembly/buddy/ptr_for_node (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/buddy/ptr_for_node (param $0 i32) (param $1 i32) (result i32) global.get $assembly/buddy/base_ptr local.get $0 i32.const 1 @@ -514,18 +505,20 @@ i32.shl i32.add ) - (func $assembly/buddy/flip_parent_is_split (; 16 ;) (param $0 i32) + (func $assembly/buddy/flip_parent_is_split (param $0 i32) (local $1 i32) local.get $0 i32.const 1 i32.sub - i32.const 2 - i32.div_u + i32.const 1 + i32.shr_u local.tee $0 - i32.const 8 - i32.div_u + i32.const 3 + i32.shr_u local.tee $1 - call $assembly/buddy/node_is_split$get + global.get $assembly/buddy/NODE_IS_SPLIT_START + i32.add + i32.load8_u i32.const 1 local.get $0 i32.const 7 @@ -539,7 +532,7 @@ local.get $0 i32.store8 ) - (func $assembly/buddy/lower_bucket_limit (; 17 ;) (param $0 i32) (result i32) + (func $assembly/buddy/lower_bucket_limit (param $0 i32) (result i32) (local $1 i32) (local $2 i32) loop $while-continue|0 @@ -597,8 +590,8 @@ local.get $1 i32.const 1 i32.sub - i32.const 2 - i32.div_u + i32.const 1 + i32.shr_u local.tee $1 if local.get $1 @@ -609,7 +602,7 @@ end i32.const 1 ) - (func $assembly/buddy/list_pop (; 18 ;) (param $0 i32) (result i32) + (func $assembly/buddy/list_pop (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -623,7 +616,7 @@ call $assembly/buddy/list_remove local.get $0 ) - (func $assembly/buddy/__mem_allocate (; 19 ;) (param $0 i32) (result i32) + (func $assembly/buddy/__mem_allocate (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -670,41 +663,41 @@ i32.const 8 i32.add call $assembly/buddy/bucket_for_request - local.tee $1 + local.tee $2 local.set $4 loop $while-continue|0 - local.get $1 + local.get $2 i32.const -1 i32.ne if - local.get $1 + local.get $2 call $assembly/buddy/lower_bucket_limit i32.eqz if i32.const 0 return end - local.get $1 + local.get $2 call $assembly/buddy/buckets$get call $assembly/buddy/list_pop - local.tee $3 + local.tee $1 i32.eqz if i32.const 1 - local.get $1 + local.get $2 i32.eqz - local.get $1 + local.get $2 global.get $assembly/buddy/bucket_limit i32.ne select if - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $1 + local.set $2 br $while-continue|0 end - local.get $1 + local.get $2 i32.const 1 i32.sub call $assembly/buddy/lower_bucket_limit @@ -713,79 +706,76 @@ i32.const 0 return end - local.get $1 + local.get $2 call $assembly/buddy/buckets$get call $assembly/buddy/list_pop - local.set $3 + local.set $1 end + local.get $1 i32.const 1 i32.const 30 - local.get $1 + local.get $2 i32.sub i32.shl - local.set $2 - local.get $1 + local.tee $3 + i32.const 1 + i32.shr_u + i32.const 8 + i32.add + local.get $3 + local.get $2 local.get $4 i32.lt_u - if - local.get $2 - i32.const 2 - i32.div_u - i32.const 8 - i32.add - local.set $2 - end - local.get $2 - local.get $3 + select i32.add call $assembly/buddy/update_max_ptr i32.eqz if - local.get $1 + local.get $2 call $assembly/buddy/buckets$get - local.get $3 + local.get $1 call $assembly/buddy/list_push i32.const 0 return end - local.get $3 local.get $1 + local.get $2 call $assembly/buddy/node_for_ptr - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $assembly/buddy/flip_parent_is_split end loop $while-continue|1 - local.get $1 + local.get $2 local.get $4 i32.lt_u if - local.get $2 + local.get $3 i32.const 1 i32.shl i32.const 1 i32.add - local.tee $2 + local.tee $3 call $assembly/buddy/flip_parent_is_split - local.get $1 + local.get $2 i32.const 1 i32.add - local.tee $1 + local.tee $2 call $assembly/buddy/buckets$get - local.get $2 + local.get $3 i32.const 1 i32.add - local.get $1 + local.get $2 call $assembly/buddy/ptr_for_node call $assembly/buddy/list_push br $while-continue|1 end end - local.get $3 + local.get $1 local.get $0 i32.store - local.get $3 + local.get $1 i32.const 8 i32.add return @@ -793,7 +783,7 @@ end i32.const 0 ) - (func $assembly/buddy/__mem_free (; 20 ;) (param $0 i32) + (func $assembly/buddy/__mem_free (param $0 i32) (local $1 i32) local.get $0 i32.eqz @@ -841,8 +831,8 @@ call $assembly/buddy/ptr_for_node call $assembly/buddy/list_remove local.get $1 - i32.const 2 - i32.div_u + i32.const 1 + i32.shr_u local.set $1 local.get $0 i32.const 1 @@ -859,14 +849,12 @@ call $assembly/buddy/ptr_for_node call $assembly/buddy/list_push ) - (func $start (; 21 ;) - i32.const 108 + (func $~start + i32.const 1148 global.set $assembly/buddy/BUCKETS_START - i32.const 324 - global.set $assembly/buddy/BUCKETS_END - i32.const 324 + i32.const 1364 global.set $assembly/buddy/NODE_IS_SPLIT_START - i32.const 8388932 + i32.const 8389972 global.set $assembly/buddy/NODE_IS_SPLIT_END ) ) diff --git a/tests/allocators/buddy/untouched.wat b/tests/allocators/buddy/untouched.wat index 7c04f774c9..4e8f3df2f7 100644 --- a/tests/allocators/buddy/untouched.wat +++ b/tests/allocators/buddy/untouched.wat @@ -9,9 +9,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") - (data (i32.const 64) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") - (data (i32.const 112) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00b\00u\00d\00d\00y\00.\00t\00s\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") + (data (i32.const 76) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") + (data (i32.const 124) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00b\00u\00d\00d\00y\00.\00t\00s\00") (table $0 1 funcref) (global $assembly/buddy/HEADER_SIZE i32 (i32.const 8)) (global $assembly/buddy/MIN_ALLOC_LOG2 i32 (i32.const 4)) @@ -29,17 +29,16 @@ (global $assembly/buddy/base_ptr (mut i32) (i32.const 0)) (global $assembly/buddy/max_ptr (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 164)) + (global $~lib/heap/__heap_base i32 (i32.const 180)) (export "memory" (memory $0)) - (export "memory.copy" (func $~lib/memory/memory.copy)) (export "memory.init" (func $~lib/memory/memory.init)) (export "memory.drop" (func $~lib/memory/memory.drop)) (export "memory.repeat" (func $~lib/memory/memory.repeat)) (export "memory.compare" (func $~lib/memory/memory.compare)) (export "__alloc" (func $assembly/buddy/__mem_allocate)) (export "__free" (func $assembly/buddy/__mem_free)) - (start $start) - (func $start:assembly/buddy (; 1 ;) + (start $~start) + (func $start:assembly/buddy global.get $~lib/heap/__heap_base global.set $assembly/buddy/BUCKETS_START global.get $assembly/buddy/BUCKETS_START @@ -57,26 +56,26 @@ i32.add global.set $assembly/buddy/NODE_IS_SPLIT_END ) - (func $start:assembly/index (; 2 ;) + (func $start:assembly/index call $start:assembly/buddy ) - (func $~lib/memory/memory.init (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.init (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) i32.const 32 - i32.const 80 + i32.const 96 i32.const 35 - i32.const 4 + i32.const 5 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.drop (; 4 ;) (param $0 i32) + (func $~lib/memory/memory.drop (param $0 i32) i32.const 32 - i32.const 80 + i32.const 96 i32.const 42 - i32.const 4 + i32.const 5 call $~lib/builtins/abort unreachable ) - (func $~lib/util/memory/memcpy (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1100,7 +1099,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1119,20 +1118,21 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 0 + i32.const 1 + i32.lt_s + drop local.get $4 - local.get $3 - i32.add local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub i32.le_u - if (result i32) - i32.const 1 - else - local.get $5 - local.get $3 - i32.add - local.get $4 - i32.le_u - end if local.get $5 local.get $4 @@ -1144,6 +1144,10 @@ local.get $4 i32.lt_u if + i32.const 0 + i32.const 2 + i32.lt_s + drop local.get $4 i32.const 7 i32.and @@ -1239,6 +1243,10 @@ end end else + i32.const 0 + i32.const 2 + i32.lt_s + drop local.get $4 i32.const 7 i32.and @@ -1320,7 +1328,7 @@ end end ) - (func $~lib/memory/memory.repeat (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1351,7 +1359,7 @@ end end ) - (func $~lib/memory/memory.compare (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/memory.compare (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1374,6 +1382,10 @@ i32.const 0 br $~lib/util/memory/memcmp|inlined.0 end + i32.const 0 + i32.const 2 + i32.lt_s + drop local.get $5 i32.const 7 i32.and @@ -1497,7 +1509,7 @@ i32.const 0 end ) - (func $assembly/buddy/update_max_ptr (; 9 ;) (param $0 i32) (result i32) + (func $assembly/buddy/update_max_ptr (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1522,9 +1534,9 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 176 - i32.const 4 + i32.const 5 call $~lib/builtins/abort unreachable end @@ -1545,16 +1557,16 @@ end i32.const 1 ) - (func $assembly/buddy/buckets$get (; 10 ;) (param $0 i32) (result i32) + (func $assembly/buddy/buckets$get (param $0 i32) (result i32) local.get $0 - i32.const 27 + global.get $assembly/buddy/BUCKET_COUNT i32.lt_u i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 96 - i32.const 2 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -1564,7 +1576,7 @@ i32.mul i32.add ) - (func $assembly/buddy/list_init (; 11 ;) (param $0 i32) + (func $assembly/buddy/list_init (param $0 i32) local.get $0 local.get $0 i32.store @@ -1572,7 +1584,7 @@ local.get $0 i32.store offset=4 ) - (func $assembly/buddy/list_push (; 12 ;) (param $0 i32) (param $1 i32) + (func $assembly/buddy/list_push (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -1590,7 +1602,7 @@ local.get $1 i32.store ) - (func $assembly/buddy/bucket_for_request (; 13 ;) (param $0 i32) (result i32) + (func $assembly/buddy/bucket_for_request (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1620,7 +1632,7 @@ end local.get $1 ) - (func $assembly/buddy/node_for_ptr (; 14 ;) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/buddy/node_for_ptr (param $0 i32) (param $1 i32) (result i32) local.get $0 global.get $assembly/buddy/base_ptr i32.sub @@ -1635,16 +1647,16 @@ i32.const 1 i32.sub ) - (func $assembly/buddy/node_is_split$get (; 15 ;) (param $0 i32) (result i32) + (func $assembly/buddy/node_is_split$get (param $0 i32) (result i32) local.get $0 - i32.const 8388608 + global.get $assembly/buddy/SPLIT_COUNT i32.lt_u i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 142 - i32.const 2 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -1653,7 +1665,7 @@ i32.add i32.load8_u ) - (func $assembly/buddy/parent_is_split (; 16 ;) (param $0 i32) (result i32) + (func $assembly/buddy/parent_is_split (param $0 i32) (result i32) local.get $0 i32.const 1 i32.sub @@ -1673,7 +1685,7 @@ i32.const 1 i32.eq ) - (func $assembly/buddy/list_remove (; 17 ;) (param $0 i32) + (func $assembly/buddy/list_remove (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1689,7 +1701,7 @@ local.get $1 i32.store ) - (func $assembly/buddy/ptr_for_node (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/buddy/ptr_for_node (param $0 i32) (param $1 i32) (result i32) global.get $assembly/buddy/base_ptr local.get $0 i32.const 1 @@ -1704,16 +1716,16 @@ i32.shl i32.add ) - (func $assembly/buddy/node_is_split$set (; 19 ;) (param $0 i32) (param $1 i32) + (func $assembly/buddy/node_is_split$set (param $0 i32) (param $1 i32) local.get $0 - i32.const 8388608 + global.get $assembly/buddy/SPLIT_COUNT i32.lt_u i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 147 - i32.const 2 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -1723,7 +1735,7 @@ local.get $1 i32.store8 ) - (func $assembly/buddy/flip_parent_is_split (; 20 ;) (param $0 i32) + (func $assembly/buddy/flip_parent_is_split (param $0 i32) (local $1 i32) local.get $0 i32.const 1 @@ -1746,7 +1758,7 @@ i32.xor call $assembly/buddy/node_is_split$set ) - (func $assembly/buddy/lower_bucket_limit (; 21 ;) (param $0 i32) (result i32) + (func $assembly/buddy/lower_bucket_limit (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1787,7 +1799,7 @@ call $assembly/buddy/ptr_for_node local.set $3 local.get $3 - i32.const 8 + global.get $assembly/buddy/List.SIZE i32.add call $assembly/buddy/update_max_ptr i32.eqz @@ -1824,7 +1836,7 @@ end i32.const 1 ) - (func $assembly/buddy/list_pop (; 22 ;) (param $0 i32) (result i32) + (func $assembly/buddy/list_pop (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load @@ -1840,7 +1852,7 @@ call $assembly/buddy/list_remove local.get $1 ) - (func $assembly/buddy/__mem_allocate (; 23 ;) (param $0 i32) (result i32) + (func $assembly/buddy/__mem_allocate (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1850,7 +1862,9 @@ (local $7 i32) (local $8 i32) local.get $0 - i32.const 1073741816 + global.get $assembly/buddy/MAX_ALLOC + global.get $assembly/buddy/HEADER_SIZE + i32.sub i32.gt_u if unreachable @@ -1876,7 +1890,7 @@ i32.sub global.set $assembly/buddy/bucket_limit global.get $assembly/buddy/base_ptr - i32.const 8 + global.get $assembly/buddy/List.SIZE i32.add call $assembly/buddy/update_max_ptr i32.eqz @@ -2041,7 +2055,7 @@ end i32.const 0 ) - (func $assembly/buddy/__mem_free (; 24 ;) (param $0 i32) + (func $assembly/buddy/__mem_free (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2117,7 +2131,7 @@ call $assembly/buddy/ptr_for_node call $assembly/buddy/list_push ) - (func $start (; 25 ;) + (func $~start call $start:assembly/index ) ) diff --git a/tests/allocators/index.js b/tests/allocators/index.js index 421e16479f..013d8d6dbc 100644 --- a/tests/allocators/index.js +++ b/tests/allocators/index.js @@ -10,7 +10,8 @@ function test(file) { throw Error("Assertion failed: " + (msg ? "'" + getString(msg) + "' " : "") + "at " + getString(file) + ":" + line + ":" + column); }, log(ptr) { console.log(getString(ptr)); }, - logi(i) { console.log(i); } + logi(i) { console.log(i); }, + trace(...args) { console.log("trace", args); } } }).exports; diff --git a/tests/allocators/rt-full/assembly/index.ts b/tests/allocators/rt-full/assembly/index.ts index 19456ac7fd..e69de29bb2 100644 --- a/tests/allocators/rt-full/assembly/index.ts +++ b/tests/allocators/rt-full/assembly/index.ts @@ -1 +0,0 @@ -export { __free }; diff --git a/tests/allocators/rt-full/optimized.wat b/tests/allocators/rt-full/optimized.wat index 8870055041..4daacb3d39 100644 --- a/tests/allocators/rt-full/optimized.wat +++ b/tests/allocators/rt-full/optimized.wat @@ -1,34 +1,30 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 80) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 128) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 192) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 240) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1216) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 240)) + (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -40,51 +36,50 @@ local.tee $2 i32.const 256 i32.lt_u - if (result i32) + if local.get $2 i32.const 4 i32.shr_u - local.set $4 - i32.const 0 + local.set $3 else local.get $2 i32.const 31 local.get $2 i32.clz i32.sub - local.tee $3 + local.tee $2 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $4 - local.get $3 + local.set $3 + local.get $2 i32.const 7 i32.sub + local.set $4 end - local.set $3 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $2 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $2 - i32.store offset=20 + i32.store offset=8 end local.get $2 if local.get $2 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 - local.get $4 local.get $3 + local.get $4 i32.const 4 i32.shl i32.add @@ -95,8 +90,8 @@ i32.eq if local.get $0 - local.get $4 local.get $3 + local.get $4 i32.const 4 i32.shl i32.add @@ -109,23 +104,19 @@ i32.eqz if local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $3 + local.get $4 i32.const 2 i32.shl i32.add + local.tee $2 i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor + i32.const -2 + local.get $3 + i32.rotl i32.and - local.tee $1 + local.set $1 + local.get $2 + local.get $1 i32.store offset=4 local.get $1 i32.eqz @@ -133,79 +124,78 @@ local.get $0 local.get $0 i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor + i32.const -2 + local.get $4 + i32.rotl i32.and i32.store end end end ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $1 i32.load - local.set $3 + local.set $4 local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 - i32.const 1073741808 + local.tee $3 + i32.const 1073741820 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -213,101 +203,101 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load - local.tee $6 + local.tee $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add - local.tee $7 - i32.const 1073741808 + local.tee $8 + i32.const 1073741820 i32.lt_u if local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 + local.get $8 local.get $7 - local.get $6 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 + local.get $3 local.set $1 end end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $0 - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 256 i32.lt_u - if (result i32) - local.get $2 + if + local.get $3 i32.const 4 i32.shr_u - local.set $4 - i32.const 0 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $2 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $4 - local.get $2 + local.set $3 + local.get $4 i32.const 7 i32.sub + local.set $6 end - local.tee $3 + local.get $0 + local.get $3 + local.get $6 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl i32.add i32.load offset=96 - local.set $2 + local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 + local.get $4 + i32.store offset=8 + local.get $4 if - local.get $2 + local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 - local.get $4 local.get $3 + local.get $6 i32.const 4 i32.shl i32.add @@ -320,30 +310,37 @@ local.get $0 i32.load i32.const 1 - local.get $3 + local.get $6 i32.shl i32.or i32.store local.get $0 - local.get $3 + local.get $6 i32.const 2 i32.shl i32.add + local.tee $0 local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add i32.load offset=4 i32.const 1 - local.get $4 + local.get $3 i32.shl i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 local.tee $2 @@ -366,7 +363,7 @@ local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -376,23 +373,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -403,152 +401,143 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (; 4 ;) (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT + i32.const 1 + memory.size local.tee $0 - i32.eqz - if + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 272 - local.tee $0 + local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - i32.const 1840 + i32.lt_s + else i32.const 0 - i32.store - loop $for-loop|0 + end + if + unreachable + end + i32.const 1248 + i32.const 0 + i32.store + i32.const 2816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.const 23 - i32.lt_u - if - local.get $1 - i32.const 2 - i32.shl - i32.const 272 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.const 272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 2 + i32.shl + i32.const 1248 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 272 - i32.const 1856 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 272 - global.set $~lib/rt/tlsf/ROOT end - local.get $0 + i32.const 1248 + i32.const 2820 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1248 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 32 - i32.const 96 - i32.const 457 - i32.const 29 + i32.const 1056 + i32.const 1120 + i32.const 461 + i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 local.get $1 i32.const 256 i32.lt_u - if (result i32) + if local.get $1 i32.const 4 i32.shr_u local.set $1 - i32.const 0 else + i32.const 31 local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -558,8 +547,10 @@ local.get $2 i32.const 7 i32.sub + local.set $2 end - local.tee $2 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add @@ -592,19 +583,19 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $0 local.get $1 i32.ctz - local.tee $0 + local.tee $1 + i32.const 4 + i32.shl + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load offset=4 i32.ctz - local.get $0 - i32.const 4 - i32.shl i32.add i32.const 2 i32.shl @@ -615,475 +606,201 @@ end end ) - (func $~lib/rt/pure/markGray (; 7 ;) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - i32.const 268435456 - i32.ne + local.get $2 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u if - local.get $0 local.get $1 - i32.const -1879048193 + local.get $2 + local.get $3 + i32.const 2 i32.and - i32.const 268435456 i32.or - i32.store offset=4 + i32.store + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store local.get $0 - i32.const 16 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 i32.add - i32.const 2 - call $~lib/rt/__visit_members + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store end ) - (func $~lib/rt/tlsf/freeBlock (; 8 ;) (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 10 ;) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 + call $~lib/rt/tlsf/prepareSize + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq + i32.eqz if - local.get $1 - i32.const 268435455 + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - i32.gt_u + i32.lt_s if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $1 + end + local.get $1 + i32.load + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add ) - (func $~lib/rt/pure/collectWhite (; 11 ;) (param $0 i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end + i32.eqz + i32.const 0 + local.get $0 + select if - local.get $0 local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock + i32.load + drop end + local.get $1 ) - (func $~lib/rt/pure/__collect (; 12 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $for-loop|0 - local.get $3 + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 local.get $0 - i32.lt_u - if - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - local.set $0 - loop $for-loop|2 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - i32.load - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $5 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/tlsf/growMemory (; 13 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - memory.size - local.tee $2 - i32.const 16 - local.get $0 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - i32.ne - i32.shl - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.set $3 - end - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (; 17 ;) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 268 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - end - local.get $0 - ) - (func $~lib/rt/__typeinfo (; 18 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 240 - i32.load - i32.gt_u - if - i32.const 144 - i32.const 208 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 244 - i32.add - i32.load - ) - (func $~lib/memory/memory.copy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $3 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 + local.get $1 i32.lt_u if local.get $1 @@ -1099,32 +816,32 @@ i32.const 7 i32.and if - local.get $3 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $4 local.get $0 local.tee $2 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $1 local.get $2 - local.get $4 + local.get $3 i32.load8_u i32.store8 br $while-continue|0 end end loop $while-continue|1 - local.get $3 + local.get $4 i32.const 8 i32.ge_u if @@ -1132,10 +849,10 @@ local.get $1 i64.load i64.store - local.get $3 + local.get $4 i32.const 8 i32.sub - local.set $3 + local.set $4 local.get $0 i32.const 8 i32.add @@ -1149,7 +866,7 @@ end end loop $while-continue|2 - local.get $3 + local.get $4 if local.get $0 local.tee $2 @@ -1157,18 +874,18 @@ i32.add local.set $0 local.get $1 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $1 local.get $2 - local.get $4 + local.get $3 i32.load8_u i32.store8 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $4 br $while-continue|2 end end @@ -1183,22 +900,22 @@ if loop $while-continue|3 local.get $0 - local.get $3 + local.get $4 i32.add i32.const 7 i32.and if - local.get $3 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.tee $3 + local.tee $4 local.get $0 i32.add local.get $1 - local.get $3 + local.get $4 i32.add i32.load8_u i32.store8 @@ -1206,272 +923,369 @@ end end loop $while-continue|4 - local.get $3 + local.get $4 i32.const 8 i32.ge_u if - local.get $3 - i32.const 8 - i32.sub - local.tee $3 + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + call $~lib/memory/memory.copy + local.get $1 + i32.const 1244 + i32.ge_u + if + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $2 + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1244 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $5 + i32.const -4 + i32.and + local.tee $3 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $7 + i32.const 1 + i32.and + if + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $4 + i32.ge_u + if + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock local.get $0 - i32.add - local.get $1 local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 + local.get $5 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 end end + local.get $2 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - loop $while-continue|5 - local.get $3 - if - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $0 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end + local.get $2 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock end end + local.get $0 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__free (; 20 ;) (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - i32.const 16 - i32.sub + i32.const 1244 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/growRoots (; 21 ;) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 local.get $0 - i32.const 256 + i32.const 1073741804 i32.gt_u - select + if + i32.const 1056 + i32.const 1184 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $1 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 local.get $2 - call $~lib/memory/memory.copy local.get $1 - if - local.get $1 - call $~lib/rt/tlsf/__free - end - local.get $0 - global.set $~lib/rt/pure/ROOTS - local.get $0 + i32.store offset=12 local.get $2 - i32.add - global.set $~lib/rt/pure/CUR local.get $0 + i32.store offset=16 local.get $3 + i32.const 16 i32.add - global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 22 ;) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 + i32.const 1056 + i32.const 1184 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $0 - i32.store + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub local.get $1 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__realloc + local.tee $4 i32.const 4 + i32.sub + local.tee $0 + local.get $3 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $4 + i32.const 16 i32.add - global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 23 ;) (param $0 i32) + (func $~lib/rt/pure/__retain (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 268435455 - i32.and - local.tee $2 - i32.const 1 - i32.eq + i32.const 1244 + i32.gt_u if local.get $0 - i32.const 16 - i32.add + i32.const 20 + i32.sub + local.tee $1 + local.get $1 + i32.load offset=4 i32.const 1 - call $~lib/rt/__visit_members + i32.add + i32.store offset=4 local.get $1 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 - i32.and - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.get $1 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - end + i32.load + drop end + local.get $0 ) - (func $~lib/rt/pure/__release (; 24 ;) (param $0 i32) + (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 268 + i32.const 1244 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/__visit (; 25 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/decrement (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 268 - i32.lt_u - if - return - end + i32.load + drop local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.tee $1 + i32.const 1 + i32.eq + if + block $__inlined_func$~lib/rt/__visit_members + block $switch$1$default + block $switch$1$case$4 + local.get $0 + i32.const 12 + i32.add + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default + end + local.get $0 + i32.load offset=20 + local.tee $2 + if + local.get $2 + local.tee $1 + i32.const 1244 + i32.ge_u + if local.get $1 - i32.const 1 - i32.ne - if - local.get $1 - i32.const 2 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 $break|0 - end - local.get $0 + i32.const 20 + i32.sub call $~lib/rt/pure/decrement - br $break|0 end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack + br $__inlined_func$~lib/rt/__visit_members end - br $break|0 + unreachable end + global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/pure/collectWhite - end - ) - (func $~lib/rt/__visit_members (; 26 ;) (param $0 i32) (param $1 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end + call $~lib/rt/tlsf/freeBlock + else local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 end - unreachable ) ) diff --git a/tests/allocators/rt-full/package.json b/tests/allocators/rt-full/package.json index 1d7e0b7194..0a42816c81 100644 --- a/tests/allocators/rt-full/package.json +++ b/tests/allocators/rt-full/package.json @@ -2,7 +2,7 @@ "private": true, "scripts": { "build": "npm run build:untouched && npm run build:optimized", - "build:untouched": "node ../../../bin/asc assembly/index.ts -t untouched.wat -b untouched.wasm --runtime full --sourceMap --measure", + "build:untouched": "node ../../../bin/asc assembly/index.ts -t untouched.wat -b untouched.wasm --runtime full --sourceMap --measure --debug", "build:optimized": "node ../../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --runtime full --sourceMap --measure --noAssert --optimize" } } diff --git a/tests/allocators/rt-full/untouched.wat b/tests/allocators/rt-full/untouched.wat index d773e12207..bdd2067cfe 100644 --- a/tests/allocators/rt-full/untouched.wat +++ b/tests/allocators/rt-full/untouched.wat @@ -1,39 +1,34 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 240) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 288) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 192) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 288)) - (global $~lib/heap/__heap_base i32 (i32.const 316)) + (global $~lib/rt/__rtti_base i32 (i32.const 192)) + (global $~lib/heap/__heap_base i32 (i32.const 220)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -47,6 +42,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -54,8 +51,8 @@ if i32.const 0 i32.const 32 - i32.const 277 - i32.const 13 + i32.const 272 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -65,12 +62,14 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -79,8 +78,8 @@ if i32.const 0 i32.const 32 - i32.const 279 - i32.const 13 + i32.const 274 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -117,6 +116,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -131,28 +132,28 @@ if i32.const 0 i32.const 32 - i32.const 292 - i32.const 13 + i32.const 287 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -243,7 +244,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -256,19 +257,23 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if i32.const 0 i32.const 32 - i32.const 205 - i32.const 13 + i32.const 200 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -276,15 +281,15 @@ if i32.const 0 i32.const 32 - i32.const 207 - i32.const 13 + i32.const 202 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -306,7 +311,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -316,7 +321,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -333,7 +338,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -362,6 +367,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -369,8 +376,8 @@ if i32.const 0 i32.const 32 - i32.const 228 - i32.const 15 + i32.const 223 + i32.const 16 call $~lib/builtins/abort unreachable end @@ -379,7 +386,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -389,7 +396,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -418,12 +425,14 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -432,13 +441,15 @@ if i32.const 0 i32.const 32 - i32.const 243 - i32.const 13 + i32.const 238 + i32.const 14 call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -448,8 +459,8 @@ if i32.const 0 i32.const 32 - i32.const 244 - i32.const 13 + i32.const 239 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -491,6 +502,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -505,8 +518,8 @@ if i32.const 0 i32.const 32 - i32.const 260 - i32.const 13 + i32.const 255 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -529,15 +542,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -593,7 +606,7 @@ local.get $7 i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -601,34 +614,38 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 i32.const 32 - i32.const 386 - i32.const 4 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -638,17 +655,19 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 396 - i32.const 15 + i32.const 387 + i32.const 16 call $~lib/builtins/abort unreachable end @@ -669,6 +688,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -678,8 +699,8 @@ if i32.const 0 i32.const 32 - i32.const 408 - i32.const 4 + i32.const 400 + i32.const 5 call $~lib/builtins/abort unreachable end @@ -689,16 +710,20 @@ i32.sub local.set $6 local.get $6 - i32.const 48 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add i32.lt_u if i32.const 0 return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -714,15 +739,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -741,7 +766,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (; 4 ;) (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -754,126 +779,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const -16 - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $0 - local.get $1 - i32.const 1572 + i32.const 4 i32.add i32.const 15 i32.add @@ -881,46 +926,26 @@ i32.const -1 i32.xor i32.and - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 + i32.const 96 i32.const 32 - i32.const 457 - i32.const 29 + i32.const 461 + i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -941,7 +966,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -980,6 +1005,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -994,8 +1021,8 @@ if i32.const 0 i32.const 32 - i32.const 338 - i32.const 13 + i32.const 333 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -1052,13 +1079,15 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if i32.const 0 i32.const 32 - i32.const 351 - i32.const 17 + i32.const 346 + i32.const 18 call $~lib/builtins/abort unreachable end @@ -1103,412 +1132,146 @@ end local.get $7 ) - (func $~lib/rt/pure/markGray (; 7 ;) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne + i32.const 536870910 + i32.lt_u if - local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub i32.add - i32.const 2 - call $~lib/rt/__visit_members + local.set $1 end - ) - (func $~lib/rt/tlsf/freeBlock (; 8 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load + memory.size local.set $2 local.get $1 + i32.const 4 local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 i32.const 16 - i32.add + i32.shl i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 10 ;) (param $0 i32) - (local $1 i32) + i32.sub local.get $0 - i32.load offset=4 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add local.set $1 local.get $1 - i32.const 1879048192 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor i32.and - i32.const 268435456 - i32.eq + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s if - local.get $1 - i32.const 268435455 - i32.and + local.get $4 + memory.grow i32.const 0 - i32.gt_u + i32.lt_s if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members + unreachable end end - ) - (func $~lib/rt/pure/collectWhite (; 11 ;) (param $0 i32) - (local $1 i32) + memory.size + local.set $7 local.get $0 - i32.load offset=4 - local.set $1 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 1879048192 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else + i32.eqz + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 360 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u if - local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + local.get $2 + local.get $3 + i32.const 2 i32.and - i32.const 0 i32.or - i32.store offset=4 - local.get $0 - i32.const 16 + i32.store + local.get $1 + i32.const 4 i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect (; 12 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $for-loop|0 local.get $2 - local.get $3 - i32.lt_u - local.set $4 + i32.add + local.set $5 + local.get $5 local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $1 - local.get $5 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $6 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/freeBlock - else - local.get $5 - local.get $6 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - local.get $0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - call $~lib/rt/pure/scan - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/tlsf/growMemory (; 13 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1527,7 +1290,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1539,7 +1302,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1556,204 +1319,119 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 490 - i32.const 13 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 502 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 507 - i32.const 17 - call $~lib/builtins/abort - unreachable - end + i32.const 32 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - local.get $4 + i32.const 1 + drop + local.get $3 i32.load - i32.const -4 + i32.const 3 + i32.const -1 + i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 510 - i32.const 13 + i32.const 500 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock - local.get $4 + i32.const 0 + drop + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock - i32.const 16 + i32.const 4 i32.add ) - (func $~lib/rt/pure/increment (; 17 ;) (param $0 i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 + i32.const 4 + i32.sub local.set $1 - local.get $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else i32.const 0 - i32.const 144 - i32.const 107 - i32.const 13 - call $~lib/builtins/abort - unreachable end - ) - (func $~lib/rt/pure/__retain (; 18 ;) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 end - local.get $0 - ) - (func $~lib/rt/__typeinfo (; 19 ;) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u + i32.eqz if - i32.const 192 - i32.const 256 - i32.const 22 - i32.const 27 + i32.const 0 + i32.const 32 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load ) - (func $~lib/util/memory/memcpy (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2777,7 +2455,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2796,20 +2474,21 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 0 + i32.const 1 + i32.lt_s + drop local.get $4 - local.get $3 - i32.add local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub i32.le_u - if (result i32) - i32.const 1 - else - local.get $5 - local.get $3 - i32.add - local.get $4 - i32.le_u - end if local.get $5 local.get $4 @@ -2821,6 +2500,10 @@ local.get $4 i32.lt_u if + i32.const 0 + i32.const 2 + i32.lt_s + drop local.get $4 i32.const 7 i32.and @@ -2916,6 +2599,10 @@ end end else + i32.const 0 + i32.const 2 + i32.lt_s + drop local.get $4 i32.const 7 i32.and @@ -2997,129 +2684,358 @@ end end ) - (func $~lib/rt/tlsf/checkUsedBlock (; 22 ;) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + i32.const 0 + drop local.get $0 - i32.const 16 - i32.sub - local.set $1 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock end - if (result i32) + local.get $3 + ) + (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $5 + local.get $3 + local.get $5 + i32.le_u + if + local.get $0 local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else + local.get $3 + call $~lib/rt/tlsf/prepareBlock i32.const 0 + drop + local.get $1 + return + end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.load + local.set $8 + local.get $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $7 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $6 + i32.or + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz + call $~lib/rt/tlsf/moveBlock else - i32.const 0 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 32 - i32.const 567 - i32.const 2 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - ) - (func $~lib/rt/tlsf/__free (; 23 ;) (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/growRoots (; 24 ;) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 20 i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 + local.set $2 local.get $2 - local.get $3 - i32.gt_u - select + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy local.get $0 - if - local.get $0 - call $~lib/rt/tlsf/__free - end - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 + i32.const 16 + i32.sub + i32.const 16 local.get $1 i32.add - global.set $~lib/rt/pure/CUR + call $~lib/rt/tlsf/__realloc + local.set $5 local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 local.get $4 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $5 + i32.const 16 i32.add - global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 25 ;) (param $0 i32) + (func $~lib/rt/pure/increment (param $0 i32) (local $1 i32) - global.get $~lib/rt/pure/CUR + local.get $0 + i32.load offset=4 local.set $1 local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 + i32.const 0 + i32.const 160 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $0 - i32.store local.get $1 - i32.const 4 + i32.const 1 i32.add - global.set $~lib/rt/pure/CUR + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 112 + i32.const 14 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/rt/pure/decrement (; 26 ;) (param $0 i32) + (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/pure/__release (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/rt/pure/finalize (param $0 i32) + i32.const 0 + drop + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3129,6 +3045,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3137,9 +3057,9 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 115 - i32.const 13 + i32.const 160 + i32.const 122 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -3148,221 +3068,88 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members + i32.const 1 + drop + i32.const 1 + drop local.get $1 i32.const -2147483648 i32.and i32.eqz + i32.eqz if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or i32.const 0 - i32.or - i32.store offset=4 + i32.const 160 + i32.const 126 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + call $~lib/rt/pure/finalize else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 124 - i32.const 15 + i32.const 160 + i32.const 136 + i32.const 16 call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/__release (; 27 ;) (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 + local.get $2 + i32.const 1 i32.sub - call $~lib/rt/pure/decrement + i32.or + i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 28 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u if return end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const -268435456 - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - end + i32.const 1 + drop + i32.const 1 + drop + local.get $1 + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 97 - i32.const 24 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 69 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/decrement ) - (func $~lib/rt/__visit_members (; 29 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default block $switch$1$case$4 diff --git a/tests/allocators/rt-stub/assembly/index.ts b/tests/allocators/rt-stub/assembly/index.ts index 19456ac7fd..e69de29bb2 100644 --- a/tests/allocators/rt-stub/assembly/index.ts +++ b/tests/allocators/rt-stub/assembly/index.ts @@ -1 +0,0 @@ -export { __free }; diff --git a/tests/allocators/rt-stub/optimized.wat b/tests/allocators/rt-stub/optimized.wat index d22d48f737..3783596b01 100644 --- a/tests/allocators/rt-stub/optimized.wat +++ b/tests/allocators/rt-stub/optimized.wat @@ -3,21 +3,34 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (data (i32.const 1024) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 16)) + (global $~lib/rt/__rtti_base i32 (i32.const 1024)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) (export "__release" (func $~lib/rt/stub/__release)) (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/stub/__free)) (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + ) + (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -25,6 +38,12 @@ local.tee $2 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $1 i32.gt_u if @@ -59,83 +78,376 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $3 + local.tee $2 local.get $0 - i32.const 15 + call $~lib/rt/stub/computeSize + local.tee $0 i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 + call $~lib/rt/stub/maybeGrowMemory + local.get $0 + i32.store local.get $2 - i32.const 16 - i32.gt_u - select + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub local.tee $4 + i32.load + local.tee $3 i32.add - call $~lib/rt/stub/maybeGrowMemory + i32.eq + local.set $5 + local.get $1 + call $~lib/rt/stub/computeSize + local.set $2 + local.get $1 local.get $3 + i32.gt_u + if + local.get $5 + if + local.get $1 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $2 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $4 + local.get $2 + i32.store + else + local.get $2 + local.get $3 + i32.const 1 + i32.shl + local.tee $1 + local.get $2 + local.get $1 + i32.gt_u + select + call $~lib/rt/stub/__alloc + local.tee $1 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $1 + local.set $0 + end + else + local.get $5 + if + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/stub/offset + local.get $4 + local.get $2 + i32.store + end + end + local.get $0 + ) + (func $~lib/rt/stub/__free (param $0 i32) + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $4 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub + local.get $1 + i32.const 16 + i32.add + call $~lib/rt/stub/__realloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) - (func $~lib/rt/stub/__retain (; 2 ;) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (param $0 i32) + (func $~lib/rt/stub/__release (param $0 i32) nop ) - (func $~lib/rt/stub/__collect (; 4 ;) + (func $~lib/rt/stub/__collect nop ) - (func $~lib/rt/stub/__reset (; 5 ;) + (func $~lib/rt/stub/__reset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__free (; 6 ;) (param $0 i32) - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 16 - i32.sub - local.tee $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - ) - (func $~start (; 7 ;) - i32.const 48 + (func $~start + i32.const 1052 global.set $~lib/rt/stub/startOffset - i32.const 48 + i32.const 1052 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/allocators/rt-stub/untouched.wat b/tests/allocators/rt-stub/untouched.wat index d999d766d6..5e7a0bc657 100644 --- a/tests/allocators/rt-stub/untouched.wat +++ b/tests/allocators/rt-stub/untouched.wat @@ -1,28 +1,46 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 64) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 64) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 64)) (global $~lib/heap/__heap_base i32 (i32.const 92)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) (export "__release" (func $~lib/rt/stub/__release)) (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/stub/__free)) (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) + (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -33,6 +51,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -76,130 +104,1527 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 + local.get $3 + i32.store local.get $2 ) - (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect (; 5 ;) - nop - ) - (func $~lib/rt/stub/__reset (; 6 ;) - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__free (; 7 ;) (param $0 i32) - (local $1 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end local.get $0 + i32.const 3 + i32.and i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz + i32.eq if - i32.const 0 - i32.const 32 - i32.const 70 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 i32.const 2 - call $~lib/builtins/abort - unreachable + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return end - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz + local.get $2 + i32.const 32 + i32.ge_u if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 13 - call $~lib/builtins/abort - unreachable + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end end - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq + local.get $2 + i32.const 16 + i32.and if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $~start (; 8 ;) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + local.set $4 + local.get $1 + call $~lib/rt/stub/computeSize + local.set $5 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $4 + if + local.get $1 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + local.get $5 + i32.store + else + local.get $5 + local.tee $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + call $~lib/rt/stub/__alloc + local.set $6 + local.get $6 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $6 + local.tee $0 + i32.const 4 + i32.sub + local.set $2 + end + else + local.get $4 + if + local.get $0 + local.get $5 + i32.add + global.set $~lib/rt/stub/offset + local.get $2 + local.get $5 + i32.store + end + end + local.get $0 + ) + (func $~lib/rt/stub/__free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=12 + local.set $3 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $4 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $3 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $4 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect + nop + ) + (func $~lib/rt/stub/__reset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + ) + (func $~start + global.get $~lib/heap/__heap_base + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.optimized.wat index 5898a8f83b..70cd96de07 100644 --- a/tests/compiler/abi.optimized.wat +++ b/tests/compiler/abi.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") + (data (i32.const 1036) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") (export "memory" (memory $0)) (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exported)) diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index f540d255b1..7edee1d9be 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") (table $0 1 funcref) (global $abi/condition (mut i32) (i32.const 0)) (global $abi/y (mut i32) (i32.const 0)) diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index cf2ed16137..1249b3227a 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -4,11 +4,11 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1072) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") - (data (i32.const 1136) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1200) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1248) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 1100) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") + (data (i32.const 1164) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1228) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1276) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") (table $0 1 funcref) (export "memory" (memory $0)) (export "testVar" (func $assert-nonnull/testVar)) @@ -27,8 +27,8 @@ local.get $0 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 2 i32.const 10 call $~lib/builtins/abort @@ -40,8 +40,8 @@ local.get $0 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 11 i32.const 10 call $~lib/builtins/abort @@ -56,8 +56,8 @@ local.tee $0 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 15 i32.const 10 call $~lib/builtins/abort @@ -69,8 +69,8 @@ local.get $0 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 19 i32.const 10 call $~lib/builtins/abort @@ -81,8 +81,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1152 - i32.const 1216 + i32.const 1184 + i32.const 1248 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -94,8 +94,8 @@ local.tee $0 i32.eqz if - i32.const 1264 - i32.const 1216 + i32.const 1296 + i32.const 1248 i32.const 108 i32.const 40 call $~lib/builtins/abort @@ -109,8 +109,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1152 - i32.const 1216 + i32.const 1184 + i32.const 1248 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -126,8 +126,8 @@ local.tee $0 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 23 i32.const 10 call $~lib/builtins/abort @@ -154,8 +154,8 @@ local.get $0 return end - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -180,8 +180,8 @@ local.get $0 return end - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -196,8 +196,8 @@ local.get $0 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 39 i32.const 13 call $~lib/builtins/abort @@ -216,8 +216,8 @@ local.get $1 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 44 i32.const 10 call $~lib/builtins/abort @@ -240,8 +240,8 @@ local.get $1 i32.eqz if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1120 i32.const 52 i32.const 10 call $~lib/builtins/abort diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index fbed92d254..08e62f3eab 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -6,11 +6,11 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 64) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00") - (data (i32.const 128) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 192) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 240) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") + (data (i32.const 76) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00") + (data (i32.const 140) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 204) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 252) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") (table $0 1 funcref) (global $~argumentsLength (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -43,7 +43,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 2 i32.const 10 call $~lib/builtins/abort @@ -66,7 +66,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 11 i32.const 10 call $~lib/builtins/abort @@ -91,7 +91,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 15 i32.const 10 call $~lib/builtins/abort @@ -120,8 +120,8 @@ i32.load offset=12 i32.ge_u if - i32.const 144 - i32.const 208 + i32.const 160 + i32.const 224 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -139,8 +139,8 @@ local.get $2 i32.eqz if - i32.const 256 - i32.const 208 + i32.const 272 + i32.const 224 i32.const 108 i32.const 40 call $~lib/builtins/abort @@ -159,7 +159,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 19 i32.const 10 call $~lib/builtins/abort @@ -189,8 +189,8 @@ i32.load offset=12 i32.ge_u if - i32.const 144 - i32.const 208 + i32.const 160 + i32.const 224 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -220,7 +220,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 23 i32.const 10 call $~lib/builtins/abort @@ -244,7 +244,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -258,7 +258,7 @@ local.get $2 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -270,7 +270,7 @@ local.get $2 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -296,7 +296,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -310,7 +310,7 @@ local.get $2 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -322,7 +322,7 @@ local.get $2 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -366,7 +366,7 @@ local.get $1 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 39 i32.const 13 call $~lib/builtins/abort @@ -404,7 +404,7 @@ local.get $2 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 44 i32.const 10 call $~lib/builtins/abort @@ -454,7 +454,7 @@ local.get $2 else i32.const 32 - i32.const 80 + i32.const 96 i32.const 52 i32.const 10 call $~lib/builtins/abort diff --git a/tests/compiler/bool.optimized.wat b/tests/compiler/bool.optimized.wat index c0dc44736f..c5c17e45e9 100644 --- a/tests/compiler/bool.optimized.wat +++ b/tests/compiler/bool.optimized.wat @@ -1,5 +1,5 @@ (module (memory $0 1) - (data (i32.const 1024) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") + (data (i32.const 1036) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat index 0e8c20c19e..e8981bd841 100644 --- a/tests/compiler/bool.untouched.wat +++ b/tests/compiler/bool.untouched.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00") + (data (i32.const 12) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00") (table $0 1 funcref) (global $bool/i (mut i32) (i32.const 2)) (global $bool/I (mut i64) (i64.const 2)) diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index e522385f05..98f280e958 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -8,33 +8,33 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1072) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") - (data (i32.const 1120) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\01") - (data (i32.const 1152) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") - (data (i32.const 1232) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") - (data (i32.const 1280) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") - (data (i32.const 1312) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C") - (data (i32.const 1376) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l") - (data (i32.const 1440) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\008") - (data (i32.const 1472) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00u\008") - (data (i32.const 1504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\001\006") - (data (i32.const 1536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\001\006") - (data (i32.const 1568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002") - (data (i32.const 1600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002") - (data (i32.const 1632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\003\002") - (data (i32.const 1664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004") - (data (i32.const 1696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004") - (data (i32.const 1728) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\006\004") - (data (i32.const 1760) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e") - (data (i32.const 1792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e") - (data (i32.const 1824) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d") - (data (i32.const 1856) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") - (data (i32.const 1904) "\08\00\00\00\01\00\00\00\0b\00\00\00\08\00\00\00\02") - (data (i32.const 1936) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03") + (data (i32.const 1040) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1100) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data (i32.const 1148) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01") + (data (i32.const 1180) "8\00\00\00\01\00\00\00\00\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") + (data (i32.const 1260) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") + (data (i32.const 1308) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") + (data (i32.const 1356) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") + (data (i32.const 1404) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C") + (data (i32.const 1436) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data (i32.const 1468) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l") + (data (i32.const 1500) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\008") + (data (i32.const 1532) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00u\008") + (data (i32.const 1564) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\001\006") + (data (i32.const 1596) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\001\006") + (data (i32.const 1628) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002") + (data (i32.const 1660) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\003\002") + (data (i32.const 1692) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\003\002") + (data (i32.const 1724) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\006\004") + (data (i32.const 1756) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\006\004") + (data (i32.const 1788) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\006\004") + (data (i32.const 1820) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e") + (data (i32.const 1852) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e") + (data (i32.const 1884) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d") + (data (i32.const 1916) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") + (data (i32.const 1964) "\08\00\00\00\01\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\02") + (data (i32.const 1996) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03") (table $0 4 funcref) (elem (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) (global $builtins/i (mut i32) (i32.const 0)) @@ -51,9 +51,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -495,14 +495,14 @@ global.set $builtins/F i32.const 1 i32.const 2 - i32.const 1136 + i32.const 1168 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -510,38 +510,38 @@ end i32.const 2 i32.const 3 - i32.const 1136 + i32.const 1168 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 5 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 295 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 296 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 - i32.const 1168 + i32.const 1200 + i32.const 1200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 299 i32.const 1 call $~lib/builtins/abort @@ -620,7 +620,7 @@ call $~lib/atomics/Atomics.isLockFree if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 475 i32.const 1 call $~lib/builtins/abort @@ -632,7 +632,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 476 i32.const 1 call $~lib/builtins/abort @@ -644,7 +644,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 477 i32.const 1 call $~lib/builtins/abort @@ -654,7 +654,7 @@ call $~lib/atomics/Atomics.isLockFree if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 478 i32.const 1 call $~lib/builtins/abort @@ -666,7 +666,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 479 i32.const 1 call $~lib/builtins/abort @@ -676,7 +676,7 @@ call $~lib/atomics/Atomics.isLockFree if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 480 i32.const 1 call $~lib/builtins/abort @@ -686,13 +686,13 @@ call $~lib/atomics/Atomics.isLockFree if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1248 + i32.const 1280 i32.const 5 f64.const 0 f64.const 0 @@ -700,241 +700,241 @@ f64.const 26 f64.const 26 call $~lib/builtins/trace - i32.const 1328 - i32.const 1328 + i32.const 1376 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + i32.const 1376 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 499 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1360 + i32.const 1424 + i32.const 1424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 500 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 1392 + i32.const 1456 + i32.const 1456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1424 - i32.const 1424 + i32.const 1488 + i32.const 1488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1456 - i32.const 1456 + i32.const 1520 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 503 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1488 - i32.const 1488 + i32.const 1552 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 504 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1520 - i32.const 1520 + i32.const 1584 + i32.const 1584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 505 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1552 - i32.const 1552 + i32.const 1616 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 506 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1584 - i32.const 1584 + i32.const 1648 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 507 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1616 - i32.const 1616 + i32.const 1680 + i32.const 1680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 508 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1648 - i32.const 1648 + i32.const 1712 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 509 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1680 - i32.const 1680 + i32.const 1744 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 510 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1776 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 511 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1744 - i32.const 1744 + i32.const 1808 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 512 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1776 - i32.const 1776 + i32.const 1840 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 513 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 + i32.const 1872 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 514 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1840 - i32.const 1840 + i32.const 1904 + i32.const 1904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 515 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 1392 + i32.const 1456 + i32.const 1456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 516 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + i32.const 1376 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 517 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 481b988d19..ec4ce965d8 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -9,33 +9,33 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 64) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00") - (data (i32.const 112) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 144) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00") - (data (i32.const 224) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00") - (data (i32.const 272) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00") - (data (i32.const 304) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n\00") - (data (i32.const 336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C\00") - (data (i32.const 368) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") - (data (i32.const 432) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\008\00") - (data (i32.const 464) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00u\008\00") - (data (i32.const 496) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\001\006\00") - (data (i32.const 528) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\001\006\00") - (data (i32.const 560) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") - (data (i32.const 592) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002\00") - (data (i32.const 624) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\003\002\00") - (data (i32.const 656) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004\00") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") - (data (i32.const 720) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\006\004\00") - (data (i32.const 752) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e\00") - (data (i32.const 784) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e\00") - (data (i32.const 816) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d\00") - (data (i32.const 848) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00") - (data (i32.const 896) "\08\00\00\00\01\00\00\00\0b\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 928) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 76) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00") + (data (i32.const 124) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 156) "8\00\00\00\01\00\00\00\00\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00") + (data (i32.const 236) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00") + (data (i32.const 284) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00") + (data (i32.const 332) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n\00") + (data (i32.const 380) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C\00") + (data (i32.const 412) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data (i32.const 444) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") + (data (i32.const 476) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\008\00") + (data (i32.const 508) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00u\008\00") + (data (i32.const 540) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\001\006\00") + (data (i32.const 572) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\001\006\00") + (data (i32.const 604) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") + (data (i32.const 636) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\003\002\00") + (data (i32.const 668) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\003\002\00") + (data (i32.const 700) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\006\004\00") + (data (i32.const 732) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") + (data (i32.const 764) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\006\004\00") + (data (i32.const 796) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e\00") + (data (i32.const 828) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e\00") + (data (i32.const 860) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d\00") + (data (i32.const 892) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00") + (data (i32.const 940) "\08\00\00\00\01\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 972) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") (table $0 4 funcref) (elem (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) (global $builtins/b (mut i32) (i32.const 0)) @@ -48,7 +48,7 @@ (global $builtins/u (mut i32) (i32.const 0)) (global $builtins/U (mut i64) (i64.const 0)) (global $builtins/s (mut i32) (i32.const 0)) - (global $builtins/fn (mut i32) (i32.const 128)) + (global $builtins/fn (mut i32) (i32.const 144)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) @@ -104,9 +104,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -313,7 +313,7 @@ i32.const 2 ) (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString (param $0 i32) (result i32) - i32.const 160 + i32.const 176 ) (func $~lib/atomics/Atomics.isLockFree (param $0 i32) (result i32) local.get $0 @@ -458,7 +458,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 51 i32.const 20 call $~lib/builtins/abort @@ -478,7 +478,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 52 i32.const 20 call $~lib/builtins/abort @@ -494,7 +494,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 53 i32.const 20 call $~lib/builtins/abort @@ -590,7 +590,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 76 i32.const 20 call $~lib/builtins/abort @@ -611,7 +611,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 77 i32.const 21 call $~lib/builtins/abort @@ -632,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 78 i32.const 21 call $~lib/builtins/abort @@ -648,7 +648,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 79 i32.const 21 call $~lib/builtins/abort @@ -664,7 +664,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 80 i32.const 21 call $~lib/builtins/abort @@ -680,7 +680,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 81 i32.const 21 call $~lib/builtins/abort @@ -746,7 +746,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 96 i32.const 20 call $~lib/builtins/abort @@ -767,7 +767,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 97 i32.const 21 call $~lib/builtins/abort @@ -788,7 +788,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 98 i32.const 21 call $~lib/builtins/abort @@ -804,7 +804,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 99 i32.const 21 call $~lib/builtins/abort @@ -820,7 +820,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 100 i32.const 21 call $~lib/builtins/abort @@ -836,7 +836,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 101 i32.const 21 call $~lib/builtins/abort @@ -954,7 +954,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 131 i32.const 25 call $~lib/builtins/abort @@ -970,7 +970,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 132 i32.const 25 call $~lib/builtins/abort @@ -986,7 +986,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 133 i32.const 25 call $~lib/builtins/abort @@ -1002,7 +1002,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 134 i32.const 26 call $~lib/builtins/abort @@ -1161,7 +1161,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 173 i32.const 25 call $~lib/builtins/abort @@ -1177,7 +1177,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 174 i32.const 25 call $~lib/builtins/abort @@ -1193,7 +1193,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 175 i32.const 25 call $~lib/builtins/abort @@ -1516,7 +1516,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -1532,7 +1532,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 295 i32.const 1 call $~lib/builtins/abort @@ -1546,7 +1546,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 296 i32.const 1 call $~lib/builtins/abort @@ -1559,7 +1559,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 297 i32.const 1 call $~lib/builtins/abort @@ -1572,7 +1572,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 298 i32.const 1 call $~lib/builtins/abort @@ -1581,12 +1581,12 @@ global.get $builtins/fn call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString local.tee $1 - i32.const 160 + i32.const 176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 299 i32.const 1 call $~lib/builtins/abort @@ -2110,7 +2110,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 475 i32.const 1 call $~lib/builtins/abort @@ -2123,7 +2123,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 476 i32.const 1 call $~lib/builtins/abort @@ -2136,7 +2136,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 477 i32.const 1 call $~lib/builtins/abort @@ -2149,7 +2149,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 478 i32.const 1 call $~lib/builtins/abort @@ -2162,7 +2162,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 479 i32.const 1 call $~lib/builtins/abort @@ -2175,7 +2175,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 480 i32.const 1 call $~lib/builtins/abort @@ -2188,7 +2188,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 481 i32.const 1 call $~lib/builtins/abort @@ -2204,7 +2204,7 @@ local.set $9 i32.const 26 local.set $10 - i32.const 240 + i32.const 256 i32.const 5 local.get $6 f64.convert_i32_u @@ -2222,8 +2222,8 @@ i32.eq i32.eqz if - i32.const 288 - i32.const 80 + i32.const 304 + i32.const 96 i32.const 491 i32.const 3 call $~lib/builtins/abort @@ -2235,7 +2235,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 492 i32.const 3 call $~lib/builtins/abort @@ -2247,7 +2247,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 493 i32.const 3 call $~lib/builtins/abort @@ -2259,247 +2259,247 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 494 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 320 + i32.const 352 + i32.const 352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 320 + i32.const 352 + i32.const 352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 499 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 352 - i32.const 352 + i32.const 400 + i32.const 400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 500 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 384 - i32.const 384 + i32.const 432 + i32.const 432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 416 - i32.const 416 + i32.const 464 + i32.const 464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 448 - i32.const 448 + i32.const 496 + i32.const 496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 503 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 480 - i32.const 480 + i32.const 528 + i32.const 528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 504 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 512 - i32.const 512 + i32.const 560 + i32.const 560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 505 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 544 - i32.const 544 + i32.const 592 + i32.const 592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 506 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 576 - i32.const 576 + i32.const 624 + i32.const 624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 507 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 608 - i32.const 608 + i32.const 656 + i32.const 656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 508 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 640 - i32.const 640 + i32.const 688 + i32.const 688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 509 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 672 - i32.const 672 + i32.const 720 + i32.const 720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 510 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 704 - i32.const 704 + i32.const 752 + i32.const 752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 511 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 736 - i32.const 736 + i32.const 784 + i32.const 784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 512 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 768 - i32.const 768 + i32.const 816 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 513 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 848 + i32.const 848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 514 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 832 - i32.const 832 + i32.const 880 + i32.const 880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 515 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 384 - i32.const 384 + i32.const 432 + i32.const 432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 516 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 320 + i32.const 352 + i32.const 352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 517 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat index e17b0da466..63c71eebcf 100644 --- a/tests/compiler/call-inferred.optimized.wat +++ b/tests/compiler/call-inferred.optimized.wat @@ -1,5 +1,5 @@ (module (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") + (data (i32.const 1036) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index 3786633dfe..caf459e8ae 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -6,7 +6,7 @@ (type $f64_=>_f64 (func (param f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00") + (data (i32.const 12) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00") (table $0 1 funcref) (global $~argumentsLength (mut i32) (i32.const 0)) (export "memory" (memory $0)) diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index fa906406bf..73e51e9867 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -4,8 +4,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") - (data (i32.const 1072) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1036) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") + (data (i32.const 1100) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") (table $0 2 funcref) (elem (i32.const 1) $call-optional/opt@varargs) (global $~argumentsLength (mut i32) (i32.const 0)) @@ -50,7 +50,7 @@ call $call-optional/opt@varargs if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -66,7 +66,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -80,7 +80,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -91,12 +91,12 @@ i32.const 3 i32.const 0 i32.const 0 - i32.const 1088 + i32.const 1120 i32.load call_indirect (type $i32_i32_i32_=>_i32) if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -107,14 +107,14 @@ i32.const 3 i32.const 4 i32.const 0 - i32.const 1088 + i32.const 1120 i32.load call_indirect (type $i32_i32_i32_=>_i32) i32.const 5 i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -125,14 +125,14 @@ i32.const 3 i32.const 4 i32.const 5 - i32.const 1088 + i32.const 1120 i32.load call_indirect (type $i32_i32_i32_=>_i32) i32.const 12 i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 7e7cf16788..55247709cb 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -4,12 +4,12 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00") - (data (i32.const 64) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 12) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00") + (data (i32.const 76) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $call-optional/opt@varargs) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $call-optional/optIndirect (mut i32) (i32.const 80)) + (global $call-optional/optIndirect (mut i32) (i32.const 96)) (export "memory" (memory $0)) (start $~start) (func $call-optional/opt (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 1013cc11c3..1514c65000 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,53 +1,57 @@ (module (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") + (data (i32.const 1036) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -55,16 +59,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -73,32 +77,51 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~start (local $0 i32) - i32.const 1072 + i32.const 1084 global.set $~lib/rt/stub/offset i32.const 8 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 2 i32.store offset=4 @@ -107,7 +130,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -119,7 +142,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -131,7 +154,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -143,7 +166,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -155,7 +178,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -167,7 +190,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -175,7 +198,7 @@ end i32.const 8 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 2 i32.store offset=4 @@ -184,7 +207,7 @@ if i32.const 4 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -196,7 +219,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 38 i32.const 5 call $~lib/builtins/abort @@ -208,7 +231,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -220,7 +243,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -232,7 +255,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -240,13 +263,13 @@ end i32.const 8 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.eqz if i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -258,7 +281,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 56 i32.const 5 call $~lib/builtins/abort @@ -273,7 +296,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -285,7 +308,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -293,13 +316,13 @@ end i32.const 8 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.eqz if i32.const 4 i32.const 10 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -314,7 +337,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -326,7 +349,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -334,13 +357,13 @@ end i32.const 8 i32.const 11 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.eqz if i32.const 4 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -355,7 +378,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -367,7 +390,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 105 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index ebf78de487..a0ecc4b7ca 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -6,13 +6,26 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") + (data (i32.const 12) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 60)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -24,6 +37,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -67,60 +90,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -131,7 +161,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -159,7 +189,7 @@ if i32.const 8 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -240,7 +270,7 @@ if i32.const 4 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -255,7 +285,7 @@ if i32.const 8 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -333,7 +363,7 @@ if i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -361,7 +391,7 @@ if i32.const 8 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -413,7 +443,7 @@ if i32.const 4 i32.const 10 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -428,7 +458,7 @@ if i32.const 8 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -480,7 +510,7 @@ if i32.const 4 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -495,7 +525,7 @@ if i32.const 8 i32.const 11 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -543,12 +573,16 @@ ) (func $start:call-super global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index 28eafbd5a4..f998f1fae3 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -2,7 +2,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1024) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s") + (data (i32.const 1036) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $class-implements/A i32 (i32.const 3)) (global $class-implements/C i32 (i32.const 5)) @@ -13,22 +13,30 @@ (export "C" (global $class-implements/C)) (export "C#foo" (func $class-implements/C#foo)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -62,22 +70,26 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $class-implements/A#constructor (param $0 i32) (result i32) local.get $0 @@ -85,7 +97,7 @@ local.get $0 else i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end ) (func $class-implements/A#foo (param $0 i32) (result i32) @@ -95,17 +107,17 @@ i32.const 2 ) (func $~start - i32.const 1088 + i32.const 1100 global.set $~lib/rt/stub/offset i32.const 0 call $class-implements/A#constructor drop i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.eqz if i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop end ) diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index b7ab1b4de0..dc5e1cd767 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -6,7 +6,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00") + (data (i32.const 12) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -22,6 +22,19 @@ (export "C" (global $class-implements/C)) (export "C#foo" (func $class-implements/C#foo)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -33,6 +46,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -76,60 +99,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -140,7 +170,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -155,7 +185,7 @@ if i32.const 0 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -167,7 +197,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -181,12 +211,16 @@ ) (func $start:class-implements global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 9f337184e4..f0254b7823 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -7,15 +7,15 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00A") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00B") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C") - (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00F") - (data (i32.const 1232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00B") - (data (i32.const 1264) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00C") - (global $class-overloading/which (mut i32) (i32.const 1040)) + (data (i32.const 1040) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00A") + (data (i32.const 1100) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00B") + (data (i32.const 1132) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data (i32.const 1196) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C") + (data (i32.const 1228) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00F") + (data (i32.const 1260) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00B") + (data (i32.const 1292) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00C") + (global $class-overloading/which (mut i32) (i32.const 1056)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $class-overloading/a (mut i32) (i32.const 0)) (global $class-overloading/ia (mut i32) (i32.const 0)) @@ -23,22 +23,30 @@ (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -72,29 +80,33 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $class-overloading/B#constructor (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -102,14 +114,14 @@ local.get $0 else i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -222,21 +234,21 @@ i32.const 0 ) (func $class-overloading/C#a - i32.const 1088 + i32.const 1120 global.set $class-overloading/which - i32.const 1088 - i32.const 1088 + i32.const 1120 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1184 + i32.const 1216 global.set $class-overloading/which ) (func $class-overloading/D#constructor (param $0 i32) (result i32) @@ -245,7 +257,7 @@ local.get $0 else i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end call $class-overloading/B#constructor ) @@ -255,12 +267,12 @@ local.get $0 else i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end call $class-overloading/D#constructor ) (func $start:class-overloading - i32.const 1296 + i32.const 1324 global.set $~lib/rt/stub/offset i32.const 0 call $class-overloading/B#constructor @@ -268,125 +280,125 @@ global.get $class-overloading/a call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $class-overloading/B#constructor drop - i32.const 1040 + i32.const 1056 global.set $class-overloading/which call $class-overloading/C#a global.get $class-overloading/which - i32.const 1184 + i32.const 1216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which - i32.const 1184 + i32.const 1216 global.set $class-overloading/which - i32.const 1184 - i32.const 1184 + i32.const 1216 + i32.const 1216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which - i32.const 1184 + i32.const 1216 global.set $class-overloading/which - i32.const 1184 - i32.const 1184 + i32.const 1216 + i32.const 1216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1184 + i32.const 1216 global.set $class-overloading/which - i32.const 1184 - i32.const 1184 + i32.const 1216 + i32.const 1216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -395,49 +407,49 @@ i32.const 0 call $class-overloading/D#constructor global.set $class-overloading/a - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -446,12 +458,12 @@ global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -460,49 +472,49 @@ i32.const 0 call $class-overloading/E#constructor global.set $class-overloading/a - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -511,118 +523,118 @@ global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1088 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $class-overloading/E#constructor global.set $class-overloading/a - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 1216 + i32.const 1248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1216 + i32.const 1248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 140 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1216 + i32.const 1248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/a call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 1216 + i32.const 1248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 146 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 10 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new global.set $class-overloading/ia - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/ia call $class-overloading/IA#foo@virtual global.get $class-overloading/which - i32.const 1248 + i32.const 1280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 162 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new global.set $class-overloading/ic - i32.const 1040 + i32.const 1056 global.set $class-overloading/which global.get $class-overloading/ic call $class-overloading/IA#foo@virtual global.get $class-overloading/which - i32.const 1280 + i32.const 1312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -664,18 +676,18 @@ end br $default end - i32.const 1088 + i32.const 1120 global.set $class-overloading/which return end call $class-overloading/C#a return end - i32.const 1216 + i32.const 1248 global.set $class-overloading/which return end - i32.const 1056 + i32.const 1088 global.set $class-overloading/which ) (func $class-overloading/A#b@virtual (param $0 i32) @@ -703,19 +715,19 @@ end br $default end - i32.const 1088 + i32.const 1120 global.set $class-overloading/which return end - i32.const 1184 + i32.const 1216 global.set $class-overloading/which return end - i32.const 1216 + i32.const 1248 global.set $class-overloading/which return end - i32.const 1056 + i32.const 1088 global.set $class-overloading/which ) (func $class-overloading/IA#foo@virtual (param $0 i32) @@ -735,11 +747,11 @@ br_if $case1 br $default end - i32.const 1248 + i32.const 1280 global.set $class-overloading/which return end - i32.const 1280 + i32.const 1312 global.set $class-overloading/which return end diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index ff606fff0b..93515a6fda 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) @@ -8,14 +8,14 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00A\00") - (data (i32.const 64) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00B\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 160) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C\00") - (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00F\00") - (data (i32.const 224) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00B\00") - (data (i32.const 256) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00C\00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00A\00") + (data (i32.const 76) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00B\00") + (data (i32.const 108) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 172) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C\00") + (data (i32.const 204) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00F\00") + (data (i32.const 236) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00B\00") + (data (i32.const 268) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00C\00") (table $0 1 funcref) (global $class-overloading/which (mut i32) (i32.const 32)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -26,9 +26,22 @@ (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 276)) + (global $~lib/heap/__heap_base i32 (i32.const 292)) (export "_start" (func $~start)) (export "memory" (memory $0)) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -40,6 +53,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -83,60 +106,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -147,7 +177,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -159,7 +189,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -173,7 +203,7 @@ ) (func $class-overloading/A#a (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 48 + i32.const 64 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -182,9 +212,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -389,7 +419,7 @@ ) (func $class-overloading/A#b (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 48 + i32.const 64 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -398,7 +428,7 @@ ) (func $class-overloading/A#get:c (param $0 i32) (result i32) (local $1 i32) - i32.const 48 + i32.const 64 local.set $1 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -408,7 +438,7 @@ ) (func $class-overloading/A#set:c (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 48 + i32.const 64 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -421,7 +451,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -432,7 +462,7 @@ ) (func $class-overloading/B#a (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 80 + i32.const 96 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -445,18 +475,18 @@ local.get $1 call $class-overloading/B#a global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 176 + i32.const 192 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -465,7 +495,7 @@ ) (func $class-overloading/C#b (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 176 + i32.const 192 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -474,7 +504,7 @@ ) (func $class-overloading/C#get:c (param $0 i32) (result i32) (local $1 i32) - i32.const 176 + i32.const 192 local.set $1 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -484,7 +514,7 @@ ) (func $class-overloading/C#set:c (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 176 + i32.const 192 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -497,7 +527,7 @@ if i32.const 0 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -512,7 +542,7 @@ if i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -527,7 +557,7 @@ if i32.const 0 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -542,7 +572,7 @@ if i32.const 0 i32.const 10 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -557,7 +587,7 @@ if i32.const 0 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -566,12 +596,16 @@ (func $start:class-overloading (local $0 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -582,12 +616,12 @@ i32.const 1 call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -603,12 +637,12 @@ i32.const 1 call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -624,12 +658,12 @@ call $class-overloading/A#get:c@virtual drop global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -645,12 +679,12 @@ i32.const 1 call $class-overloading/A#set:c@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -669,12 +703,12 @@ i32.const 1 call $class-overloading/C#a global.get $class-overloading/which - i32.const 176 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -690,12 +724,12 @@ i32.const 1 call $class-overloading/C#b global.get $class-overloading/which - i32.const 176 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -711,12 +745,12 @@ call $class-overloading/C#get:c drop global.get $class-overloading/which - i32.const 176 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -726,12 +760,12 @@ i32.const 1 call $class-overloading/C#set:c global.get $class-overloading/which - i32.const 176 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -754,12 +788,12 @@ i32.const 1 call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 89 i32.const 1 call $~lib/builtins/abort @@ -775,12 +809,12 @@ i32.const 1 call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -796,12 +830,12 @@ call $class-overloading/A#get:c@virtual drop global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -811,12 +845,12 @@ i32.const 1 call $class-overloading/A#set:c@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -839,12 +873,12 @@ i32.const 1 call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -860,12 +894,12 @@ i32.const 1 call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -881,12 +915,12 @@ call $class-overloading/A#get:c@virtual drop global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -896,12 +930,12 @@ i32.const 1 call $class-overloading/A#set:c@virtual global.get $class-overloading/which - i32.const 80 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -924,12 +958,12 @@ i32.const 1 call $class-overloading/A#a@virtual global.get $class-overloading/which - i32.const 208 + i32.const 224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -945,12 +979,12 @@ i32.const 1 call $class-overloading/A#b@virtual global.get $class-overloading/which - i32.const 208 + i32.const 224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -966,12 +1000,12 @@ call $class-overloading/A#get:c@virtual drop global.get $class-overloading/which - i32.const 208 + i32.const 224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -987,12 +1021,12 @@ i32.const 1 call $class-overloading/A#set:c@virtual global.get $class-overloading/which - i32.const 208 + i32.const 224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 146 i32.const 1 call $~lib/builtins/abort @@ -1010,12 +1044,12 @@ global.get $class-overloading/ia call $class-overloading/IA#foo@virtual global.get $class-overloading/which - i32.const 240 + i32.const 256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -1033,12 +1067,12 @@ global.get $class-overloading/ic call $class-overloading/IA#foo@virtual global.get $class-overloading/which - i32.const 272 + i32.const 288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -1057,7 +1091,7 @@ ) (func $class-overloading/F#a (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 208 + i32.const 224 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1118,7 +1152,7 @@ ) (func $class-overloading/B#b (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 80 + i32.const 96 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1127,7 +1161,7 @@ ) (func $class-overloading/F#b (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 208 + i32.const 224 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1188,7 +1222,7 @@ ) (func $class-overloading/B#get:c (param $0 i32) (result i32) (local $1 i32) - i32.const 80 + i32.const 96 local.set $1 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1198,7 +1232,7 @@ ) (func $class-overloading/F#get:c (param $0 i32) (result i32) (local $1 i32) - i32.const 208 + i32.const 224 local.set $1 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1256,7 +1290,7 @@ ) (func $class-overloading/B#set:c (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 80 + i32.const 96 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1265,7 +1299,7 @@ ) (func $class-overloading/F#set:c (param $0 i32) (param $1 i32) (local $2 i32) - i32.const 208 + i32.const 224 local.set $2 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1326,7 +1360,7 @@ ) (func $class-overloading/CA#foo (param $0 i32) (local $1 i32) - i32.const 240 + i32.const 256 local.set $1 global.get $class-overloading/which call $~lib/rt/stub/__release @@ -1335,7 +1369,7 @@ ) (func $class-overloading/CC#foo (param $0 i32) (local $1 i32) - i32.const 272 + i32.const 288 local.set $1 global.get $class-overloading/which call $~lib/rt/stub/__release diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index 1614cf3563..649bf1ba02 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -4,8 +4,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") (table $0 2 funcref) (elem (i32.const 1) $class-static-function/Example.staticFunc) (export "memory" (memory $0)) @@ -14,14 +14,14 @@ i32.const 42 ) (func $~start - i32.const 1040 + i32.const 1056 i32.load call_indirect (type $none_=>_i32) i32.const 42 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 11 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index 695db1210b..51c1729232 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00") (table $0 2 funcref) (elem (i32.const 1) $class-static-function/Example.staticFunc) (global $~argumentsLength (mut i32) (i32.const 0)) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 2b4cd885ea..fe63dbd971 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "test" (func $class/test)) @@ -31,46 +31,49 @@ i32.store8 offset=6 local.get $0 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -78,16 +81,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -96,24 +99,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $class/testGenericInitializer (local $0 i32) @@ -121,10 +143,10 @@ (local $2 i32) i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 16 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -139,7 +161,7 @@ i32.store offset=12 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 local.get $0 i32.load @@ -160,7 +182,7 @@ i32.store ) (func $~start - i32.const 1120 + i32.const 1132 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index e0c7e9799a..ec27a5f77c 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -10,8 +10,8 @@ (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (table $0 1 funcref) (global $class/Animal.ONE (mut i32) (i32.const 1)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -128,6 +128,19 @@ call $~lib/rt/stub/__release local.get $3 ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -139,6 +152,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -182,60 +205,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -461,7 +491,7 @@ if i32.const 16 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -478,7 +508,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -496,7 +526,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 i32.const 0 @@ -536,7 +566,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -555,12 +585,16 @@ (func $~start call $start:class global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index b8197dbcf8..586fb1e100 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") + (data (i32.const 1036) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -23,7 +23,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -32,7 +32,7 @@ global.get $comma/b if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -49,7 +49,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -60,7 +60,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -101,7 +101,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 22 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 0e4b88da07..1f1b7ba9f6 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00") + (data (i32.const 12) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00") (table $0 1 funcref) (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index bde23d72a2..25c7319716 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,50 +1,54 @@ (module (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 0) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -52,16 +56,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -70,46 +74,65 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~start (local $0 i32) - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 1 i32.store i32.const 4 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 0 i32.store i32.const 4 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -118,25 +141,25 @@ i32.store i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 1 i32.store i32.const 4 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 0 i32.store i32.const 0 i32.const 11 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop i32.const 0 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index a733d1484f..f2db128d9c 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -21,6 +21,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -32,6 +45,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -75,60 +98,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -139,7 +169,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -151,7 +181,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -166,7 +196,7 @@ if i32.const 4 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -181,7 +211,7 @@ if i32.const 4 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -199,7 +229,7 @@ if i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -211,7 +241,7 @@ if i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -226,7 +256,7 @@ if i32.const 4 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -254,7 +284,7 @@ if i32.const 0 i32.const 11 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -276,7 +306,7 @@ if i32.const 0 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -289,12 +319,16 @@ ) (func $start:constructor global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.optimized.wat index 33b9a04b8c..f9eee32b98 100644 --- a/tests/compiler/declare.optimized.wat +++ b/tests/compiler/declare.optimized.wat @@ -7,7 +7,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $~start @@ -17,7 +17,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -29,7 +29,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 13 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat index 9ed274ac1c..a93603d544 100644 --- a/tests/compiler/declare.untouched.wat +++ b/tests/compiler/declare.untouched.wat @@ -7,7 +7,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 0d5b20aeb9..e532d11a61 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -2,19 +2,18 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s") + (data (i32.const 1068) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1132) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1196) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $do/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $do/testNested @@ -46,7 +45,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -57,7 +56,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 40 i32.const 5 call $~lib/builtins/abort @@ -69,7 +68,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -80,7 +79,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -91,7 +90,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -113,8 +112,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 277 + i32.const 1216 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -123,18 +122,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1072 - i32.const 279 + i32.const 1216 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -176,28 +175,28 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 292 + i32.const 1216 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -268,8 +267,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 205 + i32.const 1216 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -282,14 +281,14 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 207 + i32.const 1216 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -305,14 +304,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -327,7 +326,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -355,8 +354,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 228 + i32.const 1216 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -364,14 +363,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -400,33 +399,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1072 - i32.const 243 + i32.const 1216 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1072 - i32.const 244 + i32.const 1216 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -473,8 +472,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 260 + i32.const 1216 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -492,15 +491,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -538,54 +537,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1072 - i32.const 386 - i32.const 5 + i32.const 1216 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 396 + i32.const 1216 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -601,18 +598,17 @@ i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 408 + i32.const 1216 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -622,23 +618,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -649,93 +646,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1248 + i32.const 0 + i32.store + i32.const 2816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1248 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1248 + i32.const 2820 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1248 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -772,8 +760,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 351 + i32.const 1216 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -798,110 +786,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1072 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 520 + i32.const 1216 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -910,17 +870,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -928,7 +888,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -943,7 +903,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -968,16 +928,39 @@ (local $0 i32) (local $1 i32) (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add local.tee $0 - i32.const 1216 + i32.const 1248 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -992,7 +975,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1009,7 +992,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1020,11 +1003,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1216 + i32.const 1248 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1051,7 +1034,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -1062,7 +1045,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -1088,7 +1071,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -1103,7 +1086,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -1127,7 +1110,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -1151,7 +1134,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -1187,7 +1170,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -1226,7 +1209,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 134 i32.const 3 call $~lib/builtins/abort @@ -1237,7 +1220,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -1279,7 +1262,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -1288,7 +1271,7 @@ local.get $1 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -1302,7 +1285,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -1344,7 +1327,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -1353,7 +1336,7 @@ local.get $1 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -1367,7 +1350,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 176 i32.const 1 call $~lib/builtins/abort @@ -1392,7 +1375,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1406,21 +1389,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1216 + i32.const 1248 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1434,7 +1417,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1455,7 +1438,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 99dcddf54e..b19a87e7e3 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -1,26 +1,24 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00") + (data (i32.const 44) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 108) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 172) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $do/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 208)) + (global $~lib/heap/__heap_base i32 (i32.const 224)) (export "memory" (memory $0)) (start $~start) (func $do/testSimple @@ -457,8 +455,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 277 + i32.const 192 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -472,11 +470,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -484,8 +482,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 279 + i32.const 192 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -538,29 +536,29 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 292 + i32.const 192 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -670,8 +668,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 205 + i32.const 192 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -687,8 +685,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 207 + i32.const 192 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -696,7 +694,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -718,7 +716,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -728,7 +726,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -745,7 +743,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -782,8 +780,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 228 + i32.const 192 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -793,7 +791,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -803,7 +801,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -835,11 +833,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -847,8 +845,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 243 + i32.const 192 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -856,7 +854,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -865,8 +863,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 244 + i32.const 192 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -924,8 +922,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 260 + i32.const 192 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -949,15 +947,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -1026,31 +1024,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 64 - i32.const 386 - i32.const 5 + i32.const 192 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -1064,14 +1064,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 396 + i32.const 192 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -1103,8 +1103,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 408 + i32.const 192 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -1115,10 +1115,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -1126,9 +1126,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -1144,15 +1144,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -1171,7 +1171,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -1184,127 +1184,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1312,49 +1331,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 112 i32.const 64 + i32.const 192 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1377,7 +1371,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1431,8 +1425,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 338 + i32.const 192 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1496,8 +1490,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 351 + i32.const 192 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1553,7 +1547,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1571,11 +1565,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1639,14 +1633,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 64 - i32.const 365 + i32.const 192 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1660,8 +1656,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1673,14 +1669,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1699,7 +1695,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1711,7 +1707,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1728,136 +1724,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 192 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 520 + i32.const 192 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 64 + i32.const 128 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1882,7 +1859,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1905,7 +1882,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1918,7 +1895,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1930,7 +1907,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1942,7 +1919,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2257,18 +2234,10 @@ (func $~start call $start:do ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -2307,7 +2276,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2318,7 +2287,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -2333,7 +2302,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2350,7 +2319,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2388,14 +2357,14 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index 23da3862e2..3c0eea0df8 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -1,4 +1,395 @@ (module - (memory $0 0) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 1036) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") + (data (i32.const 1072) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1100) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s") + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) + (start $~start) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.tee $4 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $5 + i32.add + local.tee $0 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 + i32.gt_u + if + local.get $2 + local.get $0 + local.get $1 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + local.get $5 + i32.store + local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 1148 + global.set $~lib/rt/stub/offset + i32.const 2 + i32.const 1056 + call $~lib/string/String#get:length + local.tee $0 + i32.lt_s + local.set $1 + block $__inlined_func$~lib/string/String#substring + i32.const 2 + local.get $0 + local.get $1 + select + local.tee $1 + i32.const 2147483647 + local.get $0 + i32.const 2147483647 + local.get $0 + i32.lt_s + select + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $3 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $1 + i32.sub + local.tee $2 + i32.eqz + if + i32.const 1088 + local.set $0 + br $__inlined_func$~lib/string/String#substring + end + i32.const 0 + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.eq + local.get $1 + select + if + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#substring + end + local.get $2 + i32.const 1 + call $~lib/rt/stub/__new + local.tee $0 + local.get $1 + i32.const 1056 + i32.add + local.get $2 + call $~lib/memory/memory.copy + end + local.get $0 + call $~lib/string/String#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__new + drop + i32.const 0 + call $~lib/rt/stub/__alloc + drop + ) ) diff --git a/tests/compiler/empty.ts b/tests/compiler/empty.ts index e69de29bb2..5e1df25c86 100644 --- a/tests/compiler/empty.ts +++ b/tests/compiler/empty.ts @@ -0,0 +1,9 @@ +var a = "hello"; + +assert(a.substring(2).length == 3); + +class A {} +new A(); + +@unmanaged class B {} +new B(); diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index bffe105a3d..beef1b5c87 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,5 +1,1603 @@ (module - (memory $0 0) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 12) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o\00") + (data (i32.const 44) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 76) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s\00") (table $0 1 funcref) + (global $empty/a (mut i32) (i32.const 32)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/heap/__heap_base i32 (i32.const 112)) (export "memory" (memory $0)) + (start $~start) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) + (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.set $2 + local.get $0 + call $~lib/rt/stub/computeSize + local.set $3 + local.get $2 + local.get $3 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store + local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $10 + local.get $10 + i32.eqz + if + i32.const 64 + call $~lib/rt/stub/__retain + return + end + local.get $8 + i32.eqz + if (result i32) + local.get $9 + local.get $3 + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $0 + call $~lib/rt/stub/__retain + return + end + local.get $10 + i32.const 1 + call $~lib/rt/stub/__new + local.set $11 + local.get $11 + local.get $0 + local.get $8 + i32.add + local.get $10 + call $~lib/memory/memory.copy + local.get $11 + call $~lib/rt/stub/__retain + ) + (func $empty/A#constructor (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__new + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/rt/stub/__release (param $0 i32) + nop + ) + (func $empty/B#constructor (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $0 + end + local.get $0 + ) + (func $start:empty + (local $0 i32) + global.get $~lib/heap/__heap_base + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + global.get $empty/a + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.tee $0 + call $~lib/string/String#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $empty/A#constructor + call $~lib/rt/stub/__release + i32.const 0 + call $empty/B#constructor + drop + local.get $0 + call $~lib/rt/stub/__release + ) + (func $~start + call $start:empty + ) ) diff --git a/tests/compiler/exportimport-table.optimized.wat b/tests/compiler/exportimport-table.optimized.wat index 71d65ae61f..3e72531987 100644 --- a/tests/compiler/exportimport-table.optimized.wat +++ b/tests/compiler/exportimport-table.optimized.wat @@ -3,7 +3,7 @@ (import "env" "table" (table $0 2 funcref)) (elem (i32.const 1) $start:exportimport-table~anonymous|0) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") (export "memory" (memory $0)) (export "table" (table $0)) (func $start:exportimport-table~anonymous|0 diff --git a/tests/compiler/exportimport-table.untouched.wat b/tests/compiler/exportimport-table.untouched.wat index fa6be1dd7a..734c92f002 100644 --- a/tests/compiler/exportimport-table.untouched.wat +++ b/tests/compiler/exportimport-table.untouched.wat @@ -3,7 +3,7 @@ (import "env" "table" (table $0 2 funcref)) (elem (i32.const 1) $start:exportimport-table~anonymous|0) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") (global $exportimport-table/f (mut i32) (i32.const 32)) (export "memory" (memory $0)) (export "table" (table $0)) diff --git a/tests/compiler/exports-lazy.optimized.wat b/tests/compiler/exports-lazy.optimized.wat index b1c73fc7f9..b3fee748cd 100644 --- a/tests/compiler/exports-lazy.optimized.wat +++ b/tests/compiler/exports-lazy.optimized.wat @@ -1,9 +1,10 @@ (module (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1056) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00\0c\00\00\00\03") - (global $exports-lazy/lazyGlobalUsed i32 (i32.const 1072)) + (data (i32.const 1036) "\0c\00\00\00\01") + (data (i32.const 1052) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1068) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\0c\00\00\00\03") + (global $exports-lazy/lazyGlobalUsed i32 (i32.const 1088)) (export "memory" (memory $0)) (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) (export "lazyFuncUsed" (func $~start)) diff --git a/tests/compiler/exports-lazy.untouched.wat b/tests/compiler/exports-lazy.untouched.wat index 64df15c7a9..4597a524f2 100644 --- a/tests/compiler/exports-lazy.untouched.wat +++ b/tests/compiler/exports-lazy.untouched.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 48) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 44) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\0c\00\00\00\03\00\00\00") (table $0 1 funcref) (global $exports-lazy/lazyGlobalUsed i32 (i32.const 64)) (export "memory" (memory $0)) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index d935ff06e9..8e0dfa1991 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -60,22 +60,30 @@ (func $exports/Car.getNumTires (result i32) i32.const 4 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -109,22 +117,26 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 4 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $exports/Car#get:doors (param $0 i32) (result i32) local.get $0 @@ -144,7 +156,7 @@ i32.mul ) (func $~start - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset ) (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) @@ -181,7 +193,7 @@ i32.eqz if i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -208,7 +220,7 @@ i32.eqz if i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 642deb6a97..defbf2ea37 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -71,6 +71,19 @@ (func $exports/Car.getNumTires (result i32) global.get $exports/Car.TIRES ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -82,6 +95,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -125,60 +148,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -189,7 +219,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -231,7 +261,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -271,12 +301,16 @@ ) (func $~start global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index 606338749d..19d7f332a8 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -5,8 +5,8 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -45,23 +45,31 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $1 - i32.const 16 + local.tee $2 + i32.const 28 i32.add local.tee $0 memory.size local.tee $3 i32.const 16 i32.shl - local.tee $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if local.get $3 local.get $0 - local.get $2 + local.get $1 i32.sub i32.const 65535 i32.add @@ -69,16 +77,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $3 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -89,28 +97,33 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $1 - i32.const 16 + i32.const 28 + i32.store + local.get $2 + i32.const 4 i32.sub local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 3 i32.store offset=12 - local.get $1 + local.get $0 + i32.const 4 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + local.tee $0 i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store - local.get $1 + local.get $0 ) (func $export-default/theDefault nop @@ -121,7 +134,7 @@ i32.sub ) (func $~start - i32.const 1120 + i32.const 1132 global.set $~lib/rt/stub/offset call $exports/Car#constructor global.set $reexport/car @@ -131,7 +144,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -145,7 +158,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1104 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -159,7 +172,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1104 i32.const 24 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index 57c3341551..33a9f23870 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -52,6 +52,19 @@ local.get $1 i32.add ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -63,6 +76,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -106,60 +129,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -170,7 +200,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -224,12 +254,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 4c3377a28d..cdc61bab23 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,33 +1,31 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1028) "\01") - (data (i32.const 1040) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\10\04\00\00\10\04") - (data (i32.const 1076) "\01") - (data (i32.const 1088) "\10\00\00\00\01\00\00\00\08\00\00\00\10\00\00\00@\04\00\00@\04") - (data (i32.const 1120) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1280) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1328) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1376) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1440) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1488) "\t\00\00\00 \00\00\00\00\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 1544) "\04\00\00\00\"A\00\00\00\00\00\00\"A") + (data (i32.const 1040) "\01") + (data (i32.const 1068) "\10\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\10\00\00\00 \04\00\00 \04") + (data (i32.const 1120) "\01") + (data (i32.const 1148) "\10\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\10\00\00\00p\04\00\00p\04") + (data (i32.const 1196) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1260) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1324) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1436) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1484) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1548) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1600) "\t\00\00\00 \00\00\00\00\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 1656) "\04\00\00\00\"A\00\00\00\00\00\00\"A") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -43,8 +41,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 277 + i32.const 1344 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -53,18 +51,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1136 - i32.const 279 + i32.const 1344 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -106,28 +104,28 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 292 + i32.const 1344 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -198,8 +196,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 205 + i32.const 1344 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -212,14 +210,14 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 207 + i32.const 1344 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -235,14 +233,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -257,7 +255,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -285,8 +283,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 228 + i32.const 1344 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -294,14 +292,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -330,33 +328,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1136 - i32.const 243 + i32.const 1344 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1136 - i32.const 244 + i32.const 1344 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -403,8 +401,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 260 + i32.const 1344 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -422,15 +420,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -468,54 +466,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1136 - i32.const 386 - i32.const 5 + i32.const 1344 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 396 + i32.const 1344 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -531,18 +527,17 @@ i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 408 + i32.const 1344 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -552,23 +547,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -579,116 +575,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1680 + i32.const 0 + i32.store + i32.const 3248 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1680 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1568 - local.set $1 - i32.const 1568 - i32.const 0 - i32.store - i32.const 3136 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1680 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1568 - i32.const 3152 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1568 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1680 + i32.const 3252 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1680 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1184 - i32.const 1136 + i32.const 1216 + i32.const 1344 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -715,7 +703,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -746,8 +734,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 338 + i32.const 1344 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -798,8 +786,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 351 + i32.const 1344 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -827,12 +815,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1136 - i32.const 365 + i32.const 1344 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -843,7 +833,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -855,12 +845,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -875,7 +865,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -895,150 +885,147 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1136 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 520 + i32.const 1344 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 local.get $0 - local.get $3 + local.get $1 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 - local.get $4 + local.get $1 + local.get $2 call $~lib/rt/tlsf/prepareBlock - local.get $3 + local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + i32.const 36 + call $~lib/rt/tlsf/__alloc + local.tee $2 + i32.const 4 + i32.sub + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 20 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1046,11 +1033,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1564 + i32.const 1676 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1065,7 +1052,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1082,7 +1069,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1094,7 +1081,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -1113,20 +1100,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 1136 - i32.const 585 + i32.const 1344 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -1317,133 +1295,203 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 1676 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + i32.const 1073741804 + i32.gt_u if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end + i32.const 1216 + i32.const 1280 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 + i32.const 20 + i32.sub + local.tee $2 i32.load offset=4 - i32.store offset=4 - local.get $3 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 i32.const 16 - i32.add + i32.sub + local.set $0 local.get $1 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1564 - i32.ge_u + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/initialize end - local.get $3 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 + local.get $0 + i32.const 1676 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 0 - i32.store8 offset=2 + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + end + end + local.get $0 + i32.const 4 + i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 i32.const 0 i32.store8 offset=2 @@ -1577,11 +1625,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1564 + i32.const 1676 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1596,15 +1644,15 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 1116 + i32.const 1180 i32.load - local.tee $6 + local.tee $5 i32.const 1 i32.add local.tee $2 local.set $0 local.get $2 - i32.const 1112 + i32.const 1176 i32.load local.tee $3 i32.const 2 @@ -1612,61 +1660,56 @@ i32.gt_u if local.get $0 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1296 - i32.const 1344 + i32.const 1408 + i32.const 1456 i32.const 14 i32.const 48 call $~lib/builtins/abort unreachable end - i32.const 1104 - i32.load - local.set $4 local.get $3 - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 1168 + i32.load + local.tee $6 local.get $0 i32.const 2 i32.shl - local.tee $5 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add + local.tee $4 + call $~lib/rt/pure/__renew local.tee $0 i32.add - local.get $5 + local.get $4 local.get $3 i32.sub call $~lib/memory/memory.fill local.get $0 - local.get $4 + local.get $6 i32.ne if - i32.const 1104 + i32.const 1168 local.get $0 i32.store - i32.const 1108 + i32.const 1172 local.get $0 i32.store end - i32.const 1112 - local.get $5 + i32.const 1176 + local.get $4 i32.store end - i32.const 1108 + i32.const 1172 i32.load - local.get $6 + local.get $5 i32.const 2 i32.shl i32.add local.get $1 call $~lib/rt/pure/__retain i32.store - i32.const 1116 + i32.const 1180 local.get $2 i32.store local.get $1 @@ -1674,16 +1717,14 @@ ) (func $~start (local $0 i32) - i32.const 20 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.eqz if - i32.const 20 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1701,227 +1742,6 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - select - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $1 - local.tee $3 - local.set $4 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_u - if - local.get $4 - i32.load - local.tee $5 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.const 0 - local.get $2 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - select - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $3 - local.get $5 - i32.store - local.get $3 - i32.const 4 - i32.add - local.set $3 - else - i32.const 0 - local.get $2 - i32.const 268435455 - i32.and - i32.eqz - local.get $2 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/freeBlock - else - local.get $5 - local.get $2 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - global.set $~lib/rt/pure/CUR - local.get $1 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - local.set $0 - loop $for-loop|2 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - local.get $2 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -1939,7 +1759,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1950,7 +1770,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1972,21 +1792,21 @@ i32.le_u if i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 136 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $3 - i32.const 1488 + i32.const 1600 i32.load i32.gt_u if - i32.const 1392 - i32.const 1456 + i32.const 1504 + i32.const 1568 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -1995,7 +1815,7 @@ local.get $3 i32.const 3 i32.shl - i32.const 1492 + i32.const 1604 i32.add i32.load i32.const 32 @@ -2042,7 +1862,6 @@ i32.gt_u select local.tee $4 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $1 @@ -2050,10 +1869,20 @@ call $~lib/memory/memory.copy local.get $1 if - call $~lib/rt/tlsf/maybeInitialize local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + i32.const 1676 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + end end local.get $2 global.set $~lib/rt/pure/ROOTS @@ -2079,15 +1908,28 @@ end end ) + (func $~lib/rt/pure/scanBlack (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1564 + i32.const 1676 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub local.set $0 block $break|0 @@ -2114,7 +1956,7 @@ i32.le_u if i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 79 i32.const 20 call $~lib/builtins/abort @@ -2127,11 +1969,59 @@ i32.sub i32.store offset=4 local.get $0 - call $~lib/rt/pure/markGray + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end br $break|0 end local.get $0 - call $~lib/rt/pure/scan + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end br $break|0 end local.get $0 @@ -2147,7 +2037,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 90 i32.const 9 call $~lib/builtins/abort @@ -2168,11 +2058,37 @@ br $break|0 end local.get $0 - call $~lib/rt/pure/collectWhite + i32.load offset=4 + local.tee $1 + i32.const -2147483648 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + select + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end br $break|0 end i32.const 0 - i32.const 1248 + i32.const 1280 i32.const 101 i32.const 27 call $~lib/builtins/abort diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 512df0215d..a82598884d 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -2,39 +2,36 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 32) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 64) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 80) "\10\00\00\00\01\00\00\00\08\00\00\00\10\00\00\00P\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 320) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 368) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 432) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 480) "\t\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\"A\00\00\00\00\00\00\"A\00\00\00\00\00\00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 44) "\10\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\10\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 92) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 124) "\10\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\10\00\00\00p\00\00\00p\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 172) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 236) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 300) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 412) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 460) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 524) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 576) "\t\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\"A\00\00\00\00\00\00\"A\00\00\00\00\00\00") (table $0 1 funcref) - (global $extends-baseaggregate/poolB i32 (i32.const 48)) - (global $extends-baseaggregate/poolA i32 (i32.const 96)) + (global $extends-baseaggregate/poolB i32 (i32.const 64)) + (global $extends-baseaggregate/poolA i32 (i32.const 144)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/heap/__heap_base i32 (i32.const 556)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 576)) + (global $~lib/heap/__heap_base i32 (i32.const 652)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -59,8 +56,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 277 + i32.const 320 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -74,11 +71,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -86,8 +83,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 279 + i32.const 320 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -140,29 +137,29 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 292 + i32.const 320 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -272,8 +269,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 205 + i32.const 320 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -289,8 +286,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 207 + i32.const 320 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -298,7 +295,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -320,7 +317,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -330,7 +327,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -347,7 +344,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -384,8 +381,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 228 + i32.const 320 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -395,7 +392,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -405,7 +402,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -437,11 +434,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -449,8 +446,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 243 + i32.const 320 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -458,7 +455,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -467,8 +464,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 244 + i32.const 320 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -526,8 +523,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 260 + i32.const 320 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,15 +548,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -628,31 +625,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 128 - i32.const 386 - i32.const 5 + i32.const 320 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -666,14 +665,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 128 - i32.const 396 + i32.const 320 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -705,8 +704,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 408 + i32.const 320 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -717,10 +716,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -728,9 +727,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -746,15 +745,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -773,7 +772,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -786,177 +785,171 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT end local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 176 - i32.const 128 + i32.const 192 + i32.const 320 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -979,7 +972,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1033,8 +1026,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 338 + i32.const 320 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1098,8 +1091,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 351 + i32.const 320 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1155,7 +1148,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1173,11 +1166,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1241,14 +1234,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 128 - i32.const 365 + i32.const 320 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1262,8 +1257,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1275,14 +1270,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1301,7 +1296,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1313,7 +1308,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1330,136 +1325,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 320 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 128 - i32.const 520 + i32.const 320 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 192 + i32.const 256 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1484,7 +1460,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1507,7 +1483,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1520,7 +1496,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1532,7 +1508,7 @@ if i32.const 20 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1553,7 +1529,7 @@ if i32.const 20 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1565,7 +1541,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -1588,22 +1564,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 128 - i32.const 585 + i32.const 320 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -2864,12 +2829,9 @@ end ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -2879,6 +2841,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -2886,7 +2879,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -2907,9 +2899,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -2918,7 +2907,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -2936,7 +2925,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -2959,9 +2948,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -2973,41 +2959,86 @@ end end local.get $0 - local.get $2 local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 192 + i32.const 256 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -3239,13 +3270,13 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 288 - i32.const 336 + i32.const 384 + i32.const 432 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -3260,7 +3291,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $6 local.get $6 local.get $3 @@ -3292,7 +3323,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -3350,33 +3381,6 @@ (func $~start call $start:extends-baseaggregate ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -3384,239 +3388,6 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - local.get $0 - call $~lib/rt/pure/finalize - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - drop - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $1 - local.get $5 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $6 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $6 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - local.get $0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - call $~lib/rt/pure/scan - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/__rtti_base @@ -3626,8 +3397,8 @@ i32.load i32.gt_u if - i32.const 384 - i32.const 448 + i32.const 480 + i32.const 544 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -3643,7 +3414,18 @@ i32.load ) (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock @@ -3675,7 +3457,6 @@ select local.set $4 local.get $4 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 local.get $5 @@ -3740,7 +3521,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3751,7 +3532,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -3782,7 +3563,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3791,7 +3572,7 @@ i32.const 0 drop local.get $0 - i32.load offset=8 + i32.load offset=12 call $~lib/rt/__typeinfo i32.const 32 i32.and @@ -3829,6 +3610,124 @@ end end ) + (func $~lib/rt/pure/markGray (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + local.get $0 + call $~lib/rt/pure/finalize + end + ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3841,7 +3740,7 @@ i32.const 0 drop local.get $0 - i32.const 16 + i32.const 20 i32.sub local.set $2 block $break|0 @@ -3890,7 +3789,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 79 i32.const 20 call $~lib/builtins/abort @@ -3929,7 +3828,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 90 i32.const 9 call $~lib/builtins/abort @@ -3961,7 +3860,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 256 i32.const 101 i32.const 27 call $~lib/builtins/abort diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index 06d2040bd3..a4a6eed7eb 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -15,6 +15,19 @@ (export "Child#get:child" (func $extends-recursive/Parent#get:child)) (export "Child#set:child" (func $extends-recursive/Parent#set:child)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -26,6 +39,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -69,60 +92,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -133,7 +163,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -149,7 +179,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -186,12 +216,16 @@ ) (func $~start global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat index 6c9fe3ed3a..0fdcfbcede 100644 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ b/tests/compiler/features/js-bigint-integration.optimized.wat @@ -6,7 +6,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) (memory $0 1) - (data (i32.const 1024) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") + (data (i32.const 1036) "B\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) @@ -29,7 +29,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -40,7 +40,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat index aaa8482d1a..760a6acaa5 100644 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ b/tests/compiler/features/js-bigint-integration.untouched.wat @@ -6,7 +6,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) (memory $0 1) - (data (i32.const 16) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 12) "B\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00") (table $0 1 funcref) (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) (global $~started (mut i32) (i32.const 0)) diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/features/mutable-globals.optimized.wat index 01861b6059..e91fa701d9 100644 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ b/tests/compiler/features/mutable-globals.optimized.wat @@ -4,7 +4,7 @@ (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") + (data (i32.const 1036) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") (global $features/mutable-globals/internal (mut i32) (i32.const 124)) (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) @@ -24,7 +24,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -35,7 +35,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -54,7 +54,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -65,7 +65,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 12 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat index 0d386c0006..bdb6a8544e 100644 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ b/tests/compiler/features/mutable-globals.untouched.wat @@ -4,7 +4,7 @@ (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00") + (data (i32.const 12) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (global $features/mutable-globals/internal (mut i32) (i32.const 124)) (global $~started (mut i32) (i32.const 0)) diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index 420fa1e440..811e433c3d 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -13,7 +13,7 @@ (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) (memory $0 1) - (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data (i32.const 1036) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") (global $features/reference-types/funcGlobal (mut funcref) (ref.null func)) (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) @@ -32,7 +32,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -50,7 +50,7 @@ ref.is_null if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -59,7 +59,7 @@ ref.null func global.set $features/reference-types/funcGlobal i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 34 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index 7aa89eed8b..4572116534 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -13,7 +13,7 @@ (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) (memory $0 1) - (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") + (data (i32.const 12) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") (table $0 1 funcref) (global $features/reference-types/funcGlobal (mut funcref) (ref.null func)) (global $features/reference-types/funcGlobalInit (mut funcref) (ref.null func)) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 71fb2f303b..c4095ccdd6 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,28 +1,29 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (data (i32.const 1072) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data (i32.const 1100) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") (export "memory" (memory $0)) (start $~start) - (func $start:features/simd + (func $~start (local $0 i32) (local $1 i32) - i32.const 1120 - global.set $~lib/rt/stub/offset - i32.const 1200 + i32.const 1244 memory.size local.tee $1 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $0 i32.gt_u if local.get $1 - i32.const 66735 + i32.const 66779 local.get $0 i32.sub i32.const -65536 @@ -47,48 +48,15 @@ end end end - i32.const 1200 - global.set $~lib/rt/stub/offset - i32.const 1120 - i32.const 64 - i32.store - i32.const 1124 - i32.const 1 + i32.const 1164 + i32.const 76 i32.store - i32.const 1128 - i32.const 0 - i32.store - i32.const 1132 - i32.const 64 - i32.store - i32.const 1168 - i32.const 1152 + i32.const 1200 + i32.const 1184 v128.load v128.store - i32.const 1124 + i32.const 1164 i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 1120 - i32.load - i32.const 1136 - i32.add - i32.eq - if - i32.const 1120 - global.set $~lib/rt/stub/offset - end - ) - (func $~start - call $start:features/simd + drop ) ) diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index c62347b856..2290765256 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -49,7 +49,7 @@ function test_v128(): void { v128(16, 2, 14, 4, 12, 6, 10, 8, 8, 10, 6, 12, 4, 14, 2, 16), ); { - let ptr = __alloc(64, 0); + let ptr = __alloc(64); v128.store(ptr, v128.load(ptr, 16), 32); __free(ptr); } diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 616a7bba44..1a1cc5ff0b 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1,13 +1,13 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_v128 (func (result v128))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 64) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 76) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -17,9 +17,22 @@ (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/heap/__heap_base i32 (i32.const 112)) + (global $~lib/heap/__heap_base i32 (i32.const 128)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -31,6 +44,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -74,59 +97,32 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 + local.get $3 + i32.store local.get $2 ) (func $~lib/rt/stub/__free (param $0 i32) @@ -146,30 +142,15 @@ if i32.const 0 i32.const 32 - i32.const 68 + i32.const 95 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 - i32.const 1 - drop - local.get $1 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 i32.load @@ -243,7 +224,6 @@ i32.ne drop i32.const 64 - i32.const 0 call $~lib/rt/stub/__alloc local.set $0 local.get $0 @@ -272,7 +252,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -290,7 +270,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -309,7 +289,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -326,7 +306,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -343,7 +323,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -404,7 +384,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -421,7 +401,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -438,7 +418,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -453,7 +433,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -470,7 +450,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -487,7 +467,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -611,7 +591,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -628,7 +608,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -645,7 +625,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -662,7 +642,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -679,7 +659,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 163 i32.const 3 call $~lib/builtins/abort @@ -696,7 +676,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -713,7 +693,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -730,7 +710,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -747,7 +727,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -764,7 +744,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -814,7 +794,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 175 i32.const 3 call $~lib/builtins/abort @@ -832,7 +812,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 177 i32.const 3 call $~lib/builtins/abort @@ -851,7 +831,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 179 i32.const 3 call $~lib/builtins/abort @@ -868,7 +848,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 180 i32.const 3 call $~lib/builtins/abort @@ -885,7 +865,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -946,7 +926,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -963,7 +943,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -980,7 +960,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -995,7 +975,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -1012,7 +992,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -1029,7 +1009,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -1153,7 +1133,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 273 i32.const 3 call $~lib/builtins/abort @@ -1170,7 +1150,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 274 i32.const 3 call $~lib/builtins/abort @@ -1187,7 +1167,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 275 i32.const 3 call $~lib/builtins/abort @@ -1204,7 +1184,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 276 i32.const 3 call $~lib/builtins/abort @@ -1221,7 +1201,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 277 i32.const 3 call $~lib/builtins/abort @@ -1238,7 +1218,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 278 i32.const 3 call $~lib/builtins/abort @@ -1255,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 279 i32.const 3 call $~lib/builtins/abort @@ -1272,7 +1252,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 280 i32.const 3 call $~lib/builtins/abort @@ -1289,7 +1269,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 281 i32.const 3 call $~lib/builtins/abort @@ -1306,7 +1286,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 282 i32.const 3 call $~lib/builtins/abort @@ -1404,7 +1384,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 316 i32.const 3 call $~lib/builtins/abort @@ -1422,7 +1402,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 318 i32.const 3 call $~lib/builtins/abort @@ -1441,7 +1421,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 320 i32.const 3 call $~lib/builtins/abort @@ -1458,7 +1438,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 321 i32.const 3 call $~lib/builtins/abort @@ -1475,7 +1455,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 322 i32.const 3 call $~lib/builtins/abort @@ -1536,7 +1516,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 363 i32.const 3 call $~lib/builtins/abort @@ -1549,7 +1529,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 368 i32.const 3 call $~lib/builtins/abort @@ -1562,7 +1542,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 369 i32.const 3 call $~lib/builtins/abort @@ -1579,7 +1559,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 370 i32.const 3 call $~lib/builtins/abort @@ -1596,7 +1576,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 375 i32.const 3 call $~lib/builtins/abort @@ -1676,7 +1656,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -1693,7 +1673,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -1710,7 +1690,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -1727,7 +1707,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -1744,7 +1724,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -1761,7 +1741,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -1778,7 +1758,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 395 i32.const 3 call $~lib/builtins/abort @@ -1795,7 +1775,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -1812,7 +1792,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 397 i32.const 3 call $~lib/builtins/abort @@ -1829,7 +1809,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 398 i32.const 3 call $~lib/builtins/abort @@ -1919,7 +1899,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 436 i32.const 3 call $~lib/builtins/abort @@ -1937,7 +1917,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -1956,7 +1936,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -1973,7 +1953,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 441 i32.const 3 call $~lib/builtins/abort @@ -1989,7 +1969,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 442 i32.const 3 call $~lib/builtins/abort @@ -2002,7 +1982,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 447 i32.const 3 call $~lib/builtins/abort @@ -2015,7 +1995,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 448 i32.const 3 call $~lib/builtins/abort @@ -2032,7 +2012,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 449 i32.const 3 call $~lib/builtins/abort @@ -2049,7 +2029,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 454 i32.const 3 call $~lib/builtins/abort @@ -2144,7 +2124,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -2162,7 +2142,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 497 i32.const 3 call $~lib/builtins/abort @@ -2181,7 +2161,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 499 i32.const 3 call $~lib/builtins/abort @@ -2198,7 +2178,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 500 i32.const 3 call $~lib/builtins/abort @@ -2215,7 +2195,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 501 i32.const 3 call $~lib/builtins/abort @@ -2236,7 +2216,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 503 i32.const 3 call $~lib/builtins/abort @@ -2253,7 +2233,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 504 i32.const 3 call $~lib/builtins/abort @@ -2269,7 +2249,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 505 i32.const 3 call $~lib/builtins/abort @@ -2282,7 +2262,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 506 i32.const 3 call $~lib/builtins/abort @@ -2295,7 +2275,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -2312,7 +2292,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 508 i32.const 3 call $~lib/builtins/abort @@ -2329,7 +2309,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 513 i32.const 3 call $~lib/builtins/abort @@ -2360,7 +2340,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 522 i32.const 3 call $~lib/builtins/abort @@ -2377,7 +2357,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 523 i32.const 3 call $~lib/builtins/abort @@ -2394,7 +2374,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 524 i32.const 3 call $~lib/builtins/abort @@ -2411,7 +2391,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 525 i32.const 3 call $~lib/builtins/abort @@ -2428,7 +2408,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 526 i32.const 3 call $~lib/builtins/abort @@ -2445,7 +2425,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 527 i32.const 3 call $~lib/builtins/abort @@ -2462,7 +2442,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 528 i32.const 3 call $~lib/builtins/abort @@ -2479,7 +2459,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -2495,7 +2475,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -2550,7 +2530,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -2568,7 +2548,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -2587,7 +2567,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -2604,7 +2584,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -2621,7 +2601,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2642,7 +2622,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -2659,7 +2639,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 566 i32.const 3 call $~lib/builtins/abort @@ -2675,7 +2655,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -2688,7 +2668,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -2701,7 +2681,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -2718,7 +2698,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -2735,7 +2715,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -2766,7 +2746,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -2783,7 +2763,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -2800,7 +2780,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -2817,7 +2797,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -2834,7 +2814,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 588 i32.const 3 call $~lib/builtins/abort @@ -2851,7 +2831,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 589 i32.const 3 call $~lib/builtins/abort @@ -2868,7 +2848,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 590 i32.const 3 call $~lib/builtins/abort @@ -2885,7 +2865,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 591 i32.const 3 call $~lib/builtins/abort @@ -2901,7 +2881,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 592 i32.const 3 call $~lib/builtins/abort @@ -2955,7 +2935,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -2974,7 +2954,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -2998,12 +2978,16 @@ ) (func $start:features/simd global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 6f20599bb8..7e7b002817 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -7,57 +7,60 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") - (data (i32.const 1088) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1136) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00b") - (data (i32.const 1264) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 1296) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00b\00b") - (data (i32.const 1328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c") + (data (i32.const 1036) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") + (data (i32.const 1116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1164) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1228) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 1260) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00b") + (data (i32.const 1292) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c") + (data (i32.const 1324) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00b\00b") + (data (i32.const 1356) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -65,16 +68,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -83,24 +86,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) local.get $0 @@ -108,13 +130,13 @@ if i32.const 4 i32.const 18 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.store local.get $0 ) @@ -124,7 +146,7 @@ if i32.const 8 i32.const 20 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -137,9 +159,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -255,7 +277,7 @@ (local $0 i32) i32.const 12 i32.const 21 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $field-initialization/SomeObject#constructor local.tee $0 i32.const 0 @@ -265,11 +287,11 @@ (func $start:field-initialization (local $0 i32) (local $1 i32) - i32.const 1360 + i32.const 1388 global.set $~lib/rt/stub/offset i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 1 i32.store @@ -279,7 +301,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -287,7 +309,7 @@ end i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -295,7 +317,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -303,18 +325,18 @@ end i32.const 4 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -322,18 +344,18 @@ end i32.const 4 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -341,7 +363,7 @@ end i32.const 4 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -349,7 +371,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -357,7 +379,7 @@ end i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -365,7 +387,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -373,7 +395,7 @@ end i32.const 4 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 1 i32.store @@ -383,7 +405,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -391,7 +413,7 @@ end i32.const 4 i32.const 10 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -404,7 +426,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -412,18 +434,18 @@ end i32.const 4 i32.const 11 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -431,13 +453,13 @@ end i32.const 4 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 local.get $0 i32.load @@ -450,7 +472,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 94 i32.const 3 call $~lib/builtins/abort @@ -458,11 +480,11 @@ end i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 i32.const 4 i32.const 13 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $1 local.get $0 i32.store @@ -472,7 +494,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -480,7 +502,7 @@ end i32.const 4 i32.const 14 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store @@ -488,7 +510,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -496,18 +518,18 @@ end i32.const 4 i32.const 15 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -515,13 +537,13 @@ end i32.const 4 i32.const 16 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 local.get $0 i32.load @@ -534,7 +556,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -542,13 +564,13 @@ end i32.const 4 i32.const 17 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $field-initialization/Inherit_Base#constructor i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -556,13 +578,13 @@ end i32.const 4 i32.const 19 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $field-initialization/Inherit_Base#constructor i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -580,7 +602,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -593,7 +615,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -613,7 +635,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -626,7 +648,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -635,7 +657,7 @@ i32.const 0 call $field-initialization/SomeObject#constructor local.tee $0 - i32.const 1216 + i32.const 1248 i32.store offset=4 local.get $0 i32.const 0 @@ -644,7 +666,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -652,12 +674,12 @@ end local.get $0 i32.load offset=4 - i32.const 1216 + i32.const 1248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -669,7 +691,7 @@ i32.const 2 i32.store local.get $0 - i32.const 1248 + i32.const 1280 i32.store offset=4 local.get $0 i32.load @@ -677,7 +699,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 173 i32.const 3 call $~lib/builtins/abort @@ -685,12 +707,12 @@ end local.get $0 i32.load offset=4 - i32.const 1248 + i32.const 1280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 174 i32.const 3 call $~lib/builtins/abort @@ -698,7 +720,7 @@ end call $field-initialization/SomeOtherObject#constructor local.tee $0 - i32.const 1280 + i32.const 1312 i32.store offset=8 local.get $0 i32.const 0 @@ -710,7 +732,7 @@ i32.load if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -723,7 +745,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 183 i32.const 3 call $~lib/builtins/abort @@ -731,12 +753,12 @@ end local.get $0 i32.load offset=8 - i32.const 1280 + i32.const 1312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -747,10 +769,10 @@ i32.const 3 i32.store local.get $0 - i32.const 1312 + i32.const 1344 i32.store offset=4 local.get $0 - i32.const 1344 + i32.const 1376 i32.store offset=8 local.get $0 i32.load @@ -758,7 +780,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 186 i32.const 3 call $~lib/builtins/abort @@ -766,12 +788,12 @@ end local.get $0 i32.load offset=4 - i32.const 1312 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -779,12 +801,12 @@ end local.get $0 i32.load offset=8 - i32.const 1344 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -792,13 +814,13 @@ end i32.const 4 i32.const 22 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 local.get $0 i32.load @@ -811,7 +833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 205 i32.const 3 call $~lib/builtins/abort @@ -819,18 +841,18 @@ end i32.const 4 i32.const 23 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 218 i32.const 3 call $~lib/builtins/abort @@ -838,13 +860,13 @@ end i32.const 4 i32.const 24 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store i32.const 0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 local.get $0 i32.load @@ -857,7 +879,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 230 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 0517dcbf9c..1f2dc26617 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -8,21 +8,34 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 80) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 128) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 224) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00b\00") - (data (i32.const 256) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c\00") - (data (i32.const 288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00b\00b\00") - (data (i32.const 320) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c\00") + (data (i32.const 12) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 92) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 140) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 204) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 236) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00b\00") + (data (i32.const 268) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c\00") + (data (i32.const 300) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00b\00b\00") + (data (i32.const 332) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 340)) + (global $~lib/heap/__heap_base i32 (i32.const 356)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -34,6 +47,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -77,60 +100,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -141,7 +171,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -159,7 +189,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -385,11 +415,11 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 96 - i32.const 144 + i32.const 112 + i32.const 160 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -397,7 +427,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 i32.const 0 @@ -416,7 +446,7 @@ if i32.const 4 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -433,7 +463,7 @@ if i32.const 4 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -450,7 +480,7 @@ if i32.const 4 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -465,7 +495,7 @@ if i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -480,7 +510,7 @@ if i32.const 4 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -495,7 +525,7 @@ if i32.const 4 i32.const 10 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -513,7 +543,7 @@ if i32.const 4 i32.const 11 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -532,7 +562,7 @@ if i32.const 4 i32.const 12 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -558,7 +588,7 @@ if i32.const 4 i32.const 13 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -579,7 +609,7 @@ if i32.const 4 i32.const 14 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -594,7 +624,7 @@ if i32.const 4 i32.const 15 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -613,7 +643,7 @@ if i32.const 4 i32.const 16 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -639,7 +669,7 @@ if i32.const 4 i32.const 18 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -656,7 +686,7 @@ if i32.const 4 i32.const 17 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -671,7 +701,7 @@ if i32.const 4 i32.const 19 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -686,7 +716,7 @@ if i32.const 8 i32.const 20 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -700,9 +730,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -911,7 +941,7 @@ if i32.const 12 i32.const 21 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -931,7 +961,7 @@ if i32.const 4 i32.const 22 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -976,12 +1006,16 @@ (local $6 i32) (local $7 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -1360,7 +1394,7 @@ call $field-initialization/SomeObject#constructor local.set $4 local.get $4 - i32.const 208 + i32.const 224 i32.store offset=4 local.get $4 i32.const 0 @@ -1383,7 +1417,7 @@ end local.get $5 i32.load offset=4 - i32.const 208 + i32.const 224 call $~lib/string/String.__eq i32.eqz if @@ -1401,7 +1435,7 @@ i32.const 2 i32.store local.get $6 - i32.const 240 + i32.const 256 i32.store offset=4 local.get $6 call $~lib/rt/stub/__retain @@ -1421,7 +1455,7 @@ end local.get $7 i32.load offset=4 - i32.const 240 + i32.const 256 call $~lib/string/String.__eq i32.eqz if @@ -1452,7 +1486,7 @@ call $field-initialization/SomeOtherObject#constructor local.set $7 local.get $7 - i32.const 272 + i32.const 288 i32.store offset=8 local.get $7 i32.const 0 @@ -1491,7 +1525,7 @@ end local.get $6 i32.load offset=8 - i32.const 272 + i32.const 288 call $~lib/string/String.__eq i32.eqz if @@ -1509,10 +1543,10 @@ i32.const 3 i32.store local.get $5 - i32.const 304 + i32.const 320 i32.store offset=4 local.get $5 - i32.const 336 + i32.const 352 i32.store offset=8 local.get $5 call $~lib/rt/stub/__retain @@ -1532,7 +1566,7 @@ end local.get $4 i32.load offset=4 - i32.const 304 + i32.const 320 call $~lib/string/String.__eq i32.eqz if @@ -1545,7 +1579,7 @@ end local.get $4 i32.load offset=8 - i32.const 336 + i32.const 352 call $~lib/string/String.__eq i32.eqz if @@ -1590,7 +1624,7 @@ if i32.const 4 i32.const 23 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $1 end @@ -1623,7 +1657,7 @@ if i32.const 4 i32.const 24 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 17a007bcaa..6391642a2e 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -2,19 +2,18 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") + (data (i32.const 1068) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1132) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1196) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $for/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $for/testNestedContinue @@ -66,7 +65,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -77,7 +76,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -88,7 +87,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -110,8 +109,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 277 + i32.const 1216 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -120,18 +119,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1072 - i32.const 279 + i32.const 1216 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -173,28 +172,28 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 292 + i32.const 1216 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -265,8 +264,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 205 + i32.const 1216 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -279,14 +278,14 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 207 + i32.const 1216 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -302,14 +301,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -324,7 +323,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -352,8 +351,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 228 + i32.const 1216 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -361,14 +360,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -397,33 +396,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1072 - i32.const 243 + i32.const 1216 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1072 - i32.const 244 + i32.const 1216 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -470,8 +469,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 260 + i32.const 1216 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -489,15 +488,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -535,54 +534,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1072 - i32.const 386 - i32.const 5 + i32.const 1216 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 396 + i32.const 1216 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -598,18 +595,17 @@ i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 408 + i32.const 1216 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -619,23 +615,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -646,93 +643,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1248 + i32.const 0 + i32.store + i32.const 2816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1248 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1248 + i32.const 2820 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1248 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -769,8 +757,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 351 + i32.const 1216 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -795,110 +783,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1072 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 520 + i32.const 1216 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -907,17 +867,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -925,7 +885,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -940,7 +900,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -965,16 +925,39 @@ (local $0 i32) (local $1 i32) (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add local.tee $0 - i32.const 1216 + i32.const 1248 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -989,7 +972,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1006,7 +989,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1017,11 +1000,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1216 + i32.const 1248 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1049,7 +1032,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -1078,7 +1061,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -1105,7 +1088,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -1134,7 +1117,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -1156,7 +1139,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -1182,7 +1165,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -1215,7 +1198,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -1238,7 +1221,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 127 i32.const 1 call $~lib/builtins/abort @@ -1281,7 +1264,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -1290,7 +1273,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -1304,7 +1287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -1354,7 +1337,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -1363,7 +1346,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -1377,7 +1360,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -1402,7 +1385,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1416,21 +1399,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1216 + i32.const 1248 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1444,7 +1427,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1465,7 +1448,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1152 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 9247f271a1..8a0002dc8f 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -1,26 +1,24 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") + (data (i32.const 44) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 108) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 172) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $for/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 208)) + (global $~lib/heap/__heap_base i32 (i32.const 224)) (export "memory" (memory $0)) (start $~start) (func $for/testInitExpression @@ -470,8 +468,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 277 + i32.const 192 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -485,11 +483,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -497,8 +495,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 279 + i32.const 192 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,29 +549,29 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 292 + i32.const 192 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -683,8 +681,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 205 + i32.const 192 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -700,8 +698,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 207 + i32.const 192 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -709,7 +707,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -731,7 +729,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -741,7 +739,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -758,7 +756,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -795,8 +793,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 228 + i32.const 192 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -806,7 +804,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -816,7 +814,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -848,11 +846,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -860,8 +858,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 243 + i32.const 192 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -869,7 +867,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -878,8 +876,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 244 + i32.const 192 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -937,8 +935,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 260 + i32.const 192 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -962,15 +960,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -1039,31 +1037,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 64 - i32.const 386 - i32.const 5 + i32.const 192 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -1077,14 +1077,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 396 + i32.const 192 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -1116,8 +1116,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 408 + i32.const 192 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -1128,10 +1128,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -1139,9 +1139,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -1157,15 +1157,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -1184,7 +1184,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -1197,127 +1197,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1325,49 +1344,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 112 i32.const 64 + i32.const 192 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1390,7 +1384,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1444,8 +1438,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 338 + i32.const 192 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1509,8 +1503,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 351 + i32.const 192 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1566,7 +1560,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1584,11 +1578,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1652,14 +1646,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 64 - i32.const 365 + i32.const 192 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1673,8 +1669,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1686,14 +1682,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1712,7 +1708,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1724,7 +1720,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1741,136 +1737,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 192 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 520 + i32.const 192 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 64 + i32.const 128 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1895,7 +1872,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1918,7 +1895,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1931,7 +1908,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1943,7 +1920,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1955,7 +1932,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2302,18 +2279,10 @@ (func $~start call $start:for ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -2352,7 +2321,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2363,7 +2332,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -2378,7 +2347,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2395,7 +2364,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2433,14 +2402,14 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 128 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index b83d0ceef2..8f2611b350 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -7,15 +7,15 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1088) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1120) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") - (data (i32.const 1168) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04") - (data (i32.const 1200) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\05") - (data (i32.const 1232) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\06") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\07") - (data (i32.const 1296) "\08\00\00\00\01\00\00\00\08\00\00\00\08\00\00\00\08") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02") + (data (i32.const 1100) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03") + (data (i32.const 1132) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") + (data (i32.const 1196) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04") + (data (i32.const 1228) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\05") + (data (i32.const 1260) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06") + (data (i32.const 1292) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\07") + (data (i32.const 1324) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\08") (table $0 9 funcref) (elem (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2 $function-call/Foo#fnVoid $start:function-call~fn2 $function-call/Foo#fnRet) (global $function-call/foo (mut i32) (i32.const 0)) @@ -43,22 +43,22 @@ (func $start:function-call (local $0 i32) (local $1 i32) - i32.const 1040 + i32.const 1056 i32.load call_indirect (type $none_=>_none) - i32.const 1072 + i32.const 1088 i32.load call_indirect (type $none_=>_none) i32.const 1 i32.const 2 - i32.const 1104 + i32.const 1120 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1136 + i32.const 1152 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -66,43 +66,49 @@ end i32.const 2 i32.const 3 - i32.const 1184 + i32.const 1216 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 5 i32.ne if i32.const 0 - i32.const 1136 + i32.const 1152 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1216 + i32.const 1248 i32.load call_indirect (type $i32_=>_i32) i32.const 1 i32.ne if i32.const 0 - i32.const 1136 + i32.const 1152 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 + i32.const 1388 memory.size local.tee $1 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $0 i32.gt_u if local.get $1 - i32.const 66895 + i32.const 66923 local.get $0 i32.sub i32.const -65536 @@ -127,33 +133,36 @@ end end end - i32.const 1328 - i32.const 16 + i32.const 1356 + i32.const 28 i32.store - i32.const 1332 - i32.const 1 + i32.const 1360 + i32.const 0 i32.store - i32.const 1336 + i32.const 1364 + i32.const 0 + i32.store + i32.const 1368 i32.const 6 i32.store - i32.const 1340 + i32.const 1372 i32.const 0 i32.store - i32.const 1344 + i32.const 1376 global.set $function-call/foo - i32.const 1344 - i32.const 1248 + i32.const 1376 + i32.const 1280 i32.load call_indirect (type $i32_=>_none) i32.const 1 - i32.const 1280 + i32.const 1312 i32.load call_indirect (type $i32_=>_i32) i32.const 1 i32.ne if i32.const 0 - i32.const 1136 + i32.const 1152 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -162,14 +171,14 @@ global.get $function-call/foo i32.const 1 i32.const 2 - i32.const 1312 + i32.const 1344 i32.load call_indirect (type $i32_i32_i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1136 + i32.const 1152 i32.const 34 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index 9c92a36153..0cf36390c2 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -1,33 +1,33 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 80) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 112) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00") - (data (i32.const 160) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 192) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 224) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\08\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 76) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 108) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00") + (data (i32.const 172) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 204) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 236) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") + (data (i32.const 268) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") + (data (i32.const 300) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") (table $0 9 funcref) (elem (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|1 $start:function-call~anonymous|2 $start:function-call~anonymous|3 $start:function-call~fn2 $function-call/Foo#fnVoid $function-call/Foo#fnThis $function-call/Foo#fnRet) (global $function-call/fnVoid (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $function-call/faVoid (mut i32) (i32.const 64)) (global $function-call/fnRet (mut i32) (i32.const 96)) - (global $function-call/faRet (mut i32) (i32.const 176)) - (global $function-call/fnThis (mut i32) (i32.const 208)) + (global $function-call/faRet (mut i32) (i32.const 192)) + (global $function-call/fnThis (mut i32) (i32.const 224)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $function-call/foo (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 312)) + (global $~lib/heap/__heap_base i32 (i32.const 328)) (export "memory" (memory $0)) (start $~start) (func $start:function-call~anonymous|0 @@ -49,6 +49,19 @@ (func $start:function-call~fn2 (param $0 i32) (result i32) local.get $0 ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -60,6 +73,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -103,60 +126,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -167,7 +197,7 @@ if i32.const 0 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -249,12 +279,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -264,13 +298,13 @@ global.get $function-call/foo i32.const 0 global.set $~argumentsLength - i32.const 240 + i32.const 256 i32.load call_indirect (type $i32_=>_none) i32.const 1 i32.const 0 global.set $~argumentsLength - i32.const 272 + i32.const 288 i32.load call_indirect (type $i32_=>_i32) i32.const 1 @@ -289,7 +323,7 @@ i32.const 2 i32.const 2 global.set $~argumentsLength - i32.const 304 + i32.const 320 i32.load call_indirect (type $i32_i32_i32_=>_i32) i32.const 3 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 9384556cdd..4c83d43216 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -6,24 +6,24 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data (i32.const 1120) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\04") - (data (i32.const 1216) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\05") - (data (i32.const 1248) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\06") - (data (i32.const 1280) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\07") - (data (i32.const 1312) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\08") - (data (i32.const 1344) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\t") - (data (i32.const 1376) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\n") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\0b") - (data (i32.const 1440) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0c") - (data (i32.const 1472) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0d") - (data (i32.const 1504) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0e") - (data (i32.const 1536) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0f") - (data (i32.const 1568) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\10") - (data (i32.const 1600) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\11") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data (i32.const 1132) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02") + (data (i32.const 1164) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03") + (data (i32.const 1196) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04") + (data (i32.const 1228) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05") + (data (i32.const 1260) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06") + (data (i32.const 1292) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07") + (data (i32.const 1324) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08") + (data (i32.const 1356) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\t") + (data (i32.const 1388) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\n") + (data (i32.const 1420) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b") + (data (i32.const 1452) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0c") + (data (i32.const 1484) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0d") + (data (i32.const 1516) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0e") + (data (i32.const 1548) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0f") + (data (i32.const 1580) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\10") + (data (i32.const 1612) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\11") (table $0 18 funcref) (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|2 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testGlobal~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0) (export "memory" (memory $0)) @@ -61,92 +61,92 @@ i32.add ) (func $function-expression/testGlobal~anonymous|0 (result i32) - i32.const 1456 + i32.const 1472 ) (func $function-expression/testLocal~anonymous|0 (result i32) - i32.const 1520 + i32.const 1536 ) (func $function-expression/testField~anonymous|0 (result i32) - i32.const 1584 + i32.const 1600 ) (func $start:function-expression (local $0 i32) (local $1 i32) i32.const 1 - i32.const 1040 + i32.const 1056 i32.load call_indirect (type $i32_=>_i32) i32.const 1 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2 - i32.const 1136 + i32.const 1152 i32.load call_indirect (type $i32_=>_i32) i32.const 2 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 + i32.const 1184 i32.load call_indirect (type $none_=>_none) - i32.const 1200 + i32.const 1216 i32.load call_indirect (type $none_=>_i32) i32.const 1 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1232 + i32.const 1248 call $function-expression/testOmitted i32.const 3 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1264 + i32.const 1280 call $function-expression/testOmitted i32.const 1 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1296 + i32.const 1312 call $function-expression/testOmitted i32.const 42 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -154,14 +154,14 @@ end i32.const 1 i32.const 2 - i32.const 1328 + i32.const 1344 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -169,14 +169,14 @@ end i32.const 1 i32.const 2 - i32.const 1360 + i32.const 1376 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 1 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -184,21 +184,21 @@ end i32.const 1 i32.const 2 - i32.const 1392 + i32.const 1408 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 42 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1488 + i32.const 1504 i32.load call_indirect (type $none_=>_i32) i32.load @@ -207,14 +207,14 @@ i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 57 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1552 + i32.const 1568 i32.load call_indirect (type $none_=>_i32) i32.load @@ -223,22 +223,28 @@ i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1664 + i32.const 1676 memory.size local.tee $1 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $0 i32.gt_u if local.get $1 - i32.const 67199 + i32.const 67211 local.get $0 i32.sub i32.const -65536 @@ -263,23 +269,26 @@ end end end - i32.const 1632 - i32.const 16 + i32.const 1644 + i32.const 28 i32.store - i32.const 1636 - i32.const 1 + i32.const 1648 + i32.const 0 i32.store - i32.const 1640 + i32.const 1652 + i32.const 0 + i32.store + i32.const 1656 i32.const 8 i32.store - i32.const 1644 + i32.const 1660 i32.const 4 i32.store - i32.const 1648 - i32.const 1616 + i32.const 1664 + i32.const 1632 i32.store i32.const 1 - i32.const 1648 + i32.const 1664 i32.load i32.load call_indirect (type $none_=>_i32) @@ -289,7 +298,7 @@ i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 82 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index c59cfba85b..c29029d4be 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -7,24 +7,24 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 112) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 144) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 208) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 240) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 272) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 304) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (data (i32.const 336) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 368) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") - (data (i32.const 432) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") - (data (i32.const 464) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") - (data (i32.const 496) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") - (data (i32.const 528) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 560) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 592) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 108) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 140) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 172) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 204) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 236) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") + (data (i32.const 268) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") + (data (i32.const 300) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 332) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 364) "\08\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") + (data (i32.const 396) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") + (data (i32.const 428) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") + (data (i32.const 460) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") + (data (i32.const 492) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") + (data (i32.const 524) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") + (data (i32.const 556) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 588) "\08\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") (table $0 18 funcref) (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0 $function-expression/testNullable~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testGlobal~anonymous|0 $function-expression/testLocal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testField~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0) (global $function-expression/f1 (mut i32) (i32.const 32)) @@ -227,6 +227,19 @@ local.get $1 call $~lib/rt/stub/__release ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -238,6 +251,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -281,60 +304,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $function-expression/FieldClass#constructor (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -342,7 +372,7 @@ if i32.const 4 i32.const 8 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -580,12 +610,16 @@ call $function-expression/testGlobal call $function-expression/testLocal global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 7f9d073b3f..3572cc485a 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -7,11 +7,11 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") - (data (i32.const 1120) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\02") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\03") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\04") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data (i32.const 1132) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02") + (data (i32.const 1164) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03") + (data (i32.const 1196) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\04") (table $0 5 funcref) (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) (global $function-types/i32Adder (mut i32) (i32.const 0)) @@ -40,18 +40,18 @@ call_indirect (type $i32_i32_=>_i32) ) (func $start:function-types - i32.const 1040 + i32.const 1056 global.set $function-types/i32Adder i32.const 1 i32.const 2 - i32.const 1040 + i32.const 1056 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -59,14 +59,14 @@ end i64.const 10 i64.const 20 - i32.const 1136 + i32.const 1152 i32.load call_indirect (type $i64_i64_=>_i64) i64.const 30 i64.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -74,14 +74,14 @@ end f64.const 1.5 f64.const 2.5 - i32.const 1168 + i32.const 1184 i32.load call_indirect (type $f64_f64_=>_f64) f64.const 4 f64.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -95,7 +95,7 @@ i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -103,14 +103,14 @@ end i32.const 3 i32.const 4 - i32.const 1040 + i32.const 1056 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 7 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -118,13 +118,13 @@ end i32.const 4 i32.const 5 - i32.const 1200 + i32.const 1216 call $function-types/doAddWithFn i32.const 9 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -132,13 +132,13 @@ end i32.const 1 i32.const 2 - i32.const 1040 + i32.const 1056 call $function-types/doAddWithFn i32.const 3 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -146,13 +146,13 @@ end i32.const 1 i32.const 2 - i32.const 1040 + i32.const 1056 call $function-types/doAddWithFn i32.const 3 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 42 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index a682c4a707..4977dec3e6 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -10,11 +10,11 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") - (data (i32.const 112) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 144) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") + (data (i32.const 108) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 140) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 172) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") (table $0 5 funcref) (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) (global $function-types/i32Adder (mut i32) (i32.const 0)) diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index e809d8a045..cf8074fdfb 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -2,7 +2,7 @@ (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01") (table $0 2 funcref) (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -17,17 +17,25 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $3 - i32.const 16 + local.tee $4 + i32.const 28 i32.add local.tee $0 memory.size local.tee $2 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $1 i32.gt_u if @@ -61,27 +69,29 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 + i32.const 28 + i32.store + local.get $4 + i32.const 4 i32.sub local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 0 i32.store offset=8 local.get $0 - i32.const 0 + i32.const 3 i32.store offset=12 - i32.const 1040 + local.get $0 + i32.const 0 + i32.store offset=16 + i32.const 1056 i32.load call_indirect (type $none_=>_i32) ) (func $~start - i32.const 1056 + i32.const 1068 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 9397fc74a6..ac707d90f6 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -1,11 +1,11 @@ (module - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -15,6 +15,19 @@ (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -26,6 +39,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -69,60 +92,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -133,7 +163,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -172,12 +202,16 @@ ) (func $~start global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat index 74641982c2..411ee93ccb 100644 --- a/tests/compiler/getter-setter.optimized.wat +++ b/tests/compiler/getter-setter.optimized.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") + (data (i32.const 1036) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -11,7 +11,7 @@ global.get $getter-setter/Foo._bar if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 13 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index 5c91033b3e..d477382749 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -5,7 +5,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00") + (data (i32.const 12) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index 313c758fd6..d329672459 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -4,8 +4,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s") - (data (i32.const 1056) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (data (i32.const 1036) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s") + (data (i32.const 1068) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") (export "memory" (memory $0)) (export "ifThenElse" (func $if/ifThenElse)) (export "ifThen" (func $if/ifThen)) @@ -29,8 +29,8 @@ local.get $0 i32.eqz if - i32.const 1072 - i32.const 1040 + i32.const 1088 + i32.const 1056 i32.const 37 i32.const 5 call $~lib/builtins/abort @@ -43,7 +43,7 @@ call $if/ifThen if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -55,7 +55,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 18 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index 66e6635a9d..b735eec1ec 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -4,8 +4,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00") - (data (i32.const 48) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") + (data (i32.const 12) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00") + (data (i32.const 44) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") (table $0 1 funcref) (export "memory" (memory $0)) (export "ifThenElse" (func $if/ifThenElse)) diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 92346840ab..65d3ef3902 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1,29 +1,30 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\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 ") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1216) "\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 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) + (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "Basic" (global $implicit-getter-setter/Basic)) (export "Basic#get:val" (func $implicit-getter-setter/Basic#get:val)) @@ -46,8 +47,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1056 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -56,18 +57,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1056 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -109,28 +110,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1056 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -201,8 +202,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1056 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -215,14 +216,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1056 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -238,14 +239,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -260,7 +261,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -288,8 +289,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1056 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -297,14 +298,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -333,33 +334,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1056 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1056 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -406,8 +407,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1056 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -425,15 +426,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -471,54 +472,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1056 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1056 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -534,18 +533,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1056 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -555,23 +553,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -582,93 +581,109 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1264 + i32.const 0 + i32.store + i32.const 2832 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1264 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1264 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1264 + i32.const 2836 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1264 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.ge_u + if + i32.const 1120 + i32.const 1056 + i32.const 461 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $0 + i32.const 12 + i32.le_u + select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -694,7 +709,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -725,8 +740,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 338 + i32.const 1056 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -777,8 +792,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1056 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -806,12 +821,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1040 - i32.const 365 + i32.const 1056 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -822,7 +839,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -834,12 +851,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -854,7 +871,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -874,169 +891,565 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 + call $~lib/rt/tlsf/prepareSize + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 if - unreachable + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 end end + else + local.get $1 + i32.const 7 + i32.and local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.const 7 + i32.and + i32.eq if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end end end end - local.get $3 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + call $~lib/memory/memory.copy + local.get $1 + i32.const 1260 + i32.ge_u + if + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $2 + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1260 i32.lt_u if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $5 + i32.const -4 + i32.and + local.tee $3 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $7 + i32.const 1 + i32.and + if + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $4 + i32.ge_u + if + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $5 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $2 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock + end + end + local.get $0 + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + i32.const 1260 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 275 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub + local.get $1 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__realloc + local.tee $4 + i32.const 4 + i32.sub + local.tee $0 local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 local.get $0 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=16 + local.get $4 i32.const 16 i32.add ) @@ -1044,11 +1457,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1228 + i32.const 1260 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1063,7 +1476,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1080,7 +1493,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1091,11 +1504,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1228 + i32.const 1260 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1106,7 +1519,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1130,7 +1543,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1163,9 +1576,6 @@ local.get $1 i32.store ) - (func $~lib/rt/pure/__collect - nop - ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -1181,7 +1591,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1195,21 +1605,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1228 + i32.const 1260 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1223,28 +1633,22 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 126 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/insertBlock + call $~lib/rt/tlsf/freeBlock else local.get $1 i32.const 0 i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 548a58a958..408ad62cf7 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -1,33 +1,34 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\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\00\00\00\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 192) "\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\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (global $~lib/heap/__heap_base i32 (i32.const 220)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 192)) + (global $~lib/heap/__heap_base i32 (i32.const 236)) (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "Basic" (global $implicit-getter-setter/Basic)) (export "Basic#get:val" (func $implicit-getter-setter/Basic#get:val)) @@ -60,7 +61,7 @@ if i32.const 0 i32.const 32 - i32.const 277 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -74,11 +75,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -87,7 +88,7 @@ if i32.const 0 i32.const 32 - i32.const 279 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -141,28 +142,28 @@ if i32.const 0 i32.const 32 - i32.const 292 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -273,7 +274,7 @@ if i32.const 0 i32.const 32 - i32.const 205 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -290,7 +291,7 @@ if i32.const 0 i32.const 32 - i32.const 207 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -298,7 +299,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -320,7 +321,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -330,7 +331,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -347,7 +348,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -385,7 +386,7 @@ if i32.const 0 i32.const 32 - i32.const 228 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -395,7 +396,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -405,7 +406,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -437,11 +438,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -450,7 +451,7 @@ if i32.const 0 i32.const 32 - i32.const 243 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -458,7 +459,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -468,7 +469,7 @@ if i32.const 0 i32.const 32 - i32.const 244 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -527,7 +528,7 @@ if i32.const 0 i32.const 32 - i32.const 260 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,15 +552,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -628,31 +629,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 i32.const 32 - i32.const 386 - i32.const 5 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -666,14 +669,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 396 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -706,7 +709,7 @@ if i32.const 0 i32.const 32 - i32.const 408 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -717,10 +720,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -728,9 +731,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -746,15 +749,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -773,7 +776,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -786,127 +789,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -914,29 +936,16 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 + i32.const 96 i32.const 32 i32.const 461 i32.const 30 @@ -944,19 +953,7 @@ unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -979,7 +976,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1034,7 +1031,7 @@ if i32.const 0 i32.const 32 - i32.const 338 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1099,7 +1096,7 @@ if i32.const 0 i32.const 32 - i32.const 351 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1155,7 +1152,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1173,11 +1170,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1241,6 +1238,8 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz @@ -1248,7 +1247,7 @@ if i32.const 0 i32.const 32 - i32.const 365 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1262,8 +1261,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1275,14 +1274,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1301,7 +1300,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1313,7 +1312,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1330,224 +1329,1726 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 32 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 520 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock - i32.const 16 + i32.const 4 i32.add ) - (func $~lib/rt/pure/increment (param $0 i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 + i32.const 4 + i32.sub local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 + i32.const 32 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $1 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end end - ) - (func $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.eqz + i32.const 3 + i32.and + i32.const 0 + i32.eq if - i32.const 4 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) + (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $5 + local.get $3 + local.get $5 + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.load + local.set $8 + local.get $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $7 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $6 + i32.or + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $5 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 112 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/pure/__release (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 3 + call $~lib/rt/pure/__new + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 local.get $1 i32.store local.get $0 @@ -1567,7 +3068,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1605,27 +3106,6 @@ local.get $1 i32.store ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -1655,7 +3135,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1666,7 +3146,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1681,7 +3161,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1698,7 +3178,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1736,14 +3216,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index ebe9642e9f..c97e3c9941 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -2,72 +2,88 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1056) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1120) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1168) "\18\00\00\00\01\00\00\00\00\00\00\00\18") - (data (i32.const 1190) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1216) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data (i32.const 1248) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1296) "\18\00\00\00\01\00\00\00\00\00\00\00\18") - (data (i32.const 1318) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1344) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00p\05") - (data (i32.const 1440) "\04\00\00\00\01\00\00\00\00\00\00\00\04") - (data (i32.const 1472) "\08\00\00\00\01\00\00\00\00\00\00\00\08") - (data (i32.const 1504) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01") - (data (i32.const 1536) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01") - (data (i32.const 1568) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 1600) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\02") - (data (i32.const 1632) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 1036) "\0c\00\00\00\01") + (data (i32.const 1052) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1068) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1132) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1180) "\18\00\00\00\01") + (data (i32.const 1196) "\18") + (data (i32.const 1206) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 1228) "\08\00\00\00\01") + (data (i32.const 1244) "\08\00\00\00\01\00\00\00\ff\ff\ff\ff") + (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1308) "\18\00\00\00\01") + (data (i32.const 1324) "\18") + (data (i32.const 1334) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 1356) "\0c\00\00\00\01") + (data (i32.const 1372) "\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 1388) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1420) "\08\00\00\00\01") + (data (i32.const 1436) "\08\00\00\00\00\00\00\00\80\05") + (data (i32.const 1452) "\04\00\00\00\01") + (data (i32.const 1468) "\04") + (data (i32.const 1484) "\08\00\00\00\01") + (data (i32.const 1500) "\08") + (data (i32.const 1516) "\08\00\00\00\01") + (data (i32.const 1532) "\08\00\00\00\01") + (data (i32.const 1548) "\08\00\00\00\01") + (data (i32.const 1564) "\08\00\00\00\00\00\00\00\01") + (data (i32.const 1580) "\04\00\00\00\01") + (data (i32.const 1596) "\04\00\00\00\01") + (data (i32.const 1612) "\04\00\00\00\01") + (data (i32.const 1628) "\04\00\00\00\02") + (data (i32.const 1644) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -75,16 +91,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -93,24 +109,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -285,12 +320,12 @@ end end ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) i32.const 16 local.get $2 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $0 local.get $1 @@ -299,7 +334,7 @@ local.set $5 local.get $4 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 local.get $3 if @@ -326,27 +361,27 @@ (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 1744 + i32.const 1772 global.set $~lib/rt/stub/offset i32.const 3 i32.const 2 i32.const 3 - i32.const 1040 - call $~lib/rt/__allocArray + i32.const 1056 + call $~lib/rt/__newArray drop i32.const 3 i32.const 3 i32.const 4 - i32.const 1184 - call $~lib/rt/__allocArray + i32.const 1200 + call $~lib/rt/__newArray drop block $folding-inner0 i32.const 1 i32.const 2 i32.const 2 i32.const 5 - i32.const 1232 - call $~lib/rt/__allocArray + i32.const 1248 + call $~lib/rt/__newArray local.tee $0 i32.load offset=12 i32.ge_u @@ -358,7 +393,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1280 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -367,15 +402,15 @@ i32.const 3 i32.const 3 i32.const 4 - i32.const 1312 - call $~lib/rt/__allocArray + i32.const 1328 + call $~lib/rt/__newArray drop i32.const 1 i32.const 3 i32.const 2 i32.const 6 - i32.const 1360 - call $~lib/rt/__allocArray + i32.const 1376 + call $~lib/rt/__newArray local.tee $0 i32.load offset=12 i32.ge_u @@ -386,17 +421,17 @@ drop i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 i32.const 2 i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray i32.load offset=4 local.tee $2 local.get $0 @@ -406,17 +441,17 @@ i32.store offset=4 i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $1 i32.const 2 i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray i32.load offset=4 local.tee $2 local.get $0 @@ -426,13 +461,13 @@ i32.store offset=4 i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 i32.const 2 i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray i32.load offset=4 local.tee $1 local.get $0 @@ -443,57 +478,57 @@ i32.const 2 i32.const 2 i32.const 9 - i32.const 1424 - call $~lib/rt/__allocArray + i32.const 1440 + call $~lib/rt/__newArray drop i32.const 1 i32.const 2 i32.const 10 - i32.const 1456 - call $~lib/rt/__allocArray + i32.const 1472 + call $~lib/rt/__newArray drop i32.const 2 i32.const 2 i32.const 10 - i32.const 1488 - call $~lib/rt/__allocArray + i32.const 1504 + call $~lib/rt/__newArray drop i32.const 2 i32.const 2 i32.const 3 - i32.const 1520 - call $~lib/rt/__allocArray + i32.const 1536 + call $~lib/rt/__newArray drop i32.const 2 i32.const 2 i32.const 3 - i32.const 1552 - call $~lib/rt/__allocArray + i32.const 1568 + call $~lib/rt/__newArray drop i32.const 2 i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray i32.load offset=4 local.tee $0 i32.const 1 i32.const 2 i32.const 3 - i32.const 1584 - call $~lib/rt/__allocArray + i32.const 1600 + call $~lib/rt/__newArray i32.store local.get $0 i32.const 1 i32.const 2 i32.const 3 - i32.const 1616 - call $~lib/rt/__allocArray + i32.const 1632 + call $~lib/rt/__newArray i32.store offset=4 return end - i32.const 1072 - i32.const 1136 + i32.const 1088 + i32.const 1152 i32.const 104 i32.const 42 call $~lib/builtins/abort diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 6ee473ce24..4f46334652 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1,9 +1,9 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -11,23 +11,23 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 48) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 160) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 208) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data (i32.const 240) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 288) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 336) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\80\01\00\00") - (data (i32.const 432) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 464) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 496) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 528) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00") - (data (i32.const 560) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 592) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00") - (data (i32.const 624) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 44) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 108) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 156) "\18\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 204) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") + (data (i32.const 236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 284) "\18\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 332) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 364) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 396) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\80\01\00\00") + (data (i32.const 428) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 460) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 492) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 524) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00") + (data (i32.const 556) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 588) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00") + (data (i32.const 620) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -35,6 +35,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 736)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -46,6 +59,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -89,60 +112,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1397,11 +1427,11 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $2 if @@ -1415,13 +1445,13 @@ (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $4 local.get $0 local.get $1 @@ -1430,7 +1460,7 @@ local.get $5 i32.const 0 local.get $3 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer local.set $6 local.get $4 local.get $6 @@ -1580,7 +1610,7 @@ if i32.const 0 i32.const 7 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -1739,12 +1769,16 @@ (local $3 i32) (local $4 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -1752,7 +1786,7 @@ i32.const 2 i32.const 3 i32.const 32 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 i32.const 1 @@ -1765,7 +1799,7 @@ i32.const 3 i32.const 4 i32.const 176 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $0 i32.const 1 @@ -1776,7 +1810,7 @@ i32.const 2 i32.const 5 i32.const 224 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 i32.const 1 @@ -1804,7 +1838,7 @@ i32.const 3 i32.const 4 i32.const 304 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $0 i32.const 1 @@ -1815,7 +1849,7 @@ i32.const 2 i32.const 6 i32.const 352 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 i32.const 1 @@ -1836,7 +1870,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $3 local.get $3 @@ -1872,7 +1906,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $0 local.get $0 @@ -1905,7 +1939,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 local.get $1 @@ -1933,7 +1967,7 @@ i32.const 2 i32.const 9 i32.const 416 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $4 i32.const 1 @@ -1946,7 +1980,7 @@ i32.const 2 i32.const 10 i32.const 448 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $4 i32.const 1 @@ -1958,7 +1992,7 @@ i32.const 2 i32.const 10 i32.const 480 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $0 i32.const 1 @@ -1974,7 +2008,7 @@ i32.const 2 i32.const 3 i32.const 512 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $4 i32.const 1 @@ -1986,7 +2020,7 @@ i32.const 2 i32.const 3 i32.const 544 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 i32.const 1 @@ -2002,7 +2036,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 local.get $1 @@ -2013,7 +2047,7 @@ i32.const 2 i32.const 3 i32.const 576 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain i32.store local.get $4 @@ -2021,7 +2055,7 @@ i32.const 2 i32.const 3 i32.const 608 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain i32.store offset=4 local.get $1 diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index ce07f87f18..d894989ca6 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -4,10 +4,11 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") - (data (i32.const 1072) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 1104) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00@\04\00\00@\04\00\00\0c\00\00\00\03") - (data (i32.const 1136) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01") + (data (i32.const 1036) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") + (data (i32.const 1100) "\0c\00\00\00\01") + (data (i32.const 1116) "\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 1132) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00`\04\00\00`\04\00\00\0c\00\00\00\03") + (data (i32.const 1180) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01") (table $0 2 funcref) (elem (i32.const 1) $start:infer-generic~anonymous|0) (export "memory" (memory $0)) @@ -36,12 +37,12 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1132 + i32.const 1164 i32.load local.set $1 loop $for-loop|0 local.get $1 - i32.const 1132 + i32.const 1164 i32.load local.tee $2 i32.lt_s @@ -54,7 +55,7 @@ i32.lt_s if local.get $4 - i32.const 1124 + i32.const 1156 i32.load local.get $0 i32.const 2 @@ -62,8 +63,8 @@ i32.add f32.load local.get $0 - i32.const 1120 i32.const 1152 + i32.const 1200 i32.load call_indirect (type $i32_f32_i32_i32_=>_i32) local.set $4 diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 8c4d706838..3d7c274435 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -9,13 +9,13 @@ (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00") - (data (i32.const 64) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 96) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00P\00\00\00P\00\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 128) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 12) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00") + (data (i32.const 76) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 108) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00`\00\00\00`\00\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 156) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $start:infer-generic~anonymous|0) - (global $infer-generic/arr i32 (i32.const 112)) + (global $infer-generic/arr i32 (i32.const 128)) (global $~argumentsLength (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "test1" (func $infer-generic/test1)) @@ -128,7 +128,7 @@ unreachable end global.get $infer-generic/arr - i32.const 144 + i32.const 176 i32.const 0 call $~lib/array/Array#reduce drop diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.optimized.wat index ce5c7454ee..b27d6e15d0 100644 --- a/tests/compiler/inlining-blocklocals.optimized.wat +++ b/tests/compiler/inlining-blocklocals.optimized.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data (i32.const 1036) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) @@ -25,7 +25,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -36,7 +36,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 20 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat index 7431ad7d83..75eec4d7da 100644 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ b/tests/compiler/inlining-blocklocals.untouched.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data (i32.const 12) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0)) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 40b5a9b781..52d237d02d 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,13 +1,13 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") - (data (i32.const 1072) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") + (data (i32.const 1084) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") (table $0 2 funcref) (elem (i32.const 1) $inlining/func_fe~anonymous|0) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -20,46 +20,49 @@ (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -67,16 +70,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -85,30 +88,49 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $inlining/test_ctor (local $0 i32) i32.const 16 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 3 i32.store offset=8 @@ -120,7 +142,7 @@ if i32.const 8 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -141,7 +163,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -153,7 +175,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -165,7 +187,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -177,7 +199,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -186,20 +208,20 @@ ) (func $~start i32.const 2 - i32.const 1088 + i32.const 1104 i32.load call_indirect (type $i32_=>_i32) i32.const 2 i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1104 + i32.const 1116 global.set $~lib/rt/stub/offset call $inlining/test_ctor ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 50202075bc..d27683dea5 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -1,14 +1,14 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 64) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 60) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $inlining/func_fe~anonymous|0) (global $inlining/constantGlobal i32 (i32.const 1)) @@ -221,6 +221,19 @@ local.get $7 call $~lib/rt/stub/__release ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -232,6 +245,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -275,60 +298,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $inlining/test_ctor (local $0 i32) @@ -343,7 +373,7 @@ if i32.const 16 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $1 end @@ -362,7 +392,7 @@ if i32.const 8 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $3 end @@ -454,12 +484,16 @@ end call $inlining/test_funcs global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index e1d5c7c1c4..f93fe021e7 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -5,28 +5,36 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s") - (data (i32.const 1088) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05") + (data (i32.const 1036) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s") + (data (i32.const 1104) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $instanceof-class/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -60,43 +68,47 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $~start (local $0 i32) - i32.const 1152 + i32.const 1164 global.set $~lib/rt/stub/offset i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.eqz if i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop end i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 if (result i32) local.get $0 else i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end global.set $instanceof-class/b block $__inlined_func$instanceof-class/Child~instanceof (result i32) @@ -123,7 +135,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -132,11 +144,11 @@ ) (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 local.tee $0 - i32.const 1088 + i32.const 1104 i32.load i32.le_u if @@ -151,7 +163,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 1092 + i32.const 1108 i32.add i32.load offset=4 local.tee $0 diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 67f434a05b..024abc31cc 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -6,7 +6,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s\00") + (data (i32.const 12) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s\00") (data (i32.const 80) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05\00\00\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -17,6 +17,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 140)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -28,6 +41,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -71,60 +94,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -135,7 +165,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -147,7 +177,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -162,7 +192,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -174,7 +204,7 @@ if i32.const 0 i32.const 6 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -185,12 +215,16 @@ ) (func $start:instanceof-class global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -232,9 +266,9 @@ (local $3 i32) (local $4 i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 local.set $2 global.get $~lib/rt/__rtti_base local.set $3 diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index e3ce4e0ac0..4cda2cd4ba 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data (i32.const 1036) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") (global $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -11,7 +11,7 @@ global.get $instanceof/an if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 68 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 50638d990a..db4c7b6d22 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -6,7 +6,7 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 12) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") (table $0 1 funcref) (global $instanceof/a (mut i32) (i32.const 0)) (global $instanceof/b (mut i32) (i32.const 0)) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index b1142a3589..e216cd99d4 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -1,21 +1,19 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1264) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") + (data (i32.const 1260) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -31,8 +29,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -41,18 +39,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -94,28 +92,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -186,8 +184,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -200,14 +198,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -223,14 +221,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -245,7 +243,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -273,8 +271,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -282,14 +280,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -318,33 +316,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -391,8 +389,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -410,15 +408,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -456,54 +454,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -519,18 +515,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -540,23 +535,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -567,93 +563,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1376 + i32.const 0 + i32.store + i32.const 2944 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1376 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1312 - local.set $1 - i32.const 1312 - i32.const 0 - i32.store - i32.const 2880 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1312 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1312 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1376 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1312 - i32.const 2896 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1312 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1376 + i32.const 2948 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1376 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -690,8 +677,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -716,110 +703,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -828,17 +787,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -846,7 +805,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -861,7 +820,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -886,11 +845,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1308 + i32.const 1372 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -905,7 +864,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -922,7 +881,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -933,11 +892,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1308 + i32.const 1372 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -947,46 +906,69 @@ (local $1 i32) (local $2 i32) (local $3 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + local.get $1 i32.const 16 i32.add call $~lib/rt/pure/__retain local.tee $3 - i32.const 1200 + i32.const 1248 i32.store local.get $3 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 local.set $2 - local.get $1 + local.get $0 i32.load - local.tee $0 + local.tee $1 i32.eqz if - i32.const 1232 i32.const 1280 + i32.const 1344 i32.const 8 i32.const 13 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.load local.tee $2 i32.ne if - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $0 + local.set $1 local.get $2 call $~lib/rt/pure/__release end - local.get $1 local.get $0 - i32.store local.get $1 + i32.store + local.get $0 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -1006,7 +988,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1020,21 +1002,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$4 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1308 + i32.const 1372 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1048,7 +1030,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1069,7 +1051,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 74338f71c3..f43d76330a 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -1,27 +1,24 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") - (data (i32.const 208) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 256) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") + (data (i32.const 236) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") + (data (i32.const 300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 300)) + (global $~lib/heap/__heap_base i32 (i32.const 348)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -46,8 +43,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -61,11 +58,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -73,8 +70,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -127,29 +124,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -259,8 +256,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -276,8 +273,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -285,7 +282,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -307,7 +304,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -317,7 +314,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -334,7 +331,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -371,8 +368,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -382,7 +379,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -392,7 +389,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -424,11 +421,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -436,8 +433,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -445,7 +442,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -454,8 +451,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -513,8 +510,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -538,15 +535,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -615,31 +612,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -653,14 +652,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -692,8 +691,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -704,10 +703,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -715,9 +714,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -733,15 +732,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -760,7 +759,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -773,127 +772,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -901,49 +919,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -966,7 +959,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1020,8 +1013,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1085,8 +1078,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1142,7 +1135,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1160,11 +1153,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1228,14 +1221,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1249,8 +1244,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1262,14 +1257,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1288,7 +1283,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1300,7 +1295,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1317,136 +1312,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1471,7 +1447,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1494,7 +1470,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1507,7 +1483,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1519,12 +1495,12 @@ if i32.const 4 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end local.get $0 - i32.const 192 + i32.const 224 i32.store local.get $0 ) @@ -1534,7 +1510,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1554,8 +1530,8 @@ if (result i32) local.get $1 else - i32.const 224 - i32.const 272 + i32.const 256 + i32.const 320 i32.const 8 i32.const 13 call $~lib/builtins/abort @@ -1590,18 +1566,10 @@ (func $~start call $start:issues/1095 ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1640,7 +1608,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1651,7 +1619,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1666,7 +1634,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1683,7 +1651,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1721,14 +1689,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index 08a0477c45..899a6925eb 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,19 +1,18 @@ (module - (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $issues/1225/x (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "normal" (func $issues/1225/normal)) @@ -32,8 +31,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -42,18 +41,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -95,28 +94,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -187,8 +186,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -201,14 +200,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -224,14 +223,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -246,7 +245,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -274,8 +273,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -283,14 +282,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -319,33 +318,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -392,8 +391,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -411,15 +410,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -457,54 +456,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -520,18 +517,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -541,23 +537,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -568,93 +565,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1280 + i32.const 0 + i32.store + i32.const 2848 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1280 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1280 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1280 + i32.const 2852 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1280 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -691,8 +679,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -717,110 +705,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 12 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -829,17 +789,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -847,7 +807,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -862,7 +822,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -891,27 +851,50 @@ global.get $issues/1225/x i32.load offset=4 ) - (func $~start + (func $start:issues/1225 (local $0 i32) (local $1 i32) (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 4 + i32.sub + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 3 + i32.store offset=12 + local.get $1 + i32.const 12 + i32.store offset=16 + local.get $0 i32.const 16 i32.add local.tee $0 - i32.const 1228 + i32.const 1276 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub - local.tee $1 - i32.load offset=4 local.tee $2 + i32.load offset=4 + local.tee $1 i32.const -268435456 i32.and - local.get $2 + local.get $1 i32.const 1 i32.add i32.const -268435456 @@ -919,24 +902,24 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.const 1 i32.add i32.store offset=4 - local.get $1 + local.get $2 i32.load i32.const 1 i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -967,7 +950,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -979,7 +962,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -989,11 +972,11 @@ local.tee $0 if local.get $0 - i32.const 1228 + i32.const 1276 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1001,6 +984,9 @@ i32.const 0 global.set $issues/1225/x ) + (func $~start + call $start:issues/1225 + ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -1016,7 +1002,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1030,21 +1016,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1228 + i32.const 1276 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1058,7 +1044,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1079,7 +1065,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index 3dbaf70b6b..55a3520235 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -1,26 +1,24 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $issues/1225/x (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 220)) + (global $~lib/heap/__heap_base i32 (i32.const 252)) (export "memory" (memory $0)) (export "normal" (func $issues/1225/normal)) (export "viaThis" (func $issues/1225/viaThis)) @@ -47,8 +45,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -62,11 +60,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -74,8 +72,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -128,29 +126,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -260,8 +258,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -277,8 +275,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -286,7 +284,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -308,7 +306,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -318,7 +316,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -335,7 +333,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -372,8 +370,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -383,7 +381,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -393,7 +391,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -425,11 +423,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -437,8 +435,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -446,7 +444,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -455,8 +453,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -514,8 +512,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -539,15 +537,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -616,31 +614,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -654,14 +654,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -693,8 +693,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -705,10 +705,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -716,9 +716,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -734,15 +734,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -761,7 +761,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -774,127 +774,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -902,49 +921,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -967,7 +961,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1021,8 +1015,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1086,8 +1080,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1143,7 +1137,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1161,11 +1155,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1229,14 +1223,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1250,8 +1246,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1263,14 +1259,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1289,7 +1285,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1301,7 +1297,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1318,136 +1314,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1472,7 +1449,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1495,7 +1472,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1508,7 +1485,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1520,7 +1497,7 @@ if i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1556,7 +1533,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1574,7 +1551,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 224 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1586,7 +1563,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 224 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -1610,18 +1587,10 @@ (func $~start call $start:issues/1225 ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1660,7 +1629,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1671,7 +1640,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1686,7 +1655,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1703,7 +1672,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1741,14 +1710,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 49496f7073..0f72f7d26b 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,19 +1,18 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") - (data (i32.const 1072) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1120) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1184) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") + (data (i32.const 1084) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1148) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -29,8 +28,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 277 + i32.const 1232 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -39,18 +38,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1088 - i32.const 279 + i32.const 1232 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,28 +91,28 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 292 + i32.const 1232 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -184,8 +183,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 205 + i32.const 1232 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,14 +197,14 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 207 + i32.const 1232 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -221,14 +220,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -243,7 +242,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -271,8 +270,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 228 + i32.const 1232 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -280,14 +279,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -316,33 +315,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1088 - i32.const 243 + i32.const 1232 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1088 - i32.const 244 + i32.const 1232 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,8 +388,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 260 + i32.const 1232 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -408,15 +407,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -454,54 +453,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 5 + i32.const 1232 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 396 + i32.const 1232 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -517,18 +514,17 @@ i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 408 + i32.const 1232 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -538,23 +534,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -565,93 +562,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1264 + i32.const 0 + i32.store + i32.const 2832 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1264 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1264 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1264 + i32.const 2836 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1264 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -688,8 +676,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 351 + i32.const 1232 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -714,110 +702,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 520 + i32.const 1232 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -826,17 +786,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -844,7 +804,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -859,7 +819,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -884,11 +844,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1232 + i32.const 1264 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -903,7 +863,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -920,7 +880,7 @@ i32.and if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -930,19 +890,44 @@ local.get $0 ) (func $logical/Obj#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1232 + i32.const 1264 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -960,7 +945,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -975,7 +960,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -1001,7 +986,7 @@ i32.and if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1015,21 +1000,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1232 + i32.const 1264 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1043,7 +1028,7 @@ i32.and if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1064,7 +1049,7 @@ i32.le_u if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index 95b590c2cb..603b90ba47 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -1,20 +1,19 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 176) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00") + (data (i32.const 60) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 124) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $logical/i (mut i32) (i32.const 0)) (global $logical/I (mut i64) (i64.const 0)) @@ -22,9 +21,7 @@ (global $logical/F (mut f64) (f64.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 224)) + (global $~lib/heap/__heap_base i32 (i32.const 240)) (export "memory" (memory $0)) (start $~start) (func $logical/testShortcutAnd (param $0 i64) (param $1 i32) (result i32) @@ -69,8 +66,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 277 + i32.const 208 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -84,11 +81,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -96,8 +93,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 279 + i32.const 208 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -150,29 +147,29 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 292 + i32.const 208 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -282,8 +279,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 205 + i32.const 208 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -299,8 +296,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 207 + i32.const 208 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -308,7 +305,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -330,7 +327,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -340,7 +337,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -357,7 +354,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -394,8 +391,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 228 + i32.const 208 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -405,7 +402,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -415,7 +412,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -447,11 +444,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -459,8 +456,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 243 + i32.const 208 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -468,7 +465,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -477,8 +474,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 244 + i32.const 208 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -536,8 +533,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 260 + i32.const 208 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -561,15 +558,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -638,31 +635,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 80 - i32.const 386 - i32.const 5 + i32.const 208 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -676,14 +675,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 80 - i32.const 396 + i32.const 208 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -715,8 +714,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 408 + i32.const 208 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -727,10 +726,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -738,9 +737,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -756,15 +755,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -783,7 +782,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -796,127 +795,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -924,49 +942,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 128 i32.const 80 + i32.const 208 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -989,7 +982,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1043,8 +1036,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 338 + i32.const 208 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1108,8 +1101,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 351 + i32.const 208 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1165,7 +1158,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1183,11 +1176,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1251,14 +1244,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 80 - i32.const 365 + i32.const 208 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1272,8 +1267,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1285,14 +1280,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1311,7 +1306,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1323,7 +1318,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1340,136 +1335,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 208 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 80 - i32.const 520 + i32.const 208 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 80 + i32.const 144 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1494,7 +1470,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1517,7 +1493,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1530,7 +1506,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1542,7 +1518,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1554,7 +1530,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2140,18 +2116,10 @@ (func $~start call $start:logical ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -2190,7 +2158,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2201,7 +2169,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -2216,7 +2184,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2233,7 +2201,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2271,14 +2239,14 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 638f2185d5..04fe29934f 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -5,8 +5,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") - (data (i32.const 1072) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m") + (data (i32.const 1036) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") + (data (i32.const 1084) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m") (export "memory" (memory $0)) (export "whileReturn" (func $loop-flow/whileReturn)) (export "whileThrow" (func $loop-flow/whileThrow)) @@ -37,8 +37,8 @@ i32.const 2 i32.ne br_if $while-continue|0 - i32.const 1088 - i32.const 1040 + i32.const 1104 + i32.const 1056 i32.const 24 i32.const 22 call $~lib/builtins/abort @@ -61,8 +61,8 @@ i32.const 2 i32.eq if - i32.const 1088 - i32.const 1040 + i32.const 1104 + i32.const 1056 i32.const 54 i32.const 22 call $~lib/builtins/abort @@ -87,8 +87,8 @@ i32.const 2 i32.ne br_if $do-continue|0 - i32.const 1088 - i32.const 1040 + i32.const 1104 + i32.const 1056 i32.const 78 i32.const 22 call $~lib/builtins/abort @@ -98,8 +98,8 @@ i32.const 1 ) (func $loop-flow/whileThrow (result i32) - i32.const 1088 - i32.const 1040 + i32.const 1104 + i32.const 1056 i32.const 11 i32.const 5 call $~lib/builtins/abort @@ -112,16 +112,16 @@ unreachable ) (func $loop-flow/forThrow (result i32) - i32.const 1088 - i32.const 1040 + i32.const 1104 + i32.const 1056 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable ) (func $loop-flow/doThrow (result i32) - i32.const 1088 - i32.const 1040 + i32.const 1104 + i32.const 1056 i32.const 71 i32.const 5 call $~lib/builtins/abort @@ -134,7 +134,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -146,7 +146,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -158,7 +158,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 83 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat index 117fc0ca89..7ee725888c 100644 --- a/tests/compiler/loop-flow.untouched.wat +++ b/tests/compiler/loop-flow.untouched.wat @@ -5,8 +5,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00") - (data (i32.const 64) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00") + (data (i32.const 12) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00") + (data (i32.const 60) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00") (table $0 1 funcref) (export "memory" (memory $0)) (export "whileReturn" (func $loop-flow/whileReturn)) diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 2749bc68db..f698376a1e 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,23 +1,21 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") - (data (i32.const 1280) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t") - (data (i32.const 1344) "\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\04\00\00\00 ") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 1292) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") + (data (i32.const 1356) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t") + (data (i32.const 1424) "\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\04\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -33,8 +31,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -43,18 +41,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -96,28 +94,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -188,8 +186,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -202,14 +200,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -225,14 +223,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -247,7 +245,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -275,8 +273,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -284,14 +282,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -320,33 +318,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -393,8 +391,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -412,15 +410,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -458,54 +456,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -521,18 +517,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -542,23 +537,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -569,93 +565,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1472 + i32.const 0 + i32.store + i32.const 3040 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1472 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1392 - local.set $1 - i32.const 1392 - i32.const 0 - i32.store - i32.const 2960 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1392 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1392 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1472 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1392 - i32.const 2976 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1392 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1472 + i32.const 3044 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1472 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -692,8 +679,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -714,164 +701,137 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock + i32.const 4 + memory.size local.tee $2 - i32.eqz + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select + local.get $1 memory.grow i32.const 0 i32.lt_s if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $2 + local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 local.get $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $1 i32.load - local.tee $1 + local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if - local.get $2 local.get $1 + local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store - local.get $2 + local.get $1 i32.const 32 i32.add - local.tee $1 + local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $2 local.get $1 + local.get $2 i32.const -2 i32.and i32.store - local.get $2 - i32.const 16 + local.get $1 + i32.const 4 i32.add local.tee $0 - local.get $2 + local.get $1 i32.load i32.const -4 i32.and i32.add local.get $0 - local.get $2 + local.get $1 i32.load i32.const -4 i32.and @@ -881,12 +841,36 @@ i32.and i32.store end - local.get $2 + local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 + (func $~lib/rt/pure/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -894,11 +878,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1388 + i32.const 1468 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -913,7 +897,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -930,7 +914,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -942,24 +926,24 @@ (func $managed-cast/Cat#constructor (result i32) (local $0 i32) i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 if (result i32) local.get $0 else i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain end ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1388 + i32.const 1468 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -976,11 +960,11 @@ ) (func $~lib/rt/__instanceof (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 local.tee $0 - i32.const 1344 + i32.const 1424 i32.load i32.le_u if @@ -995,7 +979,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 1348 + i32.const 1428 i32.add i32.load offset=4 local.tee $0 @@ -1022,8 +1006,8 @@ local.tee $0 i32.eqz if - i32.const 1200 i32.const 1248 + i32.const 1312 i32.const 14 i32.const 12 call $~lib/builtins/abort @@ -1044,8 +1028,8 @@ call $~lib/rt/__instanceof i32.eqz if - i32.const 1296 - i32.const 1248 + i32.const 1376 + i32.const 1312 i32.const 31 i32.const 9 call $~lib/builtins/abort @@ -1060,8 +1044,8 @@ local.get $0 i32.eqz if - i32.const 1200 i32.const 1248 + i32.const 1312 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -1070,8 +1054,8 @@ call $~lib/rt/__instanceof i32.eqz if - i32.const 1296 - i32.const 1248 + i32.const 1376 + i32.const 1312 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -1087,8 +1071,8 @@ call $~lib/rt/__instanceof i32.eqz if - i32.const 1296 - i32.const 1248 + i32.const 1376 + i32.const 1312 i32.const 41 i32.const 30 call $~lib/builtins/abort @@ -1106,8 +1090,8 @@ call $~lib/rt/__instanceof i32.eqz if - i32.const 1296 - i32.const 1248 + i32.const 1376 + i32.const 1312 i32.const 47 i32.const 30 call $~lib/builtins/abort @@ -1151,7 +1135,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1165,21 +1149,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1388 + i32.const 1468 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1193,7 +1177,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1214,7 +1198,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index 51305a0397..c64998d932 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -2,28 +2,25 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00") - (data (i32.const 272) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t\00") - (data (i32.const 336) "\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\04\00\00\00 \00\00\00\00\00\00\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") + (data (i32.const 268) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00") + (data (i32.const 332) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t\00") + (data (i32.const 400) "\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\04\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 336)) - (global $~lib/heap/__heap_base i32 (i32.const 380)) + (global $~lib/rt/__rtti_base i32 (i32.const 400)) + (global $~lib/heap/__heap_base i32 (i32.const 444)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -48,8 +45,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -63,11 +60,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -75,8 +72,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -129,29 +126,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -261,8 +258,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -278,8 +275,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -287,7 +284,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -309,7 +306,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -319,7 +316,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -336,7 +333,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -373,8 +370,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -384,7 +381,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -394,7 +391,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -426,11 +423,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -438,8 +435,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -447,7 +444,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -456,8 +453,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -515,8 +512,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -540,15 +537,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -617,31 +614,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -655,14 +654,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -694,8 +693,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -706,10 +705,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -717,9 +716,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -735,15 +734,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -762,7 +761,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -775,127 +774,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -903,49 +921,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -968,7 +961,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1022,8 +1015,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1087,8 +1080,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1144,7 +1137,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1162,11 +1155,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1230,14 +1223,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1251,8 +1246,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1264,14 +1259,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1290,7 +1285,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1302,7 +1297,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1319,136 +1314,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1473,7 +1449,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1496,7 +1472,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1509,7 +1485,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1521,7 +1497,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1533,7 +1509,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1551,7 +1527,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1575,8 +1551,8 @@ if (result i32) local.get $1 else - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 288 i32.const 14 i32.const 12 call $~lib/builtins/abort @@ -1627,9 +1603,9 @@ (local $3 i32) (local $4 i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 local.set $2 global.get $~lib/rt/__rtti_base local.set $3 @@ -1677,8 +1653,8 @@ if (result i32) local.get $1 else + i32.const 352 i32.const 288 - i32.const 240 i32.const 31 i32.const 9 call $~lib/builtins/abort @@ -1698,8 +1674,8 @@ if (result i32) local.get $1 else - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 288 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -1711,8 +1687,8 @@ if (result i32) local.get $1 else + i32.const 352 i32.const 288 - i32.const 240 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -1735,8 +1711,8 @@ if (result i32) local.get $1 else + i32.const 352 i32.const 288 - i32.const 240 i32.const 41 i32.const 30 call $~lib/builtins/abort @@ -1767,8 +1743,8 @@ if (result i32) local.get $1 else + i32.const 352 i32.const 288 - i32.const 240 i32.const 47 i32.const 30 call $~lib/builtins/abort @@ -1847,18 +1823,10 @@ (func $~start call $start:managed-cast ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1897,7 +1865,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1908,7 +1876,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1923,7 +1891,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1940,7 +1908,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1978,14 +1946,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index 4c9f7826dd..3ad8e4f846 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") (export "memory" (memory $0)) (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) @@ -26,7 +26,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 267 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index 8e2517e717..2add8bd771 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) (export "testI32" (func $many-locals/testI32)) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index c55ff71226..958c74a8ad 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") + (data (i32.const 1036) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") (global $memcpy/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "memcpy" (func $memcpy/memcpy)) @@ -793,7 +793,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -805,7 +805,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -821,7 +821,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -833,7 +833,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -845,7 +845,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -857,7 +857,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -869,7 +869,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -886,7 +886,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -903,7 +903,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -915,7 +915,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -927,7 +927,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 167 i32.const 1 call $~lib/builtins/abort @@ -939,7 +939,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 168 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 73835e9b4b..0a028b2128 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00") + (data (i32.const 12) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00") (table $0 1 funcref) (global $memcpy/base i32 (i32.const 8)) (global $memcpy/dest (mut i32) (i32.const 0)) diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 254021bcd4..5c8b86081d 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") + (data (i32.const 1036) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") (global $memmove/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -213,7 +213,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -225,7 +225,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -241,7 +241,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -253,7 +253,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -265,7 +265,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -277,7 +277,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -289,7 +289,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -306,7 +306,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -323,7 +323,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -335,7 +335,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -347,7 +347,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -359,7 +359,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 72 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 80fd6c4623..674cc5dd0e 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00") + (data (i32.const 12) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00") (table $0 1 funcref) (global $memmove/base i32 (i32.const 8)) (global $memmove/dest (mut i32) (i32.const 0)) diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.optimized.wat index bf670ac375..87fb63fc04 100644 --- a/tests/compiler/memory.optimized.wat +++ b/tests/compiler/memory.optimized.wat @@ -4,7 +4,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1040) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data (i32.const 1036) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") (data (i32.const 1169) "\01\02\03") (data (i32.const 1174) "\c0?\00\00 @\00\00`@") (data (i32.const 1200) "\01") diff --git a/tests/compiler/memory.untouched.wat b/tests/compiler/memory.untouched.wat index 60eed3e3ad..0169820969 100644 --- a/tests/compiler/memory.untouched.wat +++ b/tests/compiler/memory.untouched.wat @@ -5,7 +5,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\00\00\00\00") - (data (i32.const 32) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") + (data (i32.const 28) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") (data (i32.const 80) "\00") (data (i32.const 96) "\00") (data (i32.const 104) "\00") diff --git a/tests/compiler/memorybase.optimized.wat b/tests/compiler/memorybase.optimized.wat index 0954999754..7a4e7940e7 100644 --- a/tests/compiler/memorybase.optimized.wat +++ b/tests/compiler/memorybase.optimized.wat @@ -1,5 +1,4 @@ (module (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") (export "memory" (memory $0)) ) diff --git a/tests/compiler/memorybase.ts b/tests/compiler/memorybase.ts index 9b28726d4c..a4aff01e9d 100644 --- a/tests/compiler/memorybase.ts +++ b/tests/compiler/memorybase.ts @@ -1,6 +1,4 @@ -import { BLOCK_OVERHEAD } from "rt/common"; - -const staticString = "hello world"; +const staticData = memory.data(1); assert(ASC_MEMORY_BASE == 1024); -assert(changetype(staticString) - BLOCK_OVERHEAD == 1024); +assert(changetype(staticData) == ASC_MEMORY_BASE); diff --git a/tests/compiler/memorybase.untouched.wat b/tests/compiler/memorybase.untouched.wat index 041735216e..ba568336de 100644 --- a/tests/compiler/memorybase.untouched.wat +++ b/tests/compiler/memorybase.untouched.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") + (data (i32.const 1024) "\00") (table $0 1 funcref) - (global $memorybase/staticString i32 (i32.const 1040)) + (global $memorybase/staticData i32 (i32.const 1024)) (global $~lib/ASC_MEMORY_BASE i32 (i32.const 1024)) (export "memory" (memory $0)) (start $~start) @@ -12,9 +12,7 @@ i32.const 1024 i32.eq drop - global.get $memorybase/staticString - i32.const 16 - i32.sub + global.get $memorybase/staticData i32.const 1024 i32.eq drop diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index a8adc41d48..c7c27ae118 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") + (data (i32.const 1036) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") (global $memset/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -208,9 +208,9 @@ end ) (func $start:memset - i32.const 1060 + i32.const 1076 global.set $memset/dest - i32.const 1060 + i32.const 1076 i32.const 1 i32.const 16 call $memset/memset @@ -220,7 +220,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -232,7 +232,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -250,7 +250,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -262,7 +262,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -274,7 +274,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -286,7 +286,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 80 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index 804effb895..4128676d4d 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00") + (data (i32.const 12) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00") (table $0 1 funcref) (global $memset/dest (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 52)) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index dc79afe700..603059eb39 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -5,22 +5,30 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) + (func $~lib/rt/stub/__new (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $4 - i32.const 16 + local.tee $5 + i32.const 28 i32.add local.tee $1 memory.size local.tee $3 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -54,40 +62,42 @@ end local.get $1 global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 + i32.const 28 + i32.store + local.get $5 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 ) (func $~start - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new ) ) diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index a43342cf59..002a4e080f 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -13,6 +13,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -24,6 +37,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -67,60 +90,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -131,7 +161,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -150,7 +180,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -166,7 +196,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -186,12 +216,16 @@ (local $6 i32) (local $7 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 6d8c3d16e2..375279e546 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -3,35 +3,34 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_i64_i32_i64_=>_i32 (func (param i32 i64 i32 i64 i32 i64) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1248) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1376) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1456) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1488) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1536) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1568) "\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 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -215,7 +236,7 @@ local.tee $3 i32.const 1 i32.shl - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $2 local.get $0 local.get $3 @@ -228,14 +249,14 @@ end local.get $2 else - i32.const 1232 + i32.const 1248 end ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -347,42 +368,42 @@ end i32.const 0 ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 + local.get $2 + local.get $0 i64.sub - local.set $9 - local.get $3 + local.set $8 + local.get $2 i64.const 1 i32.const 0 - local.get $4 + local.get $3 i32.sub - local.tee $10 + local.tee $9 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub - local.tee $12 + local.tee $11 i64.and - local.set $7 - local.get $3 - local.get $10 + local.set $6 + local.get $2 + local.get $9 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $1 call $~lib/util/number/decimalCount32 - local.set $8 + local.set $7 loop $while-continue|0 - local.get $8 + local.get $7 i32.const 0 i32.gt_s if @@ -398,339 +419,335 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + local.get $7 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $2 + local.get $1 i32.const 1000000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 1000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 1000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 - local.set $4 + local.get $1 + local.set $3 i32.const 0 - local.set $2 + local.set $1 br $break|1 end i32.const 0 - local.set $4 + local.set $3 end - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.or if - local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl + i32.const 1584 i32.add - local.get $4 + local.get $3 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 - local.get $7 - local.get $2 + local.set $7 + local.get $6 + local.get $1 i64.extend_i32_u - local.get $10 + local.get $9 i64.extend_i32_s i64.shl i64.add - local.tee $1 - local.get $5 + local.tee $0 + local.get $4 i64.le_u if - local.get $8 + local.get $7 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 i32.const 2 i32.shl - i32.const 2440 + i32.const 2512 i32.add i64.load32_u - local.get $10 + local.get $9 i64.extend_i32_s i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub + local.set $2 + local.get $5 i32.const 1 i32.shl + i32.const 1582 i32.add - local.tee $0 + local.tee $3 i32.load16_u - local.set $2 + local.set $1 loop $while-continue|3 i32.const 1 - local.get $9 - local.get $1 + local.get $8 + local.get $0 i64.sub - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.add - local.tee $7 - local.get $9 + local.tee $6 + local.get $8 i64.sub i64.gt_u - local.get $7 - local.get $9 + local.get $6 + local.get $8 i64.lt_u select i32.const 0 - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.sub - local.get $3 + local.get $2 i64.ge_u i32.const 0 - local.get $1 - local.get $9 + local.get $0 + local.get $8 i64.lt_u select select if - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 - local.get $1 - local.get $3 - i64.add local.set $1 + local.get $0 + local.get $2 + i64.add + local.set $0 br $while-continue|3 end end - local.get $0 - local.get $2 + local.get $3 + local.get $1 i32.store16 - local.get $6 + local.get $5 return end br $while-continue|0 end end - local.get $10 + local.get $9 i64.extend_i32_s - local.set $1 + local.set $0 loop $while-continue|4 - local.get $5 + local.get $4 i64.const 10 i64.mul - local.set $5 - local.get $7 + local.set $4 + local.get $6 i64.const 10 i64.mul - local.tee $3 - local.get $1 + local.tee $2 + local.get $0 i64.shr_u - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl + i32.const 1584 i32.add - local.get $7 + local.get $6 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 - local.get $3 - local.get $12 + local.set $7 + local.get $2 + local.get $11 i64.and - local.tee $7 - local.get $5 + local.tee $6 + local.get $4 i64.ge_u br_if $while-continue|4 end - local.get $8 + local.get $7 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $9 - i32.const 0 + local.get $6 + local.set $0 local.get $8 + i32.const 0 + local.get $7 i32.sub i32.const 2 i32.shl - i32.const 2440 + i32.const 2512 i32.add i64.load32_u i64.mul - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub + local.set $2 + local.get $5 i32.const 1 i32.shl + i32.const 1582 i32.add - local.tee $0 + local.tee $3 i32.load16_u - local.set $2 + local.set $1 loop $while-continue|6 i32.const 1 - local.get $3 - local.get $1 + local.get $2 + local.get $0 i64.sub - local.get $1 - local.get $11 + local.get $0 + local.get $10 i64.add - local.tee $7 - local.get $3 + local.tee $6 + local.get $2 i64.sub i64.gt_u - local.get $7 - local.get $3 + local.get $6 + local.get $2 i64.lt_u select i32.const 0 - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.lt_u select select if - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 - local.get $1 - local.get $11 - i64.add local.set $1 + local.get $0 + local.get $10 + i64.add + local.set $0 br $while-continue|6 end end - local.get $0 - local.get $2 + local.get $3 + local.get $1 i32.store16 - local.get $6 + local.get $5 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -905,58 +922,59 @@ end end ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 + local.get $1 i32.eqz if local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1584 i32.add i32.const 3145774 i32.store - local.get $1 + local.get $0 i32.const 2 i32.add return end + local.get $0 local.get $1 - local.get $2 i32.add local.tee $3 i32.const 21 i32.le_s i32.const 0 - local.get $1 + local.get $0 local.get $3 i32.le_s select if (result i32) loop $for-loop|0 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1584 i32.add i32.const 48 i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 local.get $3 i32.const 1 i32.shl + i32.const 1584 i32.add i32.const 3145774 i32.store @@ -973,25 +991,25 @@ i32.gt_s select if (result i32) - local.get $0 local.get $3 i32.const 1 i32.shl + i32.const 1584 i32.add - local.tee $0 + local.tee $3 i32.const 2 i32.add - local.get $0 + local.get $3 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 + local.get $3 i32.const 46 i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add else @@ -1004,133 +1022,126 @@ i32.lt_s select if (result i32) - local.get $0 i32.const 2 local.get $3 i32.sub local.tee $3 i32.const 1 i32.shl + i32.const 1584 i32.add + i32.const 1584 local.get $0 - local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 + i32.const 1584 i32.const 3014704 i32.store i32.const 2 - local.set $2 + local.set $1 loop $for-loop|1 - local.get $2 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.get $2 + local.get $1 i32.const 1 i32.shl + i32.const 1584 i32.add i32.const 48 i32.store16 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $0 local.get $3 i32.add else - local.get $1 + local.get $0 i32.const 1 i32.eq if (result i32) - local.get $0 + i32.const 1586 i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add + i32.store16 + i32.const 1588 local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s - local.tee $2 + local.tee $0 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.get $0 + local.get $1 + local.get $1 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa_dec_simple - local.get $1 + i32.const 1588 i32.const 45 i32.const 43 - local.get $2 - select - i32.store16 offset=4 local.get $0 + select + i32.store16 + local.get $1 i32.const 2 i32.add else + i32.const 1588 + i32.const 1586 local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 2 i32.sub call $~lib/memory/memory.copy - local.get $0 + i32.const 1586 i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 + i32.store16 + local.get $1 + i32.const 1584 i32.add - local.tee $0 + local.tee $1 i32.const 101 i32.store16 offset=2 - local.get $0 + local.get $1 local.tee $2 i32.const 4 i32.add local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $3 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.get $0 + local.get $1 + local.get $1 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa_dec_simple local.get $2 i32.const 45 @@ -1148,44 +1159,43 @@ end end ) - (func $~lib/util/number/dtoa_core (param $0 i32) (result i32) + (func $~lib/util/number/dtoa_core (result i32) + (local $0 i64) (local $1 i64) - (local $2 i64) + (local $2 i32) (local $3 i64) (local $4 f64) (local $5 i64) i32.const -4 global.set $~lib/util/number/_K - i32.const 1920 + i32.const 1992 i64.load global.set $~lib/util/number/_frc_pow - i32.const 2352 + i32.const 2424 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $2 + local.tee $1 i64.const 32 i64.shr_u local.set $3 - local.get $2 + local.get $1 i64.const 4294967295 i64.and - local.tee $2 + local.tee $1 i64.const 31 i64.shl - local.get $2 + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.set $1 - local.get $0 - local.get $0 + local.set $0 local.get $3 i64.const 31 i64.shl - local.get $2 + local.get $1 i64.const 31 i64.shl i64.const 0 @@ -1205,17 +1215,17 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $0 + local.tee $2 i32.const 2 i32.add local.get $3 i64.const 31 i64.shl - local.get $1 + local.get $0 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $0 i64.const 4294967295 i64.and local.get $3 @@ -1229,31 +1239,31 @@ i64.add i64.const 1 i64.sub - local.tee $1 - local.get $0 + local.tee $0 + local.get $2 i32.const 2 i32.add - local.get $1 + local.get $0 local.get $3 i64.const 2147483647 i64.mul - local.get $2 + local.get $1 i64.const 2147483647 i64.mul - local.get $2 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add local.get $3 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -1269,81 +1279,6 @@ global.get $~lib/util/number/_K call $~lib/util/number/prettify ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $4 - i32.lt_s - local.set $2 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $4 - i32.lt_s - local.set $1 - i32.const 0 - local.get $4 - local.get $2 - select - local.tee $2 - local.get $3 - local.get $4 - local.get $1 - select - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2496 - return - end - i32.const 0 - local.get $1 - local.get $4 - i32.const 1 - i32.shl - i32.eq - local.get $2 - select - if - local.get $0 - return - end - local.get $3 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - local.get $2 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - ) (func $~lib/number/F32.isSafeInteger (param $0 f32) (result i32) local.get $0 local.get $0 @@ -1397,83 +1332,37 @@ (func $start:number (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 2768 + i32.const 2780 global.set $~lib/rt/stub/offset global.get $number/a call $~lib/number/I32#toString - i32.const 1360 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 56 - call $~lib/rt/stub/__alloc - local.tee $0 call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $0 + call $~lib/rt/stub/__new local.tee $1 - i32.const 28 - i32.ne - if (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 2512 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 2512 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $2 - i32.load - i32.add - i32.eq - if - local.get $2 - global.set $~lib/rt/stub/offset - end - else - local.get $0 - end - i32.const 2560 + i32.const 1584 + local.get $0 + call $~lib/memory/memory.copy + local.get $1 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -1481,12 +1370,12 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2592 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -1494,12 +1383,12 @@ end i32.const -5 call $~lib/number/I32#toString - i32.const 2624 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -1507,12 +1396,12 @@ end i32.const 4 call $~lib/number/I32#toString - i32.const 2656 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -1524,12 +1413,12 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - i32.const 2688 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -1541,36 +1430,36 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - i32.const 1360 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2720 - i32.const 2720 + i32.const 2736 + i32.const 2736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2752 - i32.const 2752 + i32.const 2768 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -1583,12 +1472,12 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - i32.const 1360 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1601,12 +1490,12 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - i32.const 2688 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -1616,7 +1505,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -1628,7 +1517,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -1640,7 +1529,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -1652,7 +1541,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1662,7 +1551,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -1672,7 +1561,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -1684,7 +1573,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -1694,7 +1583,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -1704,7 +1593,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -1716,7 +1605,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -1728,7 +1617,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -1738,7 +1627,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -1748,7 +1637,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -1758,7 +1647,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -1770,7 +1659,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -1782,7 +1671,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -1794,7 +1683,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -1806,7 +1695,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -1816,7 +1705,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -1826,7 +1715,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -1836,7 +1725,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -1848,7 +1737,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -1860,7 +1749,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -1872,7 +1761,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -1882,7 +1771,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -1892,7 +1781,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -1904,7 +1793,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -1914,7 +1803,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -1924,7 +1813,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -1936,7 +1825,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -1948,7 +1837,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1958,7 +1847,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -1968,7 +1857,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -1978,7 +1867,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -1990,7 +1879,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -2002,7 +1891,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -2014,7 +1903,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -2026,7 +1915,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -2036,7 +1925,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -2046,7 +1935,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 67 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 19adb60dc9..5923fffd46 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -1,15 +1,15 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $f32_=>_i32 (func (param f32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -17,30 +17,29 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 12) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 140) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 204) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 228) "0\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") - (data (i32.const 640) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1680) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1808) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 1856) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 1888) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 1920) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 1968) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2000) "\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_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (data (i32.const 1072) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1120) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1184) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1232) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 1300) "\01\00\00\00\01") - (data (i32.const 1312) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") - (data (i32.const 1344) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r") - (data (i32.const 1408) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") + (data (i32.const 1084) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1148) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1276) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (i32.const 1344) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1372) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") + (data (i32.const 1404) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") + (data (i32.const 1436) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00r") + (data (i32.const 1468) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00z") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -37,8 +35,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 277 + i32.const 1232 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -47,18 +45,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1088 - i32.const 279 + i32.const 1232 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -100,28 +98,28 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 292 + i32.const 1232 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -192,8 +190,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 205 + i32.const 1232 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -206,14 +204,14 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 207 + i32.const 1232 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -229,14 +227,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -251,7 +249,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -279,8 +277,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 228 + i32.const 1232 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -288,14 +286,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -324,33 +322,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1088 - i32.const 243 + i32.const 1232 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1088 - i32.const 244 + i32.const 1232 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -397,8 +395,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 260 + i32.const 1232 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -416,15 +414,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -462,54 +460,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 5 + i32.const 1232 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 396 + i32.const 1232 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -525,18 +521,17 @@ i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 408 + i32.const 1232 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -546,23 +541,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -573,93 +569,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1504 + i32.const 0 + i32.store + i32.const 3072 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1504 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1440 - local.set $1 - i32.const 1440 - i32.const 0 - i32.store - i32.const 3008 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1504 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1440 - i32.const 3024 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1440 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1504 + i32.const 3076 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1504 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -685,7 +672,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -716,8 +703,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 338 + i32.const 1232 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -768,8 +755,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 351 + i32.const 1232 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -797,12 +784,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1088 - i32.const 365 + i32.const 1232 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -813,7 +802,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -825,12 +814,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -845,7 +834,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -865,169 +854,181 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1136 - i32.const 1088 + i32.const 1104 + i32.const 1232 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 12 local.get $1 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u select - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 520 + i32.const 1232 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1104 + i32.const 1168 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1035,11 +1036,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1432 + i32.const 1496 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1054,7 +1055,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1071,7 +1072,7 @@ i32.and if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1082,20 +1083,20 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1432 + i32.const 1496 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -1432,7 +1433,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -1440,12 +1441,12 @@ end local.get $0 i32.load offset=4 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -1454,47 +1455,48 @@ local.get $0 i32.load offset=4 call $~lib/rt/pure/__release - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - i32.const 16 - i32.sub - local.set $1 local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and + i32.const 1496 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 i32.and i32.eqz - else i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tlsf/freeBlock end - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/freeBlock ) (func $object-literal/testOmittedTypes (param $0 i32) local.get $0 @@ -1503,7 +1505,7 @@ i32.load if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -1513,7 +1515,7 @@ i32.load offset=4 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -1525,7 +1527,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -1537,7 +1539,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -1549,7 +1551,7 @@ f32.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -1561,7 +1563,7 @@ f64.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -1571,7 +1573,7 @@ i32.load8_s offset=40 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -1581,7 +1583,7 @@ i32.load8_u offset=41 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -1591,7 +1593,7 @@ i32.load16_s offset=42 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -1601,7 +1603,7 @@ i32.load16_u offset=44 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -1611,7 +1613,7 @@ i32.load offset=48 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -1621,7 +1623,7 @@ i32.load offset=52 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -1633,7 +1635,7 @@ f64.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -1643,7 +1645,7 @@ i32.load8_u offset=64 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -1657,12 +1659,12 @@ call $~lib/rt/pure/__retain local.tee $0 i32.load - i32.const 1392 + i32.const 1456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -1670,12 +1672,12 @@ end local.get $0 i32.load offset=4 - i32.const 1424 + i32.const 1488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1688,7 +1690,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -1701,7 +1703,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -1714,7 +1716,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -1727,7 +1729,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -1740,7 +1742,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -1753,7 +1755,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -1763,7 +1765,7 @@ i32.load offset=32 if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -1775,7 +1777,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -1793,7 +1795,7 @@ (local $5 i32) i32.const 8 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -1806,7 +1808,7 @@ i32.const 123 i32.store local.get $0 - i32.const 1040 + i32.const 1056 i32.store offset=4 local.get $0 call $~lib/rt/pure/__retain @@ -1816,7 +1818,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -1824,12 +1826,12 @@ end local.get $0 i32.load offset=4 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -1838,7 +1840,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 8 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 0 @@ -1851,9 +1852,9 @@ i32.store local.get $0 block $__inlined_func$~lib/string/String#substring (result i32) - i32.const 1312 + i32.const 1360 i32.const 0 - i32.const 1040 + i32.const 1056 call $~lib/string/String#get:length local.tee $5 i32.const 0 @@ -1889,7 +1890,7 @@ i32.eqz br_if $__inlined_func$~lib/string/String#substring drop - i32.const 1040 + i32.const 1056 i32.const 0 local.get $3 local.get $5 @@ -1902,10 +1903,10 @@ drop local.get $2 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $4 - i32.const 1040 + i32.const 1056 i32.add local.get $2 call $~lib/memory/memory.copy @@ -1917,7 +1918,7 @@ call $object-literal/testUnmanaged i32.const 65 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -2007,7 +2008,7 @@ call $object-literal/testOmittedTypes i32.const 16 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -2022,7 +2023,7 @@ i32.const 0 i32.store local.get $3 - i32.const 1360 + i32.const 1424 i32.store offset=4 local.get $3 f64.const 0 @@ -2033,7 +2034,7 @@ i32.load if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2041,12 +2042,12 @@ end local.get $2 i32.load offset=4 - i32.const 1360 + i32.const 1424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2058,7 +2059,7 @@ f64.ne if i32.const 0 - i32.const 1248 + i32.const 1296 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -2068,13 +2069,13 @@ call $~lib/rt/pure/__release i32.const 40 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 - i32.const 1392 + i32.const 1456 i32.store local.get $2 - i32.const 1424 + i32.const 1488 i32.store offset=4 local.get $2 i32.const 0 @@ -2150,7 +2151,7 @@ i32.and if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2161,7 +2162,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add call $~lib/rt/__visit_members local.get $2 @@ -2169,7 +2170,7 @@ i32.and if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2184,7 +2185,7 @@ i32.le_u if i32.const 0 - i32.const 1200 + i32.const 1168 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2203,13 +2204,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1432 + i32.const 1496 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index c61d4e8a6e..f90d1e4f4d 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -1,33 +1,30 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 176) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 224) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 288) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 304) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o\00") - (data (i32.const 336) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") - (data (i32.const 368) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") - (data (i32.const 400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") + (data (i32.const 60) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 124) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 252) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") + (data (i32.const 316) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 348) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o\00") + (data (i32.const 380) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") + (data (i32.const 412) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") + (data (i32.const 444) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 424)) + (global $~lib/heap/__heap_base i32 (i32.const 472)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -52,8 +49,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 277 + i32.const 208 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -67,11 +64,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -79,8 +76,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 279 + i32.const 208 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -133,29 +130,29 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 292 + i32.const 208 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -265,8 +262,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 205 + i32.const 208 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -282,8 +279,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 207 + i32.const 208 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -291,7 +288,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -313,7 +310,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -323,7 +320,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -340,7 +337,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -377,8 +374,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 228 + i32.const 208 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -388,7 +385,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -398,7 +395,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -430,11 +427,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -442,8 +439,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 243 + i32.const 208 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -451,7 +448,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -460,8 +457,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 244 + i32.const 208 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -519,8 +516,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 260 + i32.const 208 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -544,15 +541,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -621,31 +618,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 80 - i32.const 386 - i32.const 5 + i32.const 208 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -659,14 +658,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 80 - i32.const 396 + i32.const 208 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -698,8 +697,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 408 + i32.const 208 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -710,10 +709,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -721,9 +720,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -739,15 +738,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -766,7 +765,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -779,127 +778,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -907,49 +925,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 128 i32.const 80 + i32.const 208 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -972,7 +965,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1026,8 +1019,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 338 + i32.const 208 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1091,8 +1084,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 351 + i32.const 208 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1148,7 +1141,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1166,11 +1159,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1234,14 +1227,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 80 - i32.const 365 + i32.const 208 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1255,8 +1250,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1268,14 +1263,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1294,7 +1289,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1306,7 +1301,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1323,136 +1318,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 208 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 80 - i32.const 520 + i32.const 208 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 80 + i32.const 144 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1477,7 +1453,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1500,7 +1476,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1513,7 +1489,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1525,7 +1501,7 @@ if i32.const 8 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1543,16 +1519,16 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -1766,7 +1742,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -1779,7 +1755,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -3115,7 +3091,7 @@ local.get $10 i32.eqz if - i32.const 304 + i32.const 336 call $~lib/rt/pure/__retain return end @@ -3137,7 +3113,7 @@ end local.get $10 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $11 local.get $11 local.get $0 @@ -3153,7 +3129,6 @@ i32.eqz if i32.const 8 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $0 end @@ -3168,7 +3143,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -3191,22 +3166,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 80 - i32.const 585 + i32.const 208 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3214,12 +3178,9 @@ local.get $1 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3230,7 +3191,18 @@ call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock @@ -3243,7 +3215,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3251,12 +3223,12 @@ end local.get $0 i32.load offset=4 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -3274,7 +3246,7 @@ if i32.const 65 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3333,7 +3305,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -3346,7 +3318,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -3359,7 +3331,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -3372,7 +3344,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -3385,7 +3357,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -3398,7 +3370,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -3411,7 +3383,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -3424,7 +3396,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -3437,7 +3409,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -3450,7 +3422,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -3463,7 +3435,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -3476,7 +3448,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -3489,7 +3461,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -3504,7 +3476,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -3519,7 +3491,7 @@ if i32.const 16 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3545,7 +3517,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -3553,12 +3525,12 @@ end local.get $0 i32.load offset=4 - i32.const 352 + i32.const 400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -3571,7 +3543,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -3586,15 +3558,15 @@ if i32.const 40 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end local.get $0 - i32.const 384 + i32.const 432 i32.store local.get $0 - i32.const 416 + i32.const 464 i32.store offset=4 local.get $0 i32.const 0 @@ -3628,12 +3600,12 @@ local.set $0 local.get $0 i32.load - i32.const 384 + i32.const 432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -3641,12 +3613,12 @@ end local.get $0 i32.load offset=4 - i32.const 416 + i32.const 464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -3659,7 +3631,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -3672,7 +3644,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -3685,7 +3657,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -3698,7 +3670,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -3711,7 +3683,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -3724,7 +3696,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -3737,7 +3709,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -3750,7 +3722,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 272 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -3843,7 +3815,7 @@ i32.const 0 i32.store local.get $2 - i32.const 352 + i32.const 400 i32.store offset=4 local.get $2 f64.const 0 @@ -3888,11 +3860,6 @@ (func $~start call $start:object-literal ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -3922,7 +3889,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3933,7 +3900,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -3948,7 +3915,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3965,7 +3932,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -4003,14 +3970,14 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 144 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 560fcc8178..1c94c1ed56 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -5,22 +5,30 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) + (func $~lib/rt/stub/__new (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $4 - i32.const 16 + local.tee $5 + i32.const 28 i32.add local.tee $1 memory.size local.tee $3 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -54,28 +62,30 @@ end local.get $1 global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 + i32.const 28 + i32.store + local.get $5 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 ) (func $~start - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 0e4f058695..09f1467000 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -20,6 +20,19 @@ (func $optional-typeparameters/testDerived (param $0 i32) (result i32) local.get $0 ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -31,6 +44,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -74,60 +97,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -138,7 +168,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -155,7 +185,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -174,12 +204,16 @@ call $optional-typeparameters/testDerived drop global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/overflow.optimized.wat b/tests/compiler/overflow.optimized.wat index 2f847eda83..5795747ee4 100644 --- a/tests/compiler/overflow.optimized.wat +++ b/tests/compiler/overflow.optimized.wat @@ -1,5 +1,5 @@ (module (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index 4b9a74b4cb..65de29b2ec 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/portable-conversions.optimized.wat b/tests/compiler/portable-conversions.optimized.wat index 1f33d2e28b..a32a73c46c 100644 --- a/tests/compiler/portable-conversions.optimized.wat +++ b/tests/compiler/portable-conversions.optimized.wat @@ -1,5 +1,5 @@ (module (memory $0 1) - (data (i32.const 1024) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") + (data (i32.const 1036) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index 6d00acc97a..15ea12d917 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -3,7 +3,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00") + (data (i32.const 12) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00") (table $0 1 funcref) (global $portable-conversions/i (mut i32) (i32.const 1)) (global $portable-conversions/I (mut i64) (i64.const 1)) diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat index 513d88c4a4..c2a3767a8f 100644 --- a/tests/compiler/rc/global-init.optimized.wat +++ b/tests/compiler/rc/global-init.optimized.wat @@ -1,7 +1,7 @@ (module (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1088) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1040) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1132) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index b507c5b548..3b08f8c1f6 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -7,14 +7,14 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 80) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 108) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $rc/global-init/a (mut i32) (i32.const 0)) (global $rc/global-init/b (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 128)) + (global $~lib/heap/__heap_base i32 (i32.const 160)) (export "memory" (memory $0)) (start $~start) (func $rc/global-init/getRef (result i32) @@ -41,7 +41,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -64,7 +64,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -77,7 +77,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -89,7 +89,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -155,8 +155,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 277 + i32.const 128 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -170,11 +170,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -182,8 +182,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 279 + i32.const 128 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -236,29 +236,29 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 292 + i32.const 128 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -368,8 +368,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 205 + i32.const 128 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -385,8 +385,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 207 + i32.const 128 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -394,7 +394,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -416,7 +416,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -426,7 +426,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -443,7 +443,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -480,8 +480,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 228 + i32.const 128 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -491,7 +491,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -501,7 +501,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -533,11 +533,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -545,8 +545,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 243 + i32.const 128 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -554,7 +554,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -563,8 +563,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 244 + i32.const 128 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -622,8 +622,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 260 + i32.const 128 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -647,15 +647,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -712,12 +712,9 @@ i32.store offset=4 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -756,7 +753,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -767,7 +764,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -782,7 +779,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -799,7 +796,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -837,14 +834,14 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index 5e6c0bef61..92d4970379 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -1,19 +1,17 @@ (module + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1088) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1152) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1040) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1132) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1196) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -29,8 +27,8 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 277 + i32.const 1216 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -39,18 +37,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1056 - i32.const 279 + i32.const 1216 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,28 +90,28 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 292 + i32.const 1216 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -184,8 +182,8 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 205 + i32.const 1216 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,14 +196,14 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 207 + i32.const 1216 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -221,14 +219,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -243,7 +241,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -271,8 +269,8 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 228 + i32.const 1216 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -280,14 +278,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -316,33 +314,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1056 - i32.const 243 + i32.const 1216 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1056 - i32.const 244 + i32.const 1216 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,8 +387,8 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 260 + i32.const 1216 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -408,15 +406,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -454,54 +452,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1056 - i32.const 386 - i32.const 5 + i32.const 1216 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1056 - i32.const 396 + i32.const 1216 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -517,18 +513,17 @@ i32.lt_u if i32.const 0 - i32.const 1056 - i32.const 408 + i32.const 1216 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -538,23 +533,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -565,93 +561,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1248 + i32.const 0 + i32.store + i32.const 2816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1248 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1200 - local.set $1 - i32.const 1200 - i32.const 0 - i32.store - i32.const 2768 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1200 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1200 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1200 - i32.const 2784 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1200 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1248 + i32.const 2820 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1248 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -688,8 +675,8 @@ i32.eqz if i32.const 0 - i32.const 1056 - i32.const 351 + i32.const 1216 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -714,110 +701,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1056 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1056 - i32.const 520 + i32.const 1216 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -826,17 +785,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -844,7 +803,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -859,7 +818,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -880,20 +839,43 @@ end local.get $1 ) - (func $~start + (func $start:rc/local-init (local $0 i32) (local $1 i32) (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add local.tee $0 - i32.const 1200 + i32.const 1248 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -908,7 +890,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1152 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -925,7 +907,7 @@ i32.and if i32.const 0 - i32.const 1168 + i32.const 1152 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -933,15 +915,18 @@ end end local.get $0 - i32.const 1200 + i32.const 1248 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) + (func $~start + call $start:rc/local-init + ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -957,7 +942,7 @@ i32.and if i32.const 0 - i32.const 1168 + i32.const 1152 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -971,21 +956,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1200 + i32.const 1248 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -999,7 +984,7 @@ i32.and if i32.const 0 - i32.const 1168 + i32.const 1152 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1020,7 +1005,7 @@ i32.le_u if i32.const 0 - i32.const 1168 + i32.const 1152 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index cbee7aac41..e68d48edc9 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -1,25 +1,23 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 80) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 144) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 108) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 172) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 192)) + (global $~lib/heap/__heap_base i32 (i32.const 224)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) @@ -28,7 +26,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -58,8 +56,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 277 + i32.const 192 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -73,11 +71,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -85,8 +83,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 279 + i32.const 192 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -139,29 +137,29 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 292 + i32.const 192 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -271,8 +269,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 205 + i32.const 192 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -288,8 +286,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 207 + i32.const 192 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -297,7 +295,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -319,7 +317,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -329,7 +327,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -346,7 +344,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -383,8 +381,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 228 + i32.const 192 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -394,7 +392,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -404,7 +402,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -436,11 +434,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -448,8 +446,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 243 + i32.const 192 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -457,7 +455,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -466,8 +464,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 244 + i32.const 192 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -525,8 +523,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 260 + i32.const 192 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -550,15 +548,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -627,31 +625,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 48 - i32.const 386 - i32.const 5 + i32.const 192 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -665,14 +665,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 48 - i32.const 396 + i32.const 192 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -704,8 +704,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 408 + i32.const 192 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -716,10 +716,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -727,9 +727,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -745,15 +745,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -772,7 +772,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -785,127 +785,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -913,49 +932,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 96 - i32.const 48 + i32.const 64 + i32.const 192 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -978,7 +972,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1032,8 +1026,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 338 + i32.const 192 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1097,8 +1091,8 @@ i32.eqz if i32.const 0 - i32.const 48 - i32.const 351 + i32.const 192 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1154,7 +1148,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1172,11 +1166,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1240,14 +1234,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 48 - i32.const 365 + i32.const 192 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1261,8 +1257,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1274,14 +1270,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1300,7 +1296,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1312,7 +1308,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1329,136 +1325,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 192 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 48 - i32.const 520 + i32.const 192 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 64 + i32.const 128 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1483,7 +1460,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 128 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1506,7 +1483,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 128 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1519,7 +1496,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1531,7 +1508,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1557,12 +1534,9 @@ call $start:rc/local-init ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1601,7 +1575,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 128 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1612,7 +1586,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1627,7 +1601,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 128 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1644,7 +1618,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 128 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1665,11 +1639,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -1687,14 +1656,14 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 128 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index b3afce4f86..b61bea5521 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -1,18 +1,17 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -29,8 +28,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -39,18 +38,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,28 +91,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -184,8 +183,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,14 +197,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -221,14 +220,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -243,7 +242,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -271,8 +270,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -280,14 +279,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -316,33 +315,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,8 +388,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -408,15 +407,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -454,54 +453,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -517,18 +514,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -538,23 +534,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -565,93 +562,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1216 + i32.const 0 + i32.store + i32.const 2784 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1216 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1184 - local.set $1 - i32.const 1184 - i32.const 0 - i32.store - i32.const 2752 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1216 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1184 - i32.const 2768 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1184 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1216 + i32.const 2788 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1216 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -688,8 +676,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -714,110 +702,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -826,17 +786,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -844,7 +804,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -859,7 +819,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -884,11 +844,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1184 + i32.const 1216 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -903,7 +863,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -920,7 +880,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -930,19 +890,44 @@ local.get $0 ) (func $rc/logical-and-mismatch/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1184 + i32.const 1216 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -999,7 +984,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1013,21 +998,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1184 + i32.const 1216 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1041,7 +1026,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1062,7 +1047,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index ac0e28a637..659c95a86e 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -1,25 +1,23 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 176)) + (global $~lib/heap/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -44,8 +42,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -59,11 +57,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -71,8 +69,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -125,29 +123,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -257,8 +255,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -274,8 +272,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -283,7 +281,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -305,7 +303,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -315,7 +313,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -332,7 +330,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -369,8 +367,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -380,7 +378,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -390,7 +388,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -422,11 +420,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -434,8 +432,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -443,7 +441,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -452,8 +450,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -511,8 +509,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -536,15 +534,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -613,31 +611,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -651,14 +651,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -690,8 +690,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -702,10 +702,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -713,9 +713,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -731,15 +731,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -758,7 +758,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -771,127 +771,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -899,49 +918,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -964,7 +958,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1018,8 +1012,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1083,8 +1077,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1140,7 +1134,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1158,11 +1152,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1226,14 +1220,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1247,8 +1243,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1260,14 +1256,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1286,7 +1282,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1298,7 +1294,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1315,136 +1311,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1469,7 +1446,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1492,7 +1469,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1505,7 +1482,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1517,7 +1494,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1533,7 +1510,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1596,18 +1573,10 @@ (func $~start call $start:rc/logical-and-mismatch ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1646,7 +1615,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1657,7 +1626,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1672,7 +1641,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1689,7 +1658,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1727,14 +1696,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index 2fe7c5f98b..ff6ed921aa 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -1,18 +1,17 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -29,8 +28,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -39,18 +38,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,28 +91,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -184,8 +183,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,14 +197,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -221,14 +220,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -243,7 +242,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -271,8 +270,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -280,14 +279,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -316,33 +315,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,8 +388,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -408,15 +407,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -454,54 +453,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -517,18 +514,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -538,23 +534,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -565,93 +562,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1216 + i32.const 0 + i32.store + i32.const 2784 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1216 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1184 - local.set $1 - i32.const 1184 - i32.const 0 - i32.store - i32.const 2752 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1216 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1184 - i32.const 2768 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1184 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1216 + i32.const 2788 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1216 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -688,8 +676,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -714,110 +702,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -826,17 +786,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -844,7 +804,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -859,7 +819,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -884,11 +844,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1184 + i32.const 1216 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -903,7 +863,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -920,7 +880,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -930,19 +890,44 @@ local.get $0 ) (func $rc/logical-or-mismatch/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1184 + i32.const 1216 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -999,7 +984,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1013,21 +998,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1184 + i32.const 1216 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1041,7 +1026,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1062,7 +1047,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 3454170010..1a6b74edfd 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -1,25 +1,23 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 176)) + (global $~lib/heap/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -44,8 +42,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -59,11 +57,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -71,8 +69,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -125,29 +123,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -257,8 +255,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -274,8 +272,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -283,7 +281,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -305,7 +303,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -315,7 +313,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -332,7 +330,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -369,8 +367,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -380,7 +378,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -390,7 +388,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -422,11 +420,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -434,8 +432,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -443,7 +441,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -452,8 +450,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -511,8 +509,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -536,15 +534,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -613,31 +611,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -651,14 +651,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -690,8 +690,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -702,10 +702,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -713,9 +713,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -731,15 +731,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -758,7 +758,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -771,127 +771,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -899,49 +918,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -964,7 +958,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1018,8 +1012,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1083,8 +1077,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1140,7 +1134,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1158,11 +1152,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1226,14 +1220,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1247,8 +1243,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1260,14 +1256,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1286,7 +1282,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1298,7 +1294,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1315,136 +1311,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1469,7 +1446,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1492,7 +1469,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1505,7 +1482,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1517,7 +1494,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1533,7 +1510,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1596,18 +1573,10 @@ (func $~start call $start:rc/logical-or-mismatch ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1646,7 +1615,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1657,7 +1626,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1672,7 +1641,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1689,7 +1658,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1727,14 +1696,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rc/optimize.optimized.wat b/tests/compiler/rc/optimize.optimized.wat index 17cde00d78..8eced93628 100644 --- a/tests/compiler/rc/optimize.optimized.wat +++ b/tests/compiler/rc/optimize.optimized.wat @@ -1,20 +1,19 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1072) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1120) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1184) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "eliminated_v" (func $rc/optimize/eliminated_v)) (export "eliminated_vi" (func $rc/optimize/eliminated_vi)) @@ -36,7 +35,7 @@ (export "OptimizeARC.eliminates.replaceAlreadyRetained" (func $rc/optimize/eliminated_rr)) (export "OptimizeARC.keeps.partialRetains" (func $rc/optimize/OptimizeARC.keeps.partialRetains)) (export "OptimizeARC.keeps.reachesReturn" (func $rc/optimize/OptimizeARC.keeps.reachesReturn)) - (export "FinalizeARC.eliminates.unnecessaryAllocation" (func $rc/optimize/eliminated_v)) + (export "FinalizeARC.eliminates.unnecessaryAllocation" (func $rc/optimize/FinalizeARC.eliminates.unnecessaryAllocation)) (export "FinalizeARC.eliminates.unnecessaryPair" (func $rc/optimize/eliminated_vi)) (export "FinalizeARC.eliminates.unnecessaryStaticPair" (func $rc/optimize/eliminated_v)) (export "FinalizeARC.eliminates.unnecessaryStaticRetain" (func $rc/optimize/eliminated_v)) @@ -59,11 +58,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1204 + i32.const 1252 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -78,7 +77,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -95,7 +94,7 @@ i32.and if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -117,8 +116,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -127,18 +126,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1088 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -180,28 +179,28 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -272,8 +271,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -286,14 +285,14 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -309,14 +308,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -331,7 +330,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -359,8 +358,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -368,14 +367,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -404,33 +403,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1088 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1088 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -477,8 +476,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -496,15 +495,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -542,54 +541,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -605,18 +602,17 @@ i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -626,23 +622,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -653,106 +650,165 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1264 + i32.const 0 + i32.store + i32.const 2832 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1264 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1264 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1264 + i32.const 2836 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1264 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + i32.const 31 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 23 + i32.lt_u + select + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 333 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and - local.tee $2 + local.tee $1 if (result i32) local.get $0 - local.get $2 + local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -760,7 +816,11 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) @@ -776,8 +836,8 @@ i32.eqz if i32.const 0 - i32.const 1088 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -798,156 +858,64 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end + (local $4 i32) local.get $1 i32.load - i32.const -4 + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.const 16 - i32.lt_u if i32.const 0 - i32.const 1088 - i32.const 520 + i32.const 1184 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 + local.get $3 i32.const -4 i32.and - i32.const 16 + local.get $2 i32.sub - local.tee $3 - i32.const 32 + local.tee $4 + i32.const 16 i32.ge_u if local.get $1 local.get $2 + local.get $3 i32.const 2 i32.and - i32.const 16 i32.or i32.store + local.get $2 local.get $1 - i32.const 32 + i32.const 4 i32.add - local.tee $2 - local.get $3 - i32.const 16 + i32.add + local.tee $1 + local.get $4 + i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -966,22 +934,196 @@ i32.and i32.store end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 1073741820 + i32.ge_u + if + i32.const 1120 + i32.const 1184 + i32.const 461 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1184 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $rc/optimize/getRef (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1056 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 i32.const 16 i32.add + ) + (func $rc/optimize/getRef (result i32) + i32.const 0 + i32.const 3 + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1204 + i32.const 1252 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -990,10 +1132,9 @@ (local $1 i32) local.get $0 call $~lib/rt/pure/__retain - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add + i32.const 0 + i32.const 3 + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 call $~lib/rt/pure/__release @@ -1117,6 +1258,12 @@ call $~lib/rt/pure/__release i32.const 0 ) + (func $rc/optimize/FinalizeARC.eliminates.unnecessaryAllocation + i32.const 1 + i32.const 0 + call $~lib/rt/pure/__new + drop + ) (func $rc/optimize/FinalizeARC.keeps.dynamicRetain (param $0 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1141,7 +1288,7 @@ i32.and if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1155,21 +1302,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1204 + i32.const 1252 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1183,7 +1330,7 @@ i32.and if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1204,7 +1351,7 @@ i32.le_u if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/optimize.ts b/tests/compiler/rc/optimize.ts index e041871c8a..4ee5a9e420 100644 --- a/tests/compiler/rc/optimize.ts +++ b/tests/compiler/rc/optimize.ts @@ -143,7 +143,7 @@ export namespace FinalizeARC { export namespace eliminates { export function unnecessaryAllocation(): void { - __release(__retain(__alloc(1, 0))); + __release(__retain(__new(1, 0))); } export function unnecessaryPair(a: usize): void { diff --git a/tests/compiler/rc/optimize.untouched.wat b/tests/compiler/rc/optimize.untouched.wat index 4e66388ec1..b287be9c41 100644 --- a/tests/compiler/rc/optimize.untouched.wat +++ b/tests/compiler/rc/optimize.untouched.wat @@ -1,25 +1,23 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 196)) + (global $~lib/heap/__heap_base i32 (i32.const 228)) (export "memory" (memory $0)) (export "eliminated_v" (func $rc/optimize/eliminated_v)) (export "eliminated_vi" (func $rc/optimize/eliminated_vi)) @@ -117,7 +115,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -145,8 +143,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -160,11 +158,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -172,8 +170,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -226,29 +224,29 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -358,8 +356,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -375,8 +373,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -384,7 +382,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -406,7 +404,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -416,7 +414,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -433,7 +431,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -470,8 +468,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -481,7 +479,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -491,7 +489,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -523,11 +521,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -535,8 +533,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -544,7 +542,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -553,8 +551,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -612,8 +610,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -637,15 +635,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -714,31 +712,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 80 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -752,14 +752,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 80 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -791,8 +791,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -803,10 +803,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -814,9 +814,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -832,15 +832,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -859,7 +859,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -872,127 +872,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1000,49 +1019,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 128 - i32.const 80 + i32.const 96 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1065,7 +1059,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1119,8 +1113,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1184,8 +1178,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1241,7 +1235,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1259,11 +1253,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1327,14 +1321,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 80 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1348,8 +1344,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1361,14 +1357,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1387,7 +1383,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1399,7 +1395,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1416,136 +1412,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 80 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 32 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1555,7 +1532,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1571,7 +1548,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1816,7 +1793,7 @@ (func $rc/optimize/FinalizeARC.eliminates.unnecessaryAllocation i32.const 1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain call $~lib/rt/pure/__release ) @@ -1826,17 +1803,17 @@ call $~lib/rt/pure/__release ) (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticPair - i32.const 192 + i32.const 224 call $~lib/rt/pure/__retain call $~lib/rt/pure/__release ) (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticRetain - i32.const 192 + i32.const 224 call $~lib/rt/pure/__retain drop ) (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticRelease - i32.const 192 + i32.const 224 call $~lib/rt/pure/__release ) (func $rc/optimize/FinalizeARC.keeps.dynamicRetain (param $0 i32) @@ -1848,18 +1825,10 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1909,7 +1878,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1986,7 +1955,7 @@ unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index bba71a6ad7..205f020947 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -1,28 +1,30 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\04\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 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1216) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) + (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~start)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -36,8 +38,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1056 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -46,18 +48,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1056 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -99,28 +101,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1056 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -191,8 +193,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1056 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -205,14 +207,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1056 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -228,14 +230,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -250,7 +252,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -278,8 +280,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1056 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -287,14 +289,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -323,33 +325,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1056 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1056 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -396,8 +398,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1056 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -415,15 +417,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -461,54 +463,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1056 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1056 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -524,18 +524,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1056 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -545,23 +544,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -572,93 +572,109 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1264 + i32.const 0 + i32.store + i32.const 2832 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1264 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1264 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1264 + i32.const 2836 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1264 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.ge_u + if + i32.const 1120 + i32.const 1056 + i32.const 461 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $0 + i32.const 12 + i32.le_u + select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -684,7 +700,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -715,8 +731,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 338 + i32.const 1056 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -767,8 +783,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1056 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -796,12 +812,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1040 - i32.const 365 + i32.const 1056 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -812,7 +830,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -824,12 +842,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -844,7 +862,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -864,169 +882,565 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 + call $~lib/rt/tlsf/prepareSize + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 if - unreachable + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 end end + else + local.get $1 + i32.const 7 + i32.and local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.const 7 + i32.and + i32.eq if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end end end end - local.get $3 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + call $~lib/memory/memory.copy + local.get $1 + i32.const 1252 + i32.ge_u + if + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $2 + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1252 i32.lt_u if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $5 + i32.const -4 + i32.and + local.tee $3 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $7 + i32.const 1 + i32.and + if + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $4 + i32.ge_u + if + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $5 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $2 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock + end + end + local.get $0 + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + i32.const 1252 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 275 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub + local.get $1 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__realloc + local.tee $4 + i32.const 4 + i32.sub + local.tee $0 local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 local.get $0 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=16 + local.get $4 i32.const 16 i32.add ) @@ -1034,11 +1448,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1220 + i32.const 1252 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1053,7 +1467,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1070,7 +1484,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1081,17 +1495,20 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1220 + i32.const 1252 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) (func $~start - nop + i32.const 0 + i32.const 3 + call $~lib/rt/pure/__new + drop ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) @@ -1108,7 +1525,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1122,21 +1539,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1220 + i32.const 1252 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1150,28 +1567,22 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 126 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/insertBlock + call $~lib/rt/tlsf/freeBlock else local.get $1 i32.const 0 i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 792691b5ec..046b6b1841 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -1,31 +1,33 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\04\00\00\00 \00\00\00\00\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 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 192) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (global $~lib/heap/__heap_base i32 (i32.const 212)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 192)) + (global $~lib/heap/__heap_base i32 (i32.const 228)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -51,7 +53,7 @@ if i32.const 0 i32.const 32 - i32.const 277 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -65,11 +67,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -78,7 +80,7 @@ if i32.const 0 i32.const 32 - i32.const 279 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -132,28 +134,28 @@ if i32.const 0 i32.const 32 - i32.const 292 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -264,7 +266,7 @@ if i32.const 0 i32.const 32 - i32.const 205 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -281,7 +283,7 @@ if i32.const 0 i32.const 32 - i32.const 207 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -289,7 +291,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -311,7 +313,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -321,7 +323,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -338,7 +340,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -376,7 +378,7 @@ if i32.const 0 i32.const 32 - i32.const 228 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -386,7 +388,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -396,7 +398,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -428,11 +430,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -441,7 +443,7 @@ if i32.const 0 i32.const 32 - i32.const 243 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -449,7 +451,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -459,7 +461,7 @@ if i32.const 0 i32.const 32 - i32.const 244 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -518,7 +520,7 @@ if i32.const 0 i32.const 32 - i32.const 260 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -542,15 +544,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -619,31 +621,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 i32.const 32 - i32.const 386 - i32.const 5 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -657,14 +661,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 396 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -697,7 +701,7 @@ if i32.const 0 i32.const 32 - i32.const 408 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -708,10 +712,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -719,9 +723,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -737,15 +741,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -764,7 +768,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -777,127 +781,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -905,29 +928,16 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 + i32.const 96 i32.const 32 i32.const 461 i32.const 30 @@ -935,19 +945,7 @@ unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -970,7 +968,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1025,7 +1023,7 @@ if i32.const 0 i32.const 32 - i32.const 338 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1090,7 +1088,7 @@ if i32.const 0 i32.const 32 - i32.const 351 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1146,7 +1144,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1164,11 +1162,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1232,6 +1230,8 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz @@ -1239,7 +1239,7 @@ if i32.const 0 i32.const 32 - i32.const 365 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1253,8 +1253,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1266,14 +1266,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1292,7 +1292,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1304,7 +1304,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1321,221 +1321,1723 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 32 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 520 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock - i32.const 16 + i32.const 4 i32.add ) - (func $~lib/rt/pure/increment (param $0 i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 + i32.const 4 + i32.sub local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 + i32.const 32 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $1 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end end - ) - (func $rc/rereturn/Ref#constructor (param $0 i32) (result i32) local.get $0 - i32.eqz + i32.const 3 + i32.and + i32.const 0 + i32.eq if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) + (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $5 + local.get $3 + local.get $5 + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.load + local.set $8 + local.get $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $7 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $6 + i32.or + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $5 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 112 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/pure/__release (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $rc/rereturn/Ref#constructor (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/pure/__new + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -1554,27 +3056,6 @@ (func $~start call $start:rc/rereturn ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -1604,7 +3085,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1615,7 +3096,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1630,7 +3111,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1647,7 +3128,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1685,14 +3166,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index 5d952dae01..d5c9677fb9 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -1,18 +1,17 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "test1" (func $rc/ternary-mismatch/test1)) @@ -31,8 +30,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -41,18 +40,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -94,28 +93,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -186,8 +185,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -200,14 +199,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -223,14 +222,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -245,7 +244,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -273,8 +272,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -282,14 +281,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -318,33 +317,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -391,8 +390,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -410,15 +409,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -456,54 +455,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -519,18 +516,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -540,23 +536,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -567,93 +564,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1216 + i32.const 0 + i32.store + i32.const 2784 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1216 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1184 - local.set $1 - i32.const 1184 - i32.const 0 - i32.store - i32.const 2752 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1216 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1184 - i32.const 2768 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1184 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1216 + i32.const 2788 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1216 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -690,8 +678,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -716,110 +704,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -828,17 +788,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -846,7 +806,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -861,7 +821,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -886,11 +846,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1184 + i32.const 1216 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -905,7 +865,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -922,7 +882,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -932,8 +892,33 @@ local.get $0 ) (func $rc/ternary-mismatch/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add call $~lib/rt/pure/__retain @@ -949,11 +934,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1184 + i32.const 1216 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1000,7 +985,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1014,21 +999,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1184 + i32.const 1216 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1042,7 +1027,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1063,7 +1048,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index 67e3a4f118..0a4a1a50dc 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -1,25 +1,23 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 176)) + (global $~lib/heap/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) (export "test1" (func $rc/ternary-mismatch/test1)) (export "test2" (func $rc/ternary-mismatch/test2)) @@ -46,8 +44,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -61,11 +59,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -73,8 +71,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -127,29 +125,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -259,8 +257,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -276,8 +274,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -285,7 +283,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -307,7 +305,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -317,7 +315,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -334,7 +332,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -371,8 +369,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -382,7 +380,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -392,7 +390,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -424,11 +422,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -436,8 +434,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -445,7 +443,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -454,8 +452,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -513,8 +511,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -538,15 +536,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -615,31 +613,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -653,14 +653,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -692,8 +692,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -704,10 +704,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -715,9 +715,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -733,15 +733,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -760,7 +760,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -773,127 +773,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -901,49 +920,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -966,7 +960,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1020,8 +1014,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1085,8 +1079,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1142,7 +1136,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1160,11 +1154,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1228,14 +1222,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1249,8 +1245,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1262,14 +1258,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1288,7 +1284,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1300,7 +1296,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1317,136 +1313,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1471,7 +1448,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1494,7 +1471,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1507,7 +1484,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1519,7 +1496,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1544,7 +1521,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1580,18 +1557,10 @@ (func $~start call $start:rc/ternary-mismatch ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1630,7 +1599,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1641,7 +1610,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1656,7 +1625,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1673,7 +1642,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1711,14 +1680,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index 502c3cd9f8..d547ddeb2a 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -8,7 +8,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -94,22 +94,30 @@ local.get $1 i32.mul ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -143,29 +151,33 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 4 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 @@ -200,7 +212,7 @@ nop ) (func $~start - i32.const 1072 + i32.const 1084 global.set $~lib/rt/stub/offset i32.const 0 i32.const 2 @@ -212,7 +224,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -269,7 +281,7 @@ i32.eqz if i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 end local.get $0 diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 5c277543ef..d6ac07354f 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -1,14 +1,14 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -102,6 +102,19 @@ local.get $1 i32.add ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -113,6 +126,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -156,60 +179,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -220,7 +250,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -274,12 +304,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -351,7 +385,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 606338749d..19d7f332a8 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -5,8 +5,8 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -45,23 +45,31 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $1 - i32.const 16 + local.tee $2 + i32.const 28 i32.add local.tee $0 memory.size local.tee $3 i32.const 16 i32.shl - local.tee $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if local.get $3 local.get $0 - local.get $2 + local.get $1 i32.sub i32.const 65535 i32.add @@ -69,16 +77,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $3 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -89,28 +97,33 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $1 - i32.const 16 + i32.const 28 + i32.store + local.get $2 + i32.const 4 i32.sub local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 3 i32.store offset=12 - local.get $1 + local.get $0 + i32.const 4 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + local.tee $0 i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store - local.get $1 + local.get $0 ) (func $export-default/theDefault nop @@ -121,7 +134,7 @@ i32.sub ) (func $~start - i32.const 1120 + i32.const 1132 global.set $~lib/rt/stub/offset call $exports/Car#constructor global.set $reexport/car @@ -131,7 +144,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -145,7 +158,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1104 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -159,7 +172,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1104 i32.const 24 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 97762fb368..d732c1e4d8 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -52,6 +52,19 @@ local.get $1 i32.add ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -63,6 +76,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -106,60 +129,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -170,7 +200,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -224,12 +254,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 49a4bab338..288b24537e 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1,67 +1,71 @@ (module (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1120) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1168) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1296) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1392) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 1036) "\08\00\00\00\01") + (data (i32.const 1052) "\08\00\00\00\01") + (data (i32.const 1068) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1132) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1180) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1308) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1372) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 1404) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -69,16 +73,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -87,41 +91,60 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/memory/memory.copy (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1040 + i32.const 1056 local.set $3 i32.const 8 local.set $4 block $~lib/util/memory/memmove|inlined.0 local.get $0 - i32.const 1040 + i32.const 1056 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $0 - i32.const 1040 + i32.const 1056 i32.lt_u if local.get $0 @@ -230,7 +253,7 @@ local.tee $4 i32.add local.get $4 - i32.const 1040 + i32.const 1056 i32.add i32.load8_u i32.store8 @@ -249,7 +272,7 @@ local.tee $4 i32.add local.get $4 - i32.const 1040 + i32.const 1056 i32.add i64.load i64.store @@ -267,7 +290,7 @@ local.tee $4 i32.add local.get $4 - i32.const 1040 + i32.const 1056 i32.add i32.load8_u i32.store8 @@ -354,7 +377,7 @@ local.get $0 i64.eqz if - i32.const 1376 + i32.const 1392 return end local.get $0 @@ -369,7 +392,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $4 local.get $2 local.get $3 @@ -423,7 +446,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $4 local.set $3 loop $do-continue|0 @@ -458,11 +481,11 @@ (local $1 i32) i32.const 16 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $0 i32.const 8 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $1 call $~lib/memory/memory.copy local.get $0 @@ -482,8 +505,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1072 - i32.const 1136 + i32.const 1088 + i32.const 1152 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -498,7 +521,7 @@ (local $0 i32) i32.const 8 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i64.const 0 i64.store @@ -529,7 +552,7 @@ local.tee $1 i32.eqz if - i32.const 1376 + i32.const 1392 local.set $0 br $__inlined_func$~lib/util/number/utoa32 end @@ -539,7 +562,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 local.get $1 local.get $2 @@ -548,7 +571,7 @@ local.get $0 ) (func $~start - i32.const 1488 + i32.const 1500 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 9de1f9f8f9..bef239d0a3 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -15,26 +15,39 @@ (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 160) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 288) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 108) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 156) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 284) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 348) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 372) "0\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") - (data (i32.const 784) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1824) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 780) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 1836) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/heap/__heap_base i32 (i32.const 1912)) + (global $~lib/heap/__heap_base i32 (i32.const 1928)) (export "memory" (memory $0)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -46,6 +59,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -89,60 +112,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1397,11 +1427,11 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $2 if @@ -1415,13 +1445,13 @@ (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $4 local.get $0 local.get $1 @@ -1430,7 +1460,7 @@ local.get $5 i32.const 0 local.get $3 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer local.set $6 local.get $4 local.get $6 @@ -2018,7 +2048,7 @@ i32.const 1 i32.shl i32.add - i32.const 1840 + i32.const 1856 local.get $1 local.get $6 i64.and @@ -2054,7 +2084,7 @@ i32.const 1 i32.shl i32.add - i32.const 1840 + i32.const 1856 local.get $1 local.get $6 local.get $4 @@ -2132,7 +2162,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.set $7 @@ -2156,7 +2186,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.set $6 @@ -2192,7 +2222,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.set $3 @@ -2217,7 +2247,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.get $0 @@ -2244,7 +2274,7 @@ i32.const 3 i32.const 3 i32.const 32 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/stub/__retain local.set $1 local.get $1 @@ -2263,7 +2293,7 @@ if i32.const 8 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -2338,7 +2368,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.set $6 @@ -2372,7 +2402,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.set $6 @@ -2399,7 +2429,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 local.get $0 @@ -2437,12 +2467,16 @@ ) (func $~start global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 81ca43caa9..ce0c0cc59a 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -3,47 +3,45 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i32_i64_i32_i64_=>_i32 (func (param i32 i64 i32 i64 i32 i64) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1056) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1088) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1184) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1312) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1408) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1536) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1632) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1680) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1712) "\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 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -346,7 +366,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $2 local.get $0 local.get $3 @@ -359,45 +379,45 @@ end local.get $2 else - i32.const 1392 + i32.const 1408 end ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 + local.get $2 + local.get $0 i64.sub - local.set $9 - local.get $3 + local.set $8 + local.get $2 i64.const 1 i32.const 0 - local.get $4 + local.get $3 i32.sub - local.tee $10 + local.tee $9 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub - local.tee $12 + local.tee $11 i64.and - local.set $7 - local.get $3 - local.get $10 + local.set $6 + local.get $2 + local.get $9 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $1 call $~lib/util/number/decimalCount32 - local.set $8 + local.set $7 loop $while-continue|0 - local.get $8 + local.get $7 i32.const 0 i32.gt_s if @@ -413,339 +433,335 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + local.get $7 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $2 + local.get $1 i32.const 1000000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 1000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 1000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 - local.set $4 + local.get $1 + local.set $3 i32.const 0 - local.set $2 + local.set $1 br $break|1 end i32.const 0 - local.set $4 + local.set $3 end - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.or if - local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl + i32.const 1728 i32.add - local.get $4 + local.get $3 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 - local.get $7 - local.get $2 + local.set $7 + local.get $6 + local.get $1 i64.extend_i32_u - local.get $10 + local.get $9 i64.extend_i32_s i64.shl i64.add - local.tee $1 - local.get $5 + local.tee $0 + local.get $4 i64.le_u if - local.get $8 + local.get $7 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 i32.const 2 i32.shl - i32.const 2584 + i32.const 2656 i32.add i64.load32_u - local.get $10 + local.get $9 i64.extend_i32_s i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub + local.set $2 + local.get $5 i32.const 1 i32.shl + i32.const 1726 i32.add - local.tee $0 + local.tee $3 i32.load16_u - local.set $2 + local.set $1 loop $while-continue|3 i32.const 1 - local.get $9 - local.get $1 + local.get $8 + local.get $0 i64.sub - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.add - local.tee $7 - local.get $9 + local.tee $6 + local.get $8 i64.sub i64.gt_u - local.get $7 - local.get $9 + local.get $6 + local.get $8 i64.lt_u select i32.const 0 - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.sub - local.get $3 + local.get $2 i64.ge_u i32.const 0 - local.get $1 - local.get $9 + local.get $0 + local.get $8 i64.lt_u select select if - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 - local.get $1 - local.get $3 - i64.add local.set $1 + local.get $0 + local.get $2 + i64.add + local.set $0 br $while-continue|3 end end - local.get $0 - local.get $2 + local.get $3 + local.get $1 i32.store16 - local.get $6 + local.get $5 return end br $while-continue|0 end end - local.get $10 + local.get $9 i64.extend_i32_s - local.set $1 + local.set $0 loop $while-continue|4 - local.get $5 + local.get $4 i64.const 10 i64.mul - local.set $5 - local.get $7 + local.set $4 + local.get $6 i64.const 10 i64.mul - local.tee $3 - local.get $1 + local.tee $2 + local.get $0 i64.shr_u - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl + i32.const 1728 i32.add - local.get $7 + local.get $6 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 - local.get $3 - local.get $12 + local.set $7 + local.get $2 + local.get $11 i64.and - local.tee $7 - local.get $5 + local.tee $6 + local.get $4 i64.ge_u br_if $while-continue|4 end - local.get $8 + local.get $7 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $9 - i32.const 0 + local.get $6 + local.set $0 local.get $8 + i32.const 0 + local.get $7 i32.sub i32.const 2 i32.shl - i32.const 2584 + i32.const 2656 i32.add i64.load32_u i64.mul - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub + local.set $2 + local.get $5 i32.const 1 i32.shl + i32.const 1726 i32.add - local.tee $0 + local.tee $3 i32.load16_u - local.set $2 + local.set $1 loop $while-continue|6 i32.const 1 - local.get $3 - local.get $1 + local.get $2 + local.get $0 i64.sub - local.get $1 - local.get $11 + local.get $0 + local.get $10 i64.add - local.tee $7 - local.get $3 + local.tee $6 + local.get $2 i64.sub i64.gt_u - local.get $7 - local.get $3 + local.get $6 + local.get $2 i64.lt_u select i32.const 0 - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.lt_u select select if - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 - local.get $1 - local.get $11 - i64.add local.set $1 + local.get $0 + local.get $10 + i64.add + local.set $0 br $while-continue|6 end end - local.get $0 - local.get $2 + local.get $3 + local.get $1 i32.store16 - local.get $6 + local.get $5 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -920,241 +936,234 @@ end end ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 + local.get $1 i32.eqz if local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1728 i32.add i32.const 3145774 i32.store - local.get $1 + local.get $0 i32.const 2 i32.add return end + local.get $0 local.get $1 - local.get $2 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s i32.const 0 - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.le_s select if (result i32) loop $for-loop|0 - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.lt_s if local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1728 i32.add i32.const 48 i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl + i32.const 1728 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s select if (result i32) - local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl + i32.const 1728 i32.add - local.tee $0 + local.tee $2 i32.const 2 i32.add - local.get $0 - i32.const 0 local.get $2 + i32.const 0 + local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 + local.get $2 i32.const 46 i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s i32.const 0 i32.const -6 - local.get $3 + local.get $2 i32.lt_s select if (result i32) - local.get $0 i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl + i32.const 1728 i32.add + i32.const 1728 local.get $0 - local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 + i32.const 1728 i32.const 3014704 i32.store i32.const 2 - local.set $2 + local.set $1 loop $for-loop|1 + local.get $1 local.get $2 - local.get $3 i32.lt_s - if - local.get $0 - local.get $2 + if + local.get $1 i32.const 1 i32.shl + i32.const 1728 i32.add i32.const 48 i32.store16 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|1 end end - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.add else - local.get $1 + local.get $0 i32.const 1 i32.eq if (result i32) - local.get $0 + i32.const 1730 i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 + i32.store16 + i32.const 1732 + local.get $2 i32.const 1 i32.sub - local.tee $0 + local.tee $2 i32.const 0 i32.lt_s - local.tee $2 + local.tee $0 if i32.const 0 - local.get $0 + local.get $2 i32.sub - local.set $0 + local.set $2 end - local.get $0 - local.get $0 + local.get $2 + local.get $2 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa_dec_simple - local.get $1 + i32.const 1732 i32.const 45 i32.const 43 - local.get $2 - select - i32.store16 offset=4 local.get $0 + select + i32.store16 + local.get $1 i32.const 2 i32.add else + i32.const 1732 + i32.const 1730 local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 2 i32.sub call $~lib/memory/memory.copy - local.get $0 + i32.const 1730 i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 + i32.store16 + local.get $1 + i32.const 1728 i32.add - local.tee $0 + local.tee $1 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $2 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub - local.tee $0 + local.tee $2 i32.const 0 i32.lt_s local.tee $3 if i32.const 0 - local.get $0 + local.get $2 i32.sub - local.set $0 + local.set $2 end - local.get $0 - local.get $0 + local.get $2 + local.get $2 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $0 + local.tee $2 call $~lib/util/number/utoa_dec_simple - local.get $2 + local.get $1 i32.const 45 i32.const 43 local.get $3 select i32.store16 offset=4 local.get $0 - local.get $1 + local.get $2 i32.add i32.const 2 i32.add @@ -1163,28 +1172,32 @@ end end ) - (func $~lib/util/number/dtoa_core (param $0 i32) (result i32) + (func $~lib/util/number/dtoa_core (result i32) + (local $0 i64) (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 i64) + (local $4 i32) i32.const -4 global.set $~lib/util/number/_K - i32.const 2064 + i32.const 2136 i64.load global.set $~lib/util/number/_frc_pow - i32.const 2496 + i32.const 2568 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $1 + local.tee $0 + i64.const 4294967295 + i64.and + local.set $1 + local.get $0 i64.const 32 i64.shr_u - local.set $3 + local.tee $0 + i64.const 31 + i64.shl local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 i64.const 31 i64.shl local.get $1 @@ -1193,10 +1206,26 @@ i64.const 32 i64.shr_u i64.add - local.set $2 + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + i64.const 4294967295 + i64.and local.get $0 + i64.const 10 + i64.shl + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $2 local.get $0 - local.get $3 i64.const 31 i64.shl local.get $1 @@ -1204,11 +1233,11 @@ i64.shl i64.const 0 i64.add - local.tee $4 + local.tee $3 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $3 i64.const 4294967295 i64.and i64.const 0 @@ -1219,36 +1248,15 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $0 + local.tee $4 i32.const 3 i32.add - local.get $3 - i64.const 31 - i64.shl - local.get $2 - i64.const 32 - i64.shr_u - i64.add local.get $2 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $2 - local.get $0 + local.get $4 i32.const 3 i32.add local.get $2 - local.get $3 + local.get $0 i64.const 2147483647 i64.mul local.get $1 @@ -1264,7 +1272,7 @@ i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $0 i64.const 4294966784 i64.mul local.get $2 @@ -1283,255 +1291,133 @@ global.get $~lib/util/number/_K call $~lib/util/number/prettify ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $4 - i32.lt_s - local.set $2 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $4 - i32.lt_s - local.set $1 - i32.const 0 - local.get $4 - local.get $2 - select - local.tee $2 - local.get $3 - local.get $4 - local.get $1 - select - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2640 - return - end - i32.const 0 - local.get $1 - local.get $4 + (func $~lib/number/F64#toString (result i32) + (local $0 i32) + (local $1 i32) + call $~lib/util/number/dtoa_core i32.const 1 i32.shl - i32.eq - local.get $2 - select - if - local.get $0 - return - end - local.get $3 + local.tee $0 i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $1 + i32.const 1728 local.get $0 - local.get $2 - i32.add - local.get $3 call $~lib/memory/memory.copy local.get $1 ) - (func $~lib/number/F64#toString (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 56 - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $0 - call $~lib/util/number/dtoa_core - local.tee $1 - i32.const 28 - i32.ne - if (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 2656 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $2 - i32.load - i32.add - i32.eq - if - local.get $2 - global.set $~lib/rt/stub/offset - end - else - local.get $0 - end - ) (func $start:resolve-binary (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 2 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 7 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3200 + i32.const 3212 global.set $~lib/rt/stub/offset i32.const 1 global.set $resolve-binary/a i32.const 1 call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -1543,12 +1429,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -1560,12 +1446,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1577,24 +1463,24 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end call $~lib/number/F64#toString - i32.const 2704 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -1606,12 +1492,12 @@ global.set $resolve-binary/a i32.const 2 call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -1623,12 +1509,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 80 i32.const 1 call $~lib/builtins/abort @@ -1640,12 +1526,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 2736 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -1657,12 +1543,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -1674,12 +1560,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -1691,12 +1577,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 100 i32.const 1 call $~lib/builtins/abort @@ -1708,12 +1594,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 2768 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -1725,12 +1611,12 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -1738,12 +1624,12 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2768 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -1751,12 +1637,12 @@ end i32.const -1 call $~lib/number/I32#toString - i32.const 2800 + i32.const 2816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -1764,12 +1650,12 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 127 i32.const 1 call $~lib/builtins/abort @@ -1777,12 +1663,12 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 132 i32.const 1 call $~lib/builtins/abort @@ -1790,12 +1676,12 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -1832,36 +1718,36 @@ end local.get $2 call $~lib/number/I32#toString - i32.const 2736 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end call $~lib/number/F64#toString - i32.const 2704 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end call $~lib/number/F64#toString - i32.const 2704 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -1869,12 +1755,12 @@ end i32.const 4 call $~lib/number/I32#toString - i32.const 2736 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -1882,12 +1768,12 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 170 i32.const 1 call $~lib/builtins/abort @@ -1895,12 +1781,12 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2768 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -1908,12 +1794,12 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 182 i32.const 1 call $~lib/builtins/abort @@ -1921,12 +1807,12 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2768 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -1934,12 +1820,12 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 192 i32.const 1 call $~lib/builtins/abort @@ -1947,12 +1833,12 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -1960,12 +1846,12 @@ end i32.const 0 call $~lib/number/I32#toString - i32.const 1392 + i32.const 1408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 204 i32.const 1 call $~lib/builtins/abort @@ -1973,12 +1859,12 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1520 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 209 i32.const 1 call $~lib/builtins/abort @@ -1986,12 +1872,12 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1552 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 214 i32.const 1 call $~lib/builtins/abort @@ -1999,147 +1885,147 @@ end i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop - i32.const 2832 - i32.const 2832 + i32.const 2848 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 275 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2864 - i32.const 2864 + i32.const 2880 + i32.const 2880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 280 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2896 - i32.const 2896 + i32.const 2912 + i32.const 2912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 285 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2928 - i32.const 2928 + i32.const 2944 + i32.const 2944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 290 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2960 - i32.const 2960 + i32.const 2976 + i32.const 2976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 295 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2992 - i32.const 2992 + i32.const 3008 + i32.const 3008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 300 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3024 - i32.const 3024 + i32.const 3040 + i32.const 3040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 305 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3056 - i32.const 3056 + i32.const 3072 + i32.const 3072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 310 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3088 - i32.const 3088 + i32.const 3104 + i32.const 3104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3120 - i32.const 3120 + i32.const 3136 + i32.const 3136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 320 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3152 - i32.const 3152 + i32.const 3168 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 325 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3184 - i32.const 3184 + i32.const 3200 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 330 i32.const 1 call $~lib/builtins/abort @@ -2147,11 +2033,11 @@ end i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new global.set $resolve-binary/bar i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new global.set $resolve-binary/bar2 global.get $resolve-binary/bar2 global.set $resolve-binary/bar @@ -2160,7 +2046,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 348 i32.const 1 call $~lib/builtins/abort @@ -2171,7 +2057,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 353 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 586dfd71b8..f6163adf63 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -1,13 +1,13 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -17,45 +17,44 @@ (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 48) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 80) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s\00") - (data (i32.const 144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 176) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 304) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 44) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 76) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s\00") + (data (i32.const 140) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 172) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 300) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 364) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 388) "0\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") - (data (i32.const 800) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1840) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 1936) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1968) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1992) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 8144) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 8176) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 8208) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 8256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 8288) "\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)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 8156) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") + (data (i32.const 8188) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") + (data (i32.const 8220) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 8268) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 8304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 8360) "\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_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1200) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1264) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1296) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1328) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1408) "\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_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) @@ -18,32 +18,31 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 192) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 256) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 320) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 368) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 400) "\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_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data (i32.const 1136) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1168) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\03") - (data (i32.const 1200) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1328) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1392) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1424) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 1520) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\002") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data (i32.const 1148) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02") + (data (i32.const 1180) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\03") + (data (i32.const 1212) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1340) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1404) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 1436) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 1532) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\002") (table $0 4 funcref) (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -41,39 +41,42 @@ (local $4 i32) (local $5 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $3 + local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $1 - i32.const 16 - local.get $1 - i32.const 16 - i32.gt_u - select + i32.const 4 + i32.sub local.tee $5 i32.add - local.tee $1 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl - local.tee $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $4 - local.get $1 local.get $2 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -81,16 +84,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $4 + local.tee $1 local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -99,24 +102,11 @@ end end end - local.get $1 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 local.get $5 i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - i32.const 1 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $3 + local.get $4 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -127,13 +117,13 @@ local.get $0 i32.eqz if - i32.const 1408 + i32.const 1424 return end local.get $0 i32.const 31 i32.shr_u - local.tee $2 + local.tee $4 if i32.const 0 local.get $0 @@ -180,23 +170,50 @@ i32.const 100000 i32.lt_u select - local.get $2 + local.get $4 i32.add - local.tee $3 + local.tee $5 i32.const 1 i32.shl + local.tee $2 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $2 + i32.const 16 + i32.add call $~lib/rt/stub/__alloc - local.tee $4 - local.set $5 + local.tee $3 + i32.const 4 + i32.sub + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + local.tee $2 + local.set $3 loop $do-continue|0 local.get $0 i32.const 10 i32.div_u - local.get $5 local.get $3 + local.get $5 i32.const 1 i32.sub - local.tee $3 + local.tee $5 i32.const 1 i32.shl i32.add @@ -209,19 +226,19 @@ local.tee $0 br_if $do-continue|0 end - local.get $2 + local.get $4 if - local.get $4 + local.get $2 i32.const 45 i32.store16 end - local.get $4 + local.get $2 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -229,7 +246,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1536 + i32.const 1552 local.set $3 local.get $0 i32.const 7 @@ -304,38 +321,38 @@ (local $0 i32) (local $1 i32) i32.const 2 - i32.const 1040 + i32.const 1056 i32.load call_indirect (type $i32_=>_i32) i32.const 42 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1152 + i32.const 1168 i32.load call_indirect (type $i32_=>_i32) i32.const 42 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1552 + i32.const 1564 global.set $~lib/rt/stub/offset block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 0 - i32.const 1184 + i32.const 1200 i32.load call_indirect (type $i32_=>_i32) call $~lib/util/number/itoa32 @@ -343,7 +360,7 @@ local.set $1 i32.const 1 local.get $0 - i32.const 1536 + i32.const 1552 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop @@ -354,7 +371,7 @@ local.get $1 call $~lib/string/String#get:length local.tee $0 - i32.const 1536 + i32.const 1552 call $~lib/string/String#get:length i32.ne br_if $folding-inner0 @@ -369,7 +386,7 @@ i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 11 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 7384bbdc18..5cb82b0c6e 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -11,24 +11,24 @@ (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 128) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 160) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 192) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 320) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 124) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 156) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 188) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 316) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 380) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 404) "0\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") - (data (i32.const 816) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1856) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 1952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\002\00") + (data (i32.const 812) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 1868) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 1964) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\002\00") (table $0 4 funcref) (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1972)) + (global $~lib/heap/__heap_base i32 (i32.const 1988)) (export "memory" (memory $0)) (start $~start) (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) @@ -101,6 +101,19 @@ end unreachable ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -112,6 +125,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -155,60 +178,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -513,7 +543,7 @@ i32.const 1 i32.shl i32.add - i32.const 1872 + i32.const 1888 local.get $1 local.get $6 i64.and @@ -549,7 +579,7 @@ i32.const 1 i32.shl i32.add - i32.const 1872 + i32.const 1888 local.get $1 local.get $6 local.get $4 @@ -632,7 +662,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.set $7 @@ -668,7 +698,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.set $7 @@ -699,7 +729,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.get $4 @@ -728,9 +758,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -970,12 +1000,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -988,7 +1022,7 @@ i32.const 10 call $~lib/number/I32#toString local.tee $0 - i32.const 1968 + i32.const 1984 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index e220e7e288..75c9263ab5 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -17,22 +17,30 @@ (export "Outer.inner" (func $resolve-nested/Outer.inner)) (export "outer" (func $resolve-nested/outer)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -66,22 +74,26 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) local.get $0 @@ -89,7 +101,7 @@ local.get $0 else i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end ) (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) @@ -98,7 +110,7 @@ local.get $0 else i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end ) (func $resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) @@ -111,7 +123,7 @@ nop ) (func $~start - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index c7af958501..c6255fcc28 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -36,6 +36,19 @@ (export "Outer.inner" (func $resolve-nested/Outer.inner)) (export "outer" (func $resolve-nested/outer)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -47,6 +60,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -90,60 +113,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -154,7 +184,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -166,7 +196,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -253,12 +283,16 @@ ) (func $~start global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index b06a5f2b6d..111186b46e 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -4,22 +4,30 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc + (func $resolve-new/Foo#constructor (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $3 - i32.const 16 + local.tee $4 + i32.const 28 i32.add local.tee $0 memory.size local.tee $2 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $1 i32.gt_u if @@ -53,26 +61,28 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 + i32.const 28 + i32.store + local.get $4 + i32.const 4 i32.sub local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 0 i32.store offset=8 local.get $0 - i32.const 0 + i32.const 3 i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 ) (func $~start - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__alloc + call $resolve-new/Foo#constructor + call $resolve-new/Foo#constructor ) ) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 61f82a9dd5..e73a03b5c5 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -1,7 +1,7 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 0) (table $0 1 funcref) @@ -11,6 +11,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -22,6 +35,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -65,60 +88,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -129,7 +159,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -144,12 +174,16 @@ (func $start:resolve-new (local $0 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 07f6d62705..f972ae71cf 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,71 +1,74 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1248) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1376) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 1456) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001") - (data (i32.const 1488) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1520) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\002\002") - (data (i32.const 1552) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003") - (data (i32.const 1584) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\003\003") - (data (i32.const 1616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 1648) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\005") - (data (i32.const 1680) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\005\005") - (data (i32.const 1712) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\007") - (data (i32.const 1744) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008") + (data (i32.const 1036) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1164) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1228) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 1260) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 1356) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 1388) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 1468) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001") + (data (i32.const 1500) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") + (data (i32.const 1532) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\002\002") + (data (i32.const 1564) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\003") + (data (i32.const 1596) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\003\003") + (data (i32.const 1628) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004") + (data (i32.const 1660) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\005") + (data (i32.const 1692) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\005\005") + (data (i32.const 1724) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\007") + (data (i32.const 1756) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006") + (data (i32.const 1788) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -73,16 +76,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -91,24 +94,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -119,7 +141,7 @@ local.get $0 i32.eqz if - i32.const 1232 + i32.const 1248 return end local.get $0 @@ -178,7 +200,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $4 local.set $5 loop $do-continue|0 @@ -212,9 +234,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -328,16 +350,16 @@ ) (func $start:resolve-propertyaccess (local $0 i32) - i32.const 1808 + i32.const 1820 global.set $~lib/rt/stub/offset i32.const 1 call $~lib/util/number/itoa32 - i32.const 1360 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -345,12 +367,12 @@ end i32.const 11 call $~lib/util/number/itoa32 - i32.const 1472 + i32.const 1488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -358,12 +380,12 @@ end i32.const 2 call $~lib/util/number/itoa32 - i32.const 1504 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -371,12 +393,12 @@ end i32.const 22 call $~lib/util/number/itoa32 - i32.const 1536 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -384,12 +406,12 @@ end i32.const 3 call $~lib/util/number/itoa32 - i32.const 1568 + i32.const 1584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -397,12 +419,12 @@ end i32.const 33 call $~lib/util/number/itoa32 - i32.const 1600 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -410,12 +432,12 @@ end i32.const 4 call $~lib/util/number/itoa32 - i32.const 1632 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -423,12 +445,12 @@ end i32.const 5 call $~lib/util/number/itoa32 - i32.const 1664 + i32.const 1680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -436,12 +458,12 @@ end i32.const 55 call $~lib/util/number/itoa32 - i32.const 1696 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -449,12 +471,12 @@ end i32.const 7 call $~lib/util/number/itoa32 - i32.const 1728 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -462,19 +484,19 @@ end i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 6 i32.store local.get $0 i32.load call $~lib/util/number/itoa32 - i32.const 1760 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -482,12 +504,12 @@ end i32.const 8 call $~lib/util/number/itoa32 - i32.const 1792 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 97 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 857ac723a0..1027a06dd8 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -12,25 +12,25 @@ (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 12) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 140) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 204) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 228) "0\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") - (data (i32.const 640) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1680) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1808) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00") - (data (i32.const 1888) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001\00") - (data (i32.const 1920) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\002\002\00") - (data (i32.const 1984) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00") - (data (i32.const 2016) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\003\003\00") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\005\00") - (data (i32.const 2112) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\005\005\00") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\007\00") - (data (i32.const 2176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006\00") - (data (i32.const 2208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008\00") + (data (i32.const 636) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 1692) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 1788) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00") + (data (i32.const 1820) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00") + (data (i32.const 1900) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001\00") + (data (i32.const 1932) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00") + (data (i32.const 1964) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\002\002\00") + (data (i32.const 1996) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\003\00") + (data (i32.const 2028) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\003\003\00") + (data (i32.const 2060) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00") + (data (i32.const 2092) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\005\00") + (data (i32.const 2124) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\005\005\00") + (data (i32.const 2156) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\007\00") + (data (i32.const 2188) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006\00") + (data (i32.const 2220) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008\00") (table $0 1 funcref) (global $resolve-propertyaccess/Namespace.member i32 (i32.const 1)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -44,7 +44,7 @@ (global $resolve-propertyaccess/Enum.VALUE i32 (i32.const 4)) (global $resolve-propertyaccess/Class.staticField (mut i32) (i32.const 5)) (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) - (global $~lib/heap/__heap_base i32 (i32.const 2228)) + (global $~lib/heap/__heap_base i32 (i32.const 2244)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -102,6 +102,19 @@ end unreachable ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -113,6 +126,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -156,60 +179,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -514,7 +544,7 @@ i32.const 1 i32.shl i32.add - i32.const 1696 + i32.const 1712 local.get $1 local.get $6 i64.and @@ -550,7 +580,7 @@ i32.const 1 i32.shl i32.add - i32.const 1696 + i32.const 1712 local.get $1 local.get $6 local.get $4 @@ -633,7 +663,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.set $7 @@ -669,7 +699,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.set $7 @@ -700,7 +730,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.get $4 @@ -729,9 +759,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -943,7 +973,7 @@ if i32.const 4 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -970,12 +1000,16 @@ (local $11 i32) (local $12 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -983,12 +1017,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $0 - i32.const 1792 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -998,12 +1032,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $1 - i32.const 1904 + i32.const 1920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -1013,12 +1047,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $2 - i32.const 1936 + i32.const 1952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -1028,12 +1062,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $3 - i32.const 1968 + i32.const 1984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -1043,12 +1077,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $4 - i32.const 2000 + i32.const 2016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -1058,12 +1092,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $5 - i32.const 2032 + i32.const 2048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -1073,12 +1107,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $6 - i32.const 2064 + i32.const 2080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1088,12 +1122,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $7 - i32.const 2096 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -1103,12 +1137,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $8 - i32.const 2128 + i32.const 2144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -1118,12 +1152,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $9 - i32.const 2160 + i32.const 2176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -1137,12 +1171,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $11 - i32.const 2192 + i32.const 2208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -1153,12 +1187,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $12 - i32.const 2224 + i32.const 2240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 97 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index e786c45d4f..9ba5ccf82e 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1,52 +1,53 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i32_i64_i32_i64_=>_i32 (func (param i32 i64 i32 i64 i32 i64) (result i32))) + (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1312) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1408) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1536) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1664) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1744) "\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 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 local.get $1 - i32.const 10 - i32.div_u - local.set $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load i32.const 1 - i32.shr_u + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + call $~lib/memory/memory.copy + local.get $1 + i32.const 2964 + i32.ge_u + if + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $2 + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or + (local $7 i32) + global.get $~lib/rt/tlsf/ROOT i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 2964 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 local.get $1 - i32.const 8 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $5 + i32.const -4 + i32.and + local.tee $3 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 i32.add - local.set $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $7 + i32.const 1 + i32.and + if + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $4 + i32.ge_u + if + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $5 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock end + local.get $2 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock end end - loop $while-continue|1 + local.get $0 + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + i32.const 2964 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub + local.get $1 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__realloc + local.tee $4 + i32.const 4 + i32.sub + local.tee $0 + local.get $3 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $4 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 2964 + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.const -268435456 + i32.and local.get $2 - local.tee $0 i32.const 1 - i32.sub - local.set $2 - local.get $0 + i32.add + i32.const -268435456 + i32.and + i32.ne if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + i32.const 0 + i32.const 1184 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 1184 + i32.const 112 + i32.const 14 + call $~lib/builtins/abort + unreachable end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 + local.get $0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq + i32.const 2964 + i32.gt_u if local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return + i32.const 20 + i32.sub + call $~lib/rt/pure/decrement end - block $folding-inner0 + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + local.get $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $do-continue|0 local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 + i32.const 10 + i32.rem_u + local.set $3 local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 + i32.const 10 + i32.div_u + local.set $1 local.get $0 - local.get $1 local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 48 + i32.add + i32.store16 local.get $1 - call $~lib/rt/pure/__release - return + br_if $do-continue|0 end + ) + (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 - i64.sub - local.set $9 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $10 - i64.extend_i32_s - i64.shl - local.tee $11 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $10 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $8 - loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u + local.get $0 + call $~lib/rt/pure/__retain + local.tee $4 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + call $~lib/rt/pure/__retain + local.tee $5 + local.tee $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq if - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 2616 + local.get $3 + i32.const 8 i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + local.get $1 + i32.const 8 i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.tee $7 - local.get $9 - i64.sub - i64.gt_u - local.get $7 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 + local.set $1 local.get $2 - i32.store16 - local.get $6 - return + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 end - br $while-continue|0 end end - local.get $10 - i64.extend_i32_s - local.set $1 - loop $while-continue|4 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $1 - i64.shr_u - local.tee $7 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 + local.get $3 + i32.load16_u + local.tee $0 + local.get $1 + i32.load16_u + local.tee $6 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $0 + local.get $6 + i32.sub + return + end + local.get $3 + i32.const 2 i32.add - i32.store16 - local.get $6 - i32.const 1 + local.set $3 + local.get $1 + i32.const 2 i32.add - local.set $6 + local.set $1 + br $while-continue|1 end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 end - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $9 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 2616 - i32.add - i64.load32_u - i64.mul - local.set $3 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add + call $~lib/rt/pure/__retain local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $3 - local.get $1 - i64.sub - local.get $1 - local.get $11 - i64.add - local.tee $7 - local.get $3 - i64.sub - i64.gt_u - local.get $7 - local.get $3 - i64.lt_u - select - i32.const 0 - local.get $5 + local.get $1 + call $~lib/rt/pure/__retain + local.tee $1 + i32.eq + if + local.get $0 + call $~lib/rt/pure/__release local.get $1 - i64.sub - local.get $11 - i64.ge_u - i32.const 0 + call $~lib/rt/pure/__release + i32.const 1 + return + end + block $folding-inner0 local.get $1 - local.get $3 - i64.lt_u - select + i32.eqz + i32.const 1 + local.get $0 select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $11 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 + br_if $folding-inner0 + local.get $0 + call $~lib/string/String#get:length + local.tee $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + br_if $folding-inner0 local.get $0 local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz local.get $0 + call $~lib/rt/pure/__release local.get $1 - i32.lt_u + call $~lib/rt/pure/__release + return + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i64) + local.get $2 + local.get $0 + i64.sub + local.set $8 + local.get $2 + i64.const 1 + i32.const 0 + local.get $3 + i32.sub + local.tee $9 + i64.extend_i32_s + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $11 + i64.and + local.set $6 + local.get $2 + local.get $9 + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.tee $1 + call $~lib/util/number/decimalCount32 + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $1 + i32.const 1000000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 100000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 10000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 1000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100000 + i32.div_u + local.set $3 + local.get $1 + i32.const 100000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10000 + i32.div_u + local.set $3 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 1000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100 + i32.div_u + local.set $3 + local.get $1 + i32.const 100 + i32.rem_u + local.set $1 + br $break|1 + end local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 + i32.const 10 + i32.div_u + local.set $3 local.get $1 - i32.const 8 - i32.add + i32.const 10 + i32.rem_u local.set $1 - br $while-continue|1 + br $break|1 end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 local.get $1 - local.tee $3 - i32.const 1 - i32.add + local.set $3 + i32.const 0 local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 + br $break|1 end + i32.const 0 + local.set $3 end - else + local.get $3 + local.get $5 + i32.or + if + local.get $5 + i32.const 1 + i32.shl + i32.const 1792 + i32.add + local.get $3 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $6 local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + i64.extend_i32_u + local.get $9 + i64.extend_i32_s + i64.shl + i64.add + local.tee $0 + local.get $4 + i64.le_u if + local.get $7 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 2720 + i32.add + i64.load32_u + local.get $9 + i64.extend_i32_s + i64.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + i32.const 1790 + i32.add + local.tee $3 + i32.load16_u + local.set $1 loop $while-continue|3 + i32.const 1 + local.get $8 + local.get $0 + i64.sub local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u + local.get $6 + local.get $8 + i64.lt_u + select + i32.const 0 local.get $4 - i32.add - i32.const 7 - i32.and + local.get $0 + i64.sub + local.get $2 + i64.ge_u + i32.const 0 + local.get $0 + local.get $8 + i64.lt_u + select + select if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 + local.get $1 i32.const 1 i32.sub - local.tee $4 + local.set $1 local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 + local.get $2 + i64.add + local.set $0 br $while-continue|3 end end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $3 + local.get $1 + i32.store16 + local.get $5 + return end + br $while-continue|0 + end + end + local.get $9 + i64.extend_i32_s + local.set $0 + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $6 + i64.const 10 + i64.mul + local.tee $2 + local.get $0 + i64.shr_u + local.tee $6 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $5 + i32.const 1 + i32.shl + i32.const 1792 + i32.add + local.get $6 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $2 + local.get $11 + i64.and + local.tee $6 + local.get $4 + i64.ge_u + br_if $while-continue|4 + end + local.get $7 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $6 + local.set $0 + local.get $8 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 2720 + i32.add + i64.load32_u + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.shl + i32.const 1790 + i32.add + local.tee $3 + i32.load16_u + local.set $1 + loop $while-continue|6 + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $6 + local.get $2 + i64.lt_u + select + i32.const 0 + local.get $4 + local.get $0 + i64.sub + local.get $10 + i64.ge_u + i32.const 0 + local.get $0 + local.get $2 + i64.lt_u + select + select + if + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + local.get $10 + i64.add + local.set $0 + br $while-continue|6 end end + local.get $3 + local.get $1 + i32.store16 + local.get $5 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 + local.get $1 i32.eqz if local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1792 i32.add i32.const 3145774 i32.store - local.get $1 + local.get $0 i32.const 2 i32.add return end + local.get $0 local.get $1 - local.get $2 i32.add local.tee $3 i32.const 21 i32.le_s i32.const 0 - local.get $1 + local.get $0 local.get $3 i32.le_s select if (result i32) loop $for-loop|0 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1792 i32.add i32.const 48 i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 local.get $3 i32.const 1 i32.shl + i32.const 1792 i32.add i32.const 3145774 i32.store @@ -1959,25 +2196,25 @@ i32.gt_s select if (result i32) - local.get $0 local.get $3 i32.const 1 i32.shl + i32.const 1792 i32.add - local.tee $0 + local.tee $3 i32.const 2 i32.add - local.get $0 + local.get $3 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 + local.get $3 i32.const 46 i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add else @@ -1990,133 +2227,126 @@ i32.lt_s select if (result i32) - local.get $0 i32.const 2 local.get $3 i32.sub local.tee $3 i32.const 1 i32.shl + i32.const 1792 i32.add + i32.const 1792 local.get $0 - local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 + i32.const 1792 i32.const 3014704 i32.store i32.const 2 - local.set $2 + local.set $1 loop $for-loop|1 - local.get $2 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.get $2 + local.get $1 i32.const 1 i32.shl + i32.const 1792 i32.add i32.const 48 i32.store16 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $0 local.get $3 i32.add else - local.get $1 + local.get $0 i32.const 1 i32.eq if (result i32) - local.get $0 + i32.const 1794 i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add + i32.store16 + i32.const 1796 local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s - local.tee $2 + local.tee $0 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.get $0 + local.get $1 + local.get $1 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa_dec_simple - local.get $1 + i32.const 1796 i32.const 45 i32.const 43 - local.get $2 - select - i32.store16 offset=4 local.get $0 + select + i32.store16 + local.get $1 i32.const 2 i32.add else + i32.const 1796 + i32.const 1794 local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 2 i32.sub call $~lib/memory/memory.copy - local.get $0 + i32.const 1794 i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 + i32.store16 + local.get $1 + i32.const 1792 i32.add - local.tee $0 + local.tee $1 i32.const 101 i32.store16 offset=2 - local.get $0 + local.get $1 local.tee $2 i32.const 4 i32.add local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $3 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.get $0 + local.get $1 + local.get $1 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa_dec_simple local.get $2 i32.const 45 @@ -2134,112 +2364,111 @@ end end ) - (func $~lib/util/number/dtoa_core (param $0 i32) (result i32) + (func $~lib/util/number/dtoa_core (result i32) + (local $0 i64) (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 f64) - (local $5 i64) + (local $4 i32) + (local $5 f64) i32.const -4 global.set $~lib/util/number/_K - i32.const 2096 + i32.const 2200 i64.load global.set $~lib/util/number/_frc_pow - i32.const 2528 + i32.const 2632 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $2 - i64.const 32 - i64.shr_u - local.set $3 - local.get $2 + local.tee $3 i64.const 4294967295 i64.and - local.tee $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add local.set $1 - local.get $0 - local.get $0 local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 i64.const 31 i64.shl - local.get $2 + local.get $1 i64.const 31 i64.shl - i64.const 0 + local.get $1 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u i64.add - local.tee $5 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $2 i64.const 4294967295 i64.and - i64.const 0 + local.get $3 + i64.const 10 + i64.shl i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $0 - i32.const 1 - i32.add + i64.const 1 + i64.sub + local.set $0 local.get $3 i64.const 31 i64.shl local.get $1 + i64.const 31 + i64.shl + i64.const 0 + i64.add + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $2 i64.const 4294967295 i64.and - local.get $3 - i64.const 10 - i64.shl + i64.const 0 i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $1 + global.get $~lib/util/number/_exp_pow + local.tee $4 + i32.const 1 + i32.add local.get $0 + local.get $4 i32.const 1 i32.add - local.get $1 + local.get $0 local.get $3 i64.const 2147483647 i64.mul - local.get $2 + local.get $1 i64.const 2147483647 i64.mul - local.get $2 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add local.get $3 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -2255,91 +2484,6 @@ global.get $~lib/util/number/_K call $~lib/util/number/prettify ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.const 0 - local.get $2 - i32.lt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $3 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2672 - return - end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) local.get $0 i32.const 1 @@ -2364,15 +2508,13 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) i32.const 1 call $~lib/util/number/decimalCount32 local.tee $0 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 1 local.get $0 @@ -2381,148 +2523,98 @@ call $~lib/rt/pure/__retain local.tee $0 local.get $0 - i32.const 1520 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1600 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/util/number/dtoa - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - call $~lib/util/number/dtoa_core - local.tee $0 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - i32.const 16 - i32.sub - local.set $2 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - select - if (result i32) - local.get $2 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/tlsf/freeBlock - end + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/pure/__new + local.tee $2 + i32.const 1792 local.get $0 - i32.const 2688 + call $~lib/memory/memory.copy + local.get $2 + call $~lib/rt/pure/__retain + local.tee $0 + local.set $2 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1600 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 2720 + i32.const 2816 i32.load call_indirect (type $i32_=>_i32) i32.const 2 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1600 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 2784 + i32.const 2880 i32.load call_indirect (type $i32_=>_i32) i32.const 4 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1600 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 2752 + i32.const 2848 i32.load call_indirect (type $i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1600 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release - i32.const 2720 + i32.const 2816 call $~lib/rt/pure/__release - i32.const 2784 + i32.const 2880 call $~lib/rt/pure/__release - i32.const 2752 + i32.const 2848 call $~lib/rt/pure/__release ) (func $~start call $start:resolve-ternary ) - (func $~lib/rt/pure/__collect - nop - ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -2538,7 +2630,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2553,13 +2645,13 @@ block $switch$1$case$5 block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -2568,7 +2660,7 @@ br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=20 + i32.load offset=24 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end @@ -2579,7 +2671,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2594,7 +2686,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2613,13 +2705,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 2868 + i32.const 2964 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 29f6f6c51d..18d86c61a7 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1,15 +1,14 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -18,55 +17,56 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 304) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 388) "0\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") - (data (i32.const 800) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1840) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 1936) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1968) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s\00") - (data (i32.const 2032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 2064) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 2096) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2144) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2176) "\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_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1248) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 1344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 1376) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1488) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1520) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1552) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\002") - (data (i32.const 1584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+") - (data (i32.const 1616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 1648) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00!") - (data (i32.const 1680) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00~") - (data (i32.const 1712) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00i") - (data (i32.const 1744) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\00i") - (data (i32.const 1776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00+\00+") - (data (i32.const 1808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00-\00-") + (data (i32.const 1036) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1164) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1228) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 1260) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 1356) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001") + (data (i32.const 1388) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") + (data (i32.const 1452) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 1484) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") + (data (i32.const 1516) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 1548) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 1580) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\002") + (data (i32.const 1612) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+") + (data (i32.const 1644) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 1676) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00!") + (data (i32.const 1708) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00~") + (data (i32.const 1740) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00i") + (data (i32.const 1772) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00i") + (data (i32.const 1804) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00+\00+") + (data (i32.const 1836) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $resolve-unary/a (mut i32) (i32.const 1)) (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -78,16 +81,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -96,24 +99,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -124,7 +146,7 @@ local.get $0 i32.eqz if - i32.const 1232 + i32.const 1248 return end local.get $0 @@ -183,7 +205,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $4 local.set $5 loop $do-continue|0 @@ -217,9 +239,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -333,16 +355,16 @@ ) (func $start:resolve-unary (local $0 i32) - i32.const 1840 + i32.const 1868 global.set $~lib/rt/stub/offset i32.const -1 call $~lib/util/number/itoa32 - i32.const 1360 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -350,12 +372,12 @@ end i32.const 1 call $~lib/util/number/itoa32 - i32.const 1440 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -367,12 +389,12 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/util/number/itoa32 - i32.const 1472 + i32.const 1504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -384,42 +406,42 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/util/number/itoa32 - i32.const 1440 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1568 i32.const 1536 - i32.const 1504 global.get $resolve-unary/a select - i32.const 1536 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1504 i32.const 1536 + i32.const 1568 global.get $resolve-unary/a select - i32.const 1504 + i32.const 1536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -429,12 +451,12 @@ i32.const -1 i32.xor call $~lib/util/number/itoa32 - i32.const 1568 + i32.const 1600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -447,12 +469,12 @@ global.set $resolve-unary/b local.get $0 call $~lib/util/number/itoa32 - i32.const 1440 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -465,12 +487,12 @@ global.set $resolve-unary/b local.get $0 call $~lib/util/number/itoa32 - i32.const 1472 + i32.const 1504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -478,51 +500,51 @@ end i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new global.set $resolve-unary/foo - i32.const 1600 - i32.const 1600 + i32.const 1632 + i32.const 1632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1632 - i32.const 1632 + i32.const 1664 + i32.const 1664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1664 - i32.const 1664 + i32.const 1696 + i32.const 1696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1696 - i32.const 1696 + i32.const 1728 + i32.const 1728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -536,7 +558,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -550,7 +572,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -558,51 +580,51 @@ end i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop - i32.const 1728 - i32.const 1728 + i32.const 1760 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1760 + i32.const 1792 + i32.const 1792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1792 - i32.const 1792 + i32.const 1824 + i32.const 1824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 161 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1824 - i32.const 1824 + i32.const 1856 + i32.const 1856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1408 i32.const 166 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 43466944f9..eb71c704c1 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -11,27 +11,27 @@ (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 12) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 140) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 204) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 228) "0\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") - (data (i32.const 640) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1680) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 1776) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 1808) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00") - (data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1888) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1920) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 1952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 1984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\002\00") - (data (i32.const 2016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+\00") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00!\00") - (data (i32.const 2112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00~\00") - (data (i32.const 2144) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00i\00") - (data (i32.const 2176) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\00i\00") - (data (i32.const 2208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00+\00+\00") - (data (i32.const 2240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00") + (data (i32.const 636) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 1692) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 1788) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001\00") + (data (i32.const 1820) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00") + (data (i32.const 1884) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00") + (data (i32.const 1916) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00") + (data (i32.const 1948) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 1980) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 2012) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\002\00") + (data (i32.const 2044) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+\00") + (data (i32.const 2076) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 2108) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00!\00") + (data (i32.const 2140) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00~\00") + (data (i32.const 2172) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00i\00") + (data (i32.const 2204) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00i\00") + (data (i32.const 2236) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00+\00+\00") + (data (i32.const 2268) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -40,7 +40,7 @@ (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 2264)) + (global $~lib/heap/__heap_base i32 (i32.const 2296)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -98,6 +98,19 @@ end unreachable ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -109,6 +122,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -152,60 +175,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -510,7 +540,7 @@ i32.const 1 i32.shl i32.add - i32.const 1696 + i32.const 1712 local.get $1 local.get $6 i64.and @@ -546,7 +576,7 @@ i32.const 1 i32.shl i32.add - i32.const 1696 + i32.const 1712 local.get $1 local.get $6 local.get $4 @@ -629,7 +659,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.set $7 @@ -665,7 +695,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.set $7 @@ -696,7 +726,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $3 local.get $3 local.get $4 @@ -725,9 +755,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -933,9 +963,9 @@ (func $~lib/number/Bool#toString (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) - i32.const 1936 - else i32.const 1968 + else + i32.const 2000 end ) (func $resolve-unary/Foo#constructor (param $0 i32) (result i32) @@ -944,21 +974,21 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) (func $resolve-unary/Foo#plus (param $0 i32) (result i32) - i32.const 2032 + i32.const 2064 ) (func $~lib/string/String#toString (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#minus (param $0 i32) (result i32) - i32.const 2064 + i32.const 2096 ) (func $resolve-unary/Foo#prefix_inc (param $0 i32) (result i32) local.get $0 @@ -973,10 +1003,10 @@ call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#not (param $0 i32) (result i32) - i32.const 2096 + i32.const 2128 ) (func $resolve-unary/Foo#bitwise_not (param $0 i32) (result i32) - i32.const 2128 + i32.const 2160 ) (func $resolve-unary/Foo#postfix_inc (param $0 i32) (result i32) local.get $0 @@ -992,7 +1022,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -1003,7 +1033,7 @@ local.get $0 call $~lib/rt/stub/__retain local.set $0 - i32.const 2160 + i32.const 2192 local.set $1 local.get $0 call $~lib/rt/stub/__release @@ -1014,7 +1044,7 @@ local.get $0 call $~lib/rt/stub/__retain local.set $0 - i32.const 2192 + i32.const 2224 local.set $1 local.get $0 call $~lib/rt/stub/__release @@ -1025,7 +1055,7 @@ local.get $0 call $~lib/rt/stub/__retain local.set $0 - i32.const 2224 + i32.const 2256 local.set $1 local.get $0 call $~lib/rt/stub/__release @@ -1036,7 +1066,7 @@ local.get $0 call $~lib/rt/stub/__retain local.set $0 - i32.const 2256 + i32.const 2288 local.set $1 local.get $0 call $~lib/rt/stub/__release @@ -1077,12 +1107,16 @@ (local $31 i32) (local $32 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -1090,12 +1124,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $0 - i32.const 1792 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -1105,12 +1139,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $1 - i32.const 1872 + i32.const 1904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -1124,12 +1158,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $2 - i32.const 1904 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -1143,12 +1177,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $3 - i32.const 1872 + i32.const 1904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1159,12 +1193,12 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $4 - i32.const 1968 + i32.const 2000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -1176,12 +1210,12 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $5 - i32.const 1936 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1193,12 +1227,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $6 - i32.const 2000 + i32.const 2032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -1213,12 +1247,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $7 - i32.const 1872 + i32.const 1904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -1233,12 +1267,12 @@ i32.const 10 call $~lib/number/I32#toString local.tee $8 - i32.const 1904 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -1252,12 +1286,12 @@ local.tee $9 call $~lib/string/String#toString local.tee $10 - i32.const 2032 + i32.const 2064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 91 i32.const 1 call $~lib/builtins/abort @@ -1268,12 +1302,12 @@ local.tee $11 call $~lib/string/String#toString local.tee $12 - i32.const 2064 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 96 i32.const 1 call $~lib/builtins/abort @@ -1303,7 +1337,7 @@ i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 101 i32.const 1 call $~lib/builtins/abort @@ -1333,7 +1367,7 @@ i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -1344,12 +1378,12 @@ local.tee $17 call $~lib/string/String#toString local.tee $18 - i32.const 2096 + i32.const 2128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -1360,12 +1394,12 @@ local.tee $19 call $~lib/string/String#toString local.tee $20 - i32.const 2128 + i32.const 2160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -1396,7 +1430,7 @@ i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -1427,7 +1461,7 @@ i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -1441,12 +1475,12 @@ local.tee $25 call $~lib/string/String#toString local.tee $26 - i32.const 2160 + i32.const 2192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -1457,12 +1491,12 @@ local.tee $27 call $~lib/string/String#toString local.tee $28 - i32.const 2192 + i32.const 2224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -1473,12 +1507,12 @@ local.tee $29 call $~lib/string/String#toString local.tee $30 - i32.const 2224 + i32.const 2256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -1489,12 +1523,12 @@ local.tee $31 call $~lib/string/String#toString local.tee $32 - i32.const 2256 + i32.const 2288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1824 + i32.const 1840 i32.const 166 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index 99faa43113..39206ece75 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") + (data (i32.const 1036) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $~start diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index a096fb55d4..2d9d0fae52 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00") + (data (i32.const 12) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index d8e26b16c3..0fd8c4fd6b 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -2,30 +2,28 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1120) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1280) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 1332) "\01\00\00\00\01") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1440) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 1472) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1536) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1584) "\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1132) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1196) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1260) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 1376) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1404) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1436) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 1468) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 1500) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00d") + (data (i32.const 1532) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1596) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1648) "\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -33,11 +31,11 @@ (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1652 + i32.const 1716 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -55,8 +53,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 277 + i32.const 1280 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -65,18 +63,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1136 - i32.const 279 + i32.const 1280 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -118,28 +116,28 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 292 + i32.const 1280 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -210,8 +208,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 205 + i32.const 1280 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -224,14 +222,14 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 207 + i32.const 1280 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -247,14 +245,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -269,7 +267,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -297,8 +295,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 228 + i32.const 1280 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -306,14 +304,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -342,33 +340,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1136 - i32.const 243 + i32.const 1280 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1136 - i32.const 244 + i32.const 1280 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -415,8 +413,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 260 + i32.const 1280 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -434,15 +432,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -480,54 +478,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1136 - i32.const 386 - i32.const 5 + i32.const 1280 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 396 + i32.const 1280 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -543,18 +539,17 @@ i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 408 + i32.const 1280 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -564,23 +559,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -591,116 +587,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1728 + i32.const 0 + i32.store + i32.const 3296 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1728 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1664 - local.set $1 - i32.const 1664 - i32.const 0 - i32.store - i32.const 3232 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1664 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1664 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1728 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1664 - i32.const 3248 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1664 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1728 + i32.const 3300 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1728 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1184 - i32.const 1136 + i32.const 1152 + i32.const 1280 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -727,7 +715,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -758,8 +746,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 338 + i32.const 1280 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -810,8 +798,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 351 + i32.const 1280 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -839,12 +827,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1136 - i32.const 365 + i32.const 1280 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -855,7 +845,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -867,12 +857,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -887,7 +877,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -907,150 +897,160 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1136 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if - i32.const 0 - i32.const 1136 - i32.const 520 - i32.const 14 + i32.const 0 + i32.const 1280 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1152 + i32.const 1216 + i32.const 275 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1216,11 +1216,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1652 + i32.const 1716 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1235,7 +1235,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1252,7 +1252,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1264,7 +1264,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -1283,20 +1283,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 1136 - i32.const 585 + i32.const 1280 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -1487,105 +1478,175 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 1716 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1152 + i32.const 1216 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 i32.const 16 - i32.add + i32.sub + local.set $0 local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 16 i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1716 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 local.get $0 - local.get $1 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end local.get $3 + local.get $0 + local.get $5 call $~lib/rt/tlsf/prepareBlock - local.get $1 - return end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 + i32.const 4 i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $1 + i32.store offset=16 + local.get $2 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1652 - i32.ge_u - if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 ) (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (local $2 i32) @@ -1600,38 +1661,33 @@ i32.gt_u if local.get $1 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 14 i32.const 48 call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 i32.load - local.set $3 - local.get $2 - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - call $~lib/rt/tlsf/checkUsedBlock + local.tee $4 local.get $1 i32.const 2 i32.shl - local.tee $4 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add + local.tee $3 + call $~lib/rt/pure/__renew local.tee $1 i32.add - local.get $4 + local.get $3 local.get $2 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $3 + local.get $4 i32.ne if local.get $0 @@ -1642,7 +1698,7 @@ i32.store offset=4 end local.get $0 - local.get $4 + local.get $3 i32.store offset=8 end ) @@ -1671,9 +1727,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -1687,7 +1743,7 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $2 - i32.const 1424 + i32.const 1488 local.get $2 select local.set $3 @@ -1699,13 +1755,13 @@ i32.eqz if local.get $0 - i32.const 1424 + i32.const 1488 i32.ne if local.get $0 call $~lib/rt/pure/__release end - i32.const 1424 + i32.const 1488 local.set $0 end local.get $3 @@ -1724,12 +1780,12 @@ if local.get $0 call $~lib/rt/pure/__release - i32.const 1344 + i32.const 1392 br $__inlined_func$~lib/string/String#concat end local.get $1 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 local.get $3 @@ -1759,7 +1815,7 @@ (local $5 i32) i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -1775,7 +1831,7 @@ i32.store offset=12 i32.const 12 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 12 call $~lib/memory/memory.fill @@ -1815,8 +1871,8 @@ i32.const 1 i32.lt_s if - i32.const 1296 - i32.const 1088 + i32.const 1344 + i32.const 1104 i32.const 300 i32.const 21 call $~lib/builtins/abort @@ -1840,7 +1896,7 @@ call $~lib/rt/pure/__release i32.const 16 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -1856,7 +1912,7 @@ i32.store offset=12 i32.const 0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 call $~lib/memory/memory.fill @@ -1894,7 +1950,7 @@ if i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -1910,7 +1966,7 @@ i32.store offset=12 i32.const 0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 call $~lib/memory/memory.fill @@ -1961,13 +2017,13 @@ i32.const 2 i32.shl i32.add - i32.const 1344 + i32.const 1392 call $~lib/rt/pure/__retain i32.store local.get $2 local.get $5 i32.store offset=12 - i32.const 1344 + i32.const 1392 call $~lib/rt/pure/__release local.get $0 i32.const 1 @@ -1986,13 +2042,13 @@ end end call $~lib/rt/pure/__release - i32.const 1360 - i32.const 1392 + i32.const 1424 + i32.const 1456 call $~lib/string/String.__concat local.tee $3 call $~lib/rt/pure/__retain local.tee $2 - i32.const 1456 + i32.const 1520 call $~lib/string/String.__concat local.get $3 call $~lib/rt/pure/__release @@ -2001,14 +2057,14 @@ call $~lib/rt/pure/__release i32.const 4 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 0 i32.store i32.const 4 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -2140,7 +2196,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2151,7 +2207,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -2173,21 +2229,21 @@ i32.le_u if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 136 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $3 - i32.const 1584 + i32.const 1648 i32.load i32.gt_u if - i32.const 1488 i32.const 1552 + i32.const 1616 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -2196,7 +2252,7 @@ local.get $3 i32.const 3 i32.shl - i32.const 1588 + i32.const 1652 i32.add i32.load i32.const 32 @@ -2243,7 +2299,6 @@ i32.gt_u select local.tee $4 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $1 @@ -2251,10 +2306,20 @@ call $~lib/memory/memory.copy local.get $1 if - call $~lib/rt/tlsf/maybeInitialize local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + i32.const 1716 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + end end local.get $2 global.set $~lib/rt/pure/ROOTS @@ -2298,7 +2363,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 2 call $~lib/rt/__visit_members @@ -2312,7 +2377,7 @@ i32.and i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 4 call $~lib/rt/__visit_members @@ -2344,7 +2409,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 3 call $~lib/rt/__visit_members @@ -2373,7 +2438,7 @@ i32.and i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 5 call $~lib/rt/__visit_members @@ -2503,13 +2568,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1652 + i32.const 1716 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub local.set $0 block $break|0 @@ -2536,7 +2601,7 @@ i32.le_u if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 79 i32.const 20 call $~lib/builtins/abort @@ -2569,7 +2634,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 90 i32.const 9 call $~lib/builtins/abort @@ -2594,7 +2659,7 @@ br $break|0 end i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 101 i32.const 27 call $~lib/builtins/abort diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index f3c525a152..52722e2ec0 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -1,40 +1,37 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 320) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") - (data (i32.const 464) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 528) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 576) "\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A\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 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 108) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 172) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 236) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 348) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 380) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 412) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 444) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 476) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00d\00") + (data (i32.const 508) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 572) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 624) "\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 576)) - (global $~lib/heap/__heap_base i32 (i32.const 644)) + (global $~lib/rt/__rtti_base i32 (i32.const 624)) + (global $~lib/heap/__heap_base i32 (i32.const 692)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) @@ -43,7 +40,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -70,8 +67,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 277 + i32.const 256 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -85,11 +82,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -97,8 +94,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 279 + i32.const 256 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -151,29 +148,29 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 292 + i32.const 256 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -283,8 +280,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 205 + i32.const 256 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -300,8 +297,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 207 + i32.const 256 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -309,7 +306,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -331,7 +328,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -341,7 +338,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -358,7 +355,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -395,8 +392,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 228 + i32.const 256 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -406,7 +403,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -416,7 +413,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -448,11 +445,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -460,8 +457,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 243 + i32.const 256 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -469,7 +466,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -478,8 +475,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 244 + i32.const 256 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -537,8 +534,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 260 + i32.const 256 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -562,15 +559,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -639,31 +636,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 128 - i32.const 386 - i32.const 5 + i32.const 256 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -677,14 +676,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 128 - i32.const 396 + i32.const 256 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -716,8 +715,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 408 + i32.const 256 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -728,10 +727,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -739,9 +738,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -757,15 +756,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -784,7 +783,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -797,127 +796,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -925,49 +943,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 176 i32.const 128 + i32.const 256 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -990,7 +983,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1044,8 +1037,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 338 + i32.const 256 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1109,8 +1102,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 351 + i32.const 256 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1166,7 +1159,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1184,11 +1177,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1252,14 +1245,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 128 - i32.const 365 + i32.const 256 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1273,8 +1268,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1286,14 +1281,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1312,7 +1307,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1324,7 +1319,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1340,137 +1335,118 @@ i32.and i32.store end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 128 - i32.const 520 + i32.const 256 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 192 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1708,7 +1684,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1731,7 +1707,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1744,7 +1720,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1761,7 +1737,7 @@ if i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1778,7 +1754,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -1796,7 +1772,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -1833,7 +1809,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -1856,22 +1832,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 128 - i32.const 585 + i32.const 256 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3132,12 +3097,9 @@ end ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3147,6 +3109,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -3154,7 +3147,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -3175,9 +3167,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -3186,7 +3175,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -3204,7 +3193,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -3227,9 +3216,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -3241,41 +3227,86 @@ end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 192 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -3294,7 +3325,7 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u @@ -3315,7 +3346,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $6 local.get $6 local.get $3 @@ -3380,7 +3411,7 @@ i32.const 1 i32.lt_s if - i32.const 288 + i32.const 320 i32.const 80 i32.const 300 i32.const 21 @@ -3414,7 +3445,7 @@ if i32.const 16 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3431,7 +3462,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -3449,7 +3480,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -3494,7 +3525,7 @@ if i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3511,7 +3542,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -3529,7 +3560,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -3603,9 +3634,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -3623,7 +3654,7 @@ i32.const 0 i32.eq if - i32.const 416 + i32.const 464 local.tee $2 local.get $1 local.tee $3 @@ -3656,7 +3687,7 @@ i32.const 0 i32.eq if - i32.const 336 + i32.const 368 call $~lib/rt/pure/__retain local.set $2 local.get $1 @@ -3666,7 +3697,7 @@ end local.get $6 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $7 local.get $7 @@ -3694,7 +3725,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - i32.const 416 + i32.const 464 local.get $0 i32.const 0 i32.ne @@ -3714,7 +3745,7 @@ if i32.const 4 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3729,7 +3760,7 @@ if i32.const 4 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3789,7 +3820,7 @@ local.get $5 if local.get $3 - i32.const 336 + i32.const 368 call $~lib/array/Array<~lib/string/String>#push drop local.get $4 @@ -3810,16 +3841,16 @@ end local.get $0 call $~lib/rt/pure/__release - i32.const 352 + i32.const 400 local.set $0 local.get $0 - i32.const 384 + i32.const 432 call $~lib/string/String.__concat local.tee $1 call $~lib/rt/pure/__retain local.set $2 local.get $2 - i32.const 448 + i32.const 496 call $~lib/string/String.__concat local.tee $3 drop @@ -3964,8 +3995,8 @@ i32.load i32.gt_u if - i32.const 480 - i32.const 544 + i32.const 528 + i32.const 592 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -3981,7 +4012,18 @@ i32.load ) (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock @@ -4013,7 +4055,6 @@ select local.set $4 local.get $4 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 local.get $5 @@ -4078,7 +4119,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -4089,7 +4130,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -4120,7 +4161,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -4129,7 +4170,7 @@ i32.const 0 drop local.get $0 - i32.load offset=8 + i32.load offset=12 call $~lib/rt/__typeinfo i32.const 32 i32.and @@ -4188,7 +4229,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 2 call $~lib/rt/__visit_members @@ -4206,7 +4247,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 4 call $~lib/rt/__visit_members @@ -4241,7 +4282,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 3 call $~lib/rt/__visit_members @@ -4277,7 +4318,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 5 call $~lib/rt/__visit_members @@ -4439,7 +4480,7 @@ i32.const 0 drop local.get $0 - i32.const 16 + i32.const 20 i32.sub local.set $2 block $break|0 @@ -4488,7 +4529,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 79 i32.const 20 call $~lib/builtins/abort @@ -4527,7 +4568,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 90 i32.const 9 call $~lib/builtins/abort @@ -4559,7 +4600,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 101 i32.const 27 call $~lib/builtins/abort diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index d5e575aef0..3672992f90 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -2,13 +2,13 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") - (data (i32.const 1056) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s") + (data (i32.const 1036) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (data (i32.const 1068) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s") (table $0 1 funcref) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $retain-release/REF (mut i32) (i32.const 0)) @@ -53,46 +53,49 @@ (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect)) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -100,16 +103,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -118,24 +121,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $retain-release/returnRef (result i32) global.get $retain-release/REF @@ -152,7 +174,7 @@ (func $retain-release/newRef i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new drop ) (func $retain-release/assignField @@ -199,8 +221,8 @@ (func $retain-release/scopeThrow (param $0 i32) local.get $0 if - i32.const 1040 - i32.const 1072 + i32.const 1056 + i32.const 1088 i32.const 367 i32.const 5 call $~lib/builtins/abort @@ -234,15 +256,15 @@ i32.const 1 global.set $~started end - i32.const 1120 + i32.const 1132 global.set $~lib/rt/stub/offset i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new global.set $retain-release/REF i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 0 i32.store diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index aa25a055a3..36de4ac47f 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -7,8 +7,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") - (data (i32.const 48) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00") + (data (i32.const 12) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") + (data (i32.const 44) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -57,6 +57,19 @@ (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirectDrop)) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -68,6 +81,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -111,60 +134,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -175,7 +205,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -187,7 +217,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -198,12 +228,16 @@ ) (func $start:retain-release global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index 71cd498d5a..506e90edde 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -1,26 +1,25 @@ (module (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01") - (data (i32.const 1216) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\02") - (data (i32.const 1248) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1280) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04") - (data (i32.const 1312) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\05") - (data (i32.const 1344) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\06") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01") + (data (i32.const 1260) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02") + (data (i32.const 1292) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03") + (data (i32.const 1324) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04") + (data (i32.const 1356) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\05") + (data (i32.const 1388) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06") (table $0 7 funcref) (elem (i32.const 1) $retain-return/returnNew $start:retain-return~anonymous|1 $retain-return/returnGlobal $retain-return/returnNew $retain-return/returnNew $retain-return/returnGlobal) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $retain-return/ref (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) @@ -38,8 +37,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -48,18 +47,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -101,28 +100,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -193,8 +192,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -207,14 +206,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -230,14 +229,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -252,7 +251,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -280,8 +279,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -289,14 +288,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -325,33 +324,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -398,8 +397,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -417,15 +416,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -463,54 +462,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -526,18 +523,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -547,23 +543,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -574,93 +571,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1424 + i32.const 0 + i32.store + i32.const 2992 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1424 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1376 - local.set $1 - i32.const 1376 - i32.const 0 - i32.store - i32.const 2944 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1376 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1376 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1424 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1376 - i32.const 2960 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1376 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1424 + i32.const 2996 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1424 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -697,8 +685,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -723,110 +711,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -835,17 +795,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -853,7 +813,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -868,7 +828,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -893,11 +853,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1368 + i32.const 1416 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -912,7 +872,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -929,7 +889,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -939,8 +899,33 @@ local.get $0 ) (func $retain-return/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add call $~lib/rt/pure/__retain @@ -950,11 +935,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1368 + i32.const 1416 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -979,53 +964,53 @@ call $~lib/rt/pure/__release call $retain-return/Ref#constructor global.set $retain-return/ref - i32.const 1200 + i32.const 1248 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1200 + i32.const 1248 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release global.get $retain-return/ref - i32.const 1232 + i32.const 1280 i32.load call_indirect (type $i32_=>_i32) call $~lib/rt/pure/__release global.get $retain-return/ref - i32.const 1232 + i32.const 1280 i32.load call_indirect (type $i32_=>_i32) call $~lib/rt/pure/__release - i32.const 1264 + i32.const 1312 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1264 + i32.const 1312 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1296 + i32.const 1344 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1296 + i32.const 1344 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1328 + i32.const 1376 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1328 + i32.const 1376 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1360 + i32.const 1408 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release - i32.const 1360 + i32.const 1408 i32.load call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release @@ -1063,7 +1048,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1079,13 +1064,13 @@ block $switch$1$case$6 block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$case$6 $switch$1$case$7 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -1094,12 +1079,12 @@ br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=20 + i32.load offset=24 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=20 + i32.load offset=24 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end @@ -1110,7 +1095,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1131,7 +1116,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1150,13 +1135,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1368 + i32.const 1416 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 6cc0324898..5cdf103dd7 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -5,36 +5,34 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 208) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 240) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 272) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 304) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 336) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 236) "\08\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 268) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 300) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 332) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 364) "\08\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") (table $0 7 funcref) (elem (i32.const 1) $start:retain-return~anonymous|0 $start:retain-return~anonymous|1 $start:retain-return~anonymous|2 $start:retain-return~anonymous|3 $start:retain-return~anonymous|4 $start:retain-return~anonymous|5) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $retain-return/ref (mut i32) (i32.const 0)) - (global $retain-return/returnNewFnExpr (mut i32) (i32.const 192)) + (global $retain-return/returnNewFnExpr (mut i32) (i32.const 224)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $retain-return/returnLocalFnExpr (mut i32) (i32.const 224)) - (global $retain-return/returnGlobalFnExpr (mut i32) (i32.const 256)) - (global $retain-return/returnNewFnBlock (mut i32) (i32.const 288)) - (global $retain-return/returnLocalFnBlock (mut i32) (i32.const 320)) - (global $retain-return/returnGlobalFnBlock (mut i32) (i32.const 352)) + (global $retain-return/returnLocalFnExpr (mut i32) (i32.const 256)) + (global $retain-return/returnGlobalFnExpr (mut i32) (i32.const 288)) + (global $retain-return/returnNewFnBlock (mut i32) (i32.const 320)) + (global $retain-return/returnLocalFnBlock (mut i32) (i32.const 352)) + (global $retain-return/returnGlobalFnBlock (mut i32) (i32.const 384)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 360)) + (global $~lib/heap/__heap_base i32 (i32.const 392)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -59,8 +57,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -74,11 +72,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -86,8 +84,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -140,29 +138,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -272,8 +270,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -289,8 +287,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -298,7 +296,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -320,7 +318,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -330,7 +328,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -347,7 +345,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -384,8 +382,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -395,7 +393,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -405,7 +403,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -437,11 +435,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -449,8 +447,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -458,7 +456,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -467,8 +465,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -526,8 +524,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,15 +549,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -628,31 +626,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -666,14 +666,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -705,8 +705,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -717,10 +717,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -728,9 +728,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -746,15 +746,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -773,7 +773,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -786,127 +786,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -914,49 +933,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -979,7 +973,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1033,8 +1027,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1098,8 +1092,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1155,7 +1149,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1173,11 +1167,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1241,14 +1235,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1262,8 +1258,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1275,14 +1271,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1301,7 +1297,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1313,7 +1309,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1330,136 +1326,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1484,7 +1461,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1507,7 +1484,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1520,7 +1497,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1532,7 +1509,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1548,7 +1525,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1710,18 +1687,10 @@ end call $start:retain-return ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -1760,7 +1729,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1771,7 +1740,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1786,7 +1755,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1803,7 +1772,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1841,14 +1810,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 661c45fba2..0ae368aced 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -7,24 +7,21 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1344) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") - (data (i32.const 1392) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1456) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e") - (data (i32.const 1488) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1536) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00$\01\00\00\00\00\00\00\"\t") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1148) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1276) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1340) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") + (data (i32.const 1436) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1500) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e") + (data (i32.const 1548) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1600) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00$\01\00\00\00\00\00\00\"\t") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $rt/finalize/expected (mut i32) (i32.const 0)) (global $rt/finalize/expectedWriteIndex (mut i32) (i32.const 0)) (global $rt/finalize/expectedReadIndex (mut i32) (i32.const 0)) @@ -36,11 +33,11 @@ (export "memory" (memory $0)) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1596 + i32.const 1660 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -58,8 +55,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 277 + i32.const 1296 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -68,18 +65,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 279 + i32.const 1296 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -121,28 +118,28 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 292 + i32.const 1296 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -213,8 +210,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 205 + i32.const 1296 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -227,14 +224,14 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 207 + i32.const 1296 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -250,14 +247,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -272,7 +269,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -300,8 +297,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 228 + i32.const 1296 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -309,14 +306,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -345,33 +342,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 243 + i32.const 1296 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1152 - i32.const 244 + i32.const 1296 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -418,8 +415,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 260 + i32.const 1296 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -437,15 +434,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -483,54 +480,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 + i32.const 1296 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 396 + i32.const 1296 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -546,18 +541,17 @@ i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 408 + i32.const 1296 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -567,23 +561,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -594,93 +589,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1664 + i32.const 0 + i32.store + i32.const 3232 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1664 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1600 - local.set $1 - i32.const 1600 - i32.const 0 - i32.store - i32.const 3168 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1600 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1600 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1664 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1600 - i32.const 3184 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1600 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1664 + i32.const 3236 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1664 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -706,7 +692,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -737,8 +723,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 338 + i32.const 1296 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -789,8 +775,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 351 + i32.const 1296 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -818,12 +804,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1152 - i32.const 365 + i32.const 1296 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -834,7 +822,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -846,12 +834,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -866,7 +854,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -886,170 +874,181 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1200 - i32.const 1152 + i32.const 1168 + i32.const 1296 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 12 local.get $1 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u select - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 520 + i32.const 1296 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1215,11 +1214,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1596 + i32.const 1660 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1234,7 +1233,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1251,7 +1250,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1262,9 +1261,9 @@ ) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.shr_u ) @@ -1277,7 +1276,7 @@ i32.ge_s if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -1295,8 +1294,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 1408 - i32.const 1088 + i32.const 1456 + i32.const 1104 i32.const 110 i32.const 41 call $~lib/builtins/abort @@ -1317,7 +1316,7 @@ (local $3 i32) i32.const 40 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 i32.const 40 call $~lib/memory/memory.fill @@ -1326,7 +1325,7 @@ global.set $rt/finalize/expected i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -1342,7 +1341,7 @@ i32.store offset=12 i32.const 0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 i32.const 0 call $~lib/memory/memory.fill @@ -1384,7 +1383,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1395,7 +1394,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -1403,14 +1402,14 @@ end i32.const 4 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 0 i32.store i32.const 4 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -1462,7 +1461,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -1473,7 +1472,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -1494,7 +1493,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1505,7 +1504,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -1536,10 +1535,10 @@ (func $~lib/rt/pure/finalize (param $0 i32) (local $1 i32) (local $2 i32) - i32.const 1472 + i32.const 1520 i32.const 1 local.get $0 - i32.const 16 + i32.const 20 i32.add local.tee $1 f64.convert_i32_u @@ -1563,7 +1562,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1408 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -1757,7 +1756,7 @@ global.get $~lib/rt/pure/ROOTS local.tee $0 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl local.tee $1 @@ -1767,60 +1766,60 @@ i32.gt_u select local.tee $4 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $0 if - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $0 - select - if (result i32) - local.get $2 - i32.load - i32.const 1 - i32.and + i32.const 1660 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.load offset=4 - i32.const -268435456 + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $3 + local.get $0 + i32.const 15 i32.and i32.eqz - else i32.const 0 + local.get $0 + select + if (result i32) + local.get $3 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/tlsf/freeBlock end - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/tlsf/freeBlock end local.get $1 global.set $~lib/rt/pure/ROOTS local.get $1 - local.get $3 + local.get $2 i32.add global.set $~lib/rt/pure/CUR local.get $1 @@ -1844,7 +1843,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1855,7 +1854,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1876,21 +1875,21 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 136 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $3 - i32.const 1536 + i32.const 1600 i32.load i32.gt_u if - i32.const 1408 - i32.const 1504 + i32.const 1456 + i32.const 1568 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -1899,7 +1898,7 @@ local.get $3 i32.const 3 i32.shl - i32.const 1540 + i32.const 1604 i32.add i32.load i32.const 32 @@ -1966,7 +1965,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 2 call $~lib/rt/__visit_members @@ -1980,7 +1979,7 @@ i32.and i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 4 call $~lib/rt/__visit_members @@ -2012,7 +2011,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 3 call $~lib/rt/__visit_members @@ -2041,7 +2040,7 @@ i32.and i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 5 call $~lib/rt/__visit_members @@ -2169,13 +2168,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1596 + i32.const 1660 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub local.set $0 block $break|0 @@ -2202,7 +2201,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 79 i32.const 20 call $~lib/builtins/abort @@ -2235,7 +2234,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 90 i32.const 9 call $~lib/builtins/abort @@ -2260,7 +2259,7 @@ br $break|0 end i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 101 i32.const 27 call $~lib/builtins/abort diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 1153cec7d9..64e46aebd3 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -1,33 +1,30 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") - (data (i32.const 384) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 448) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e\00") - (data (i32.const 480) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 528) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00$\01\00\00\00\00\00\00\"\t\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 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 124) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 252) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 316) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") + (data (i32.const 412) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 476) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e\00") + (data (i32.const 524) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 576) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00$\01\00\00\00\00\00\00\"\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $rt/finalize/expected (mut i32) (i32.const 0)) (global $rt/finalize/expectedWriteIndex (mut i32) (i32.const 0)) @@ -36,8 +33,8 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 528)) - (global $~lib/heap/__heap_base i32 (i32.const 588)) + (global $~lib/rt/__rtti_base i32 (i32.const 576)) + (global $~lib/heap/__heap_base i32 (i32.const 636)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/pure/__release (param $0 i32) @@ -46,7 +43,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -73,8 +70,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 277 + i32.const 272 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -88,11 +85,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -100,8 +97,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 279 + i32.const 272 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -154,29 +151,29 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 292 + i32.const 272 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -286,8 +283,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 205 + i32.const 272 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -303,8 +300,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 207 + i32.const 272 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -312,7 +309,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -334,7 +331,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -344,7 +341,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -361,7 +358,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -398,8 +395,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 228 + i32.const 272 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -409,7 +406,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -419,7 +416,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -451,11 +448,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -463,8 +460,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 243 + i32.const 272 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -472,7 +469,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -481,8 +478,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 244 + i32.const 272 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -540,8 +537,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 260 + i32.const 272 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -565,15 +562,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -642,31 +639,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 + i32.const 272 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -680,14 +679,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 396 + i32.const 272 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -719,8 +718,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 408 + i32.const 272 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -731,10 +730,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -742,9 +741,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -760,15 +759,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -787,7 +786,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -800,127 +799,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -928,49 +946,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 192 i32.const 144 + i32.const 272 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -993,7 +986,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1047,8 +1040,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 338 + i32.const 272 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1112,8 +1105,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 351 + i32.const 272 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1169,7 +1162,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1187,11 +1180,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1255,14 +1248,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 144 - i32.const 365 + i32.const 272 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1276,8 +1271,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1289,14 +1284,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1315,7 +1310,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1327,7 +1322,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1344,136 +1339,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 272 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 520 + i32.const 272 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 144 + i32.const 208 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1711,7 +1687,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1734,7 +1710,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1747,7 +1723,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1758,7 +1734,7 @@ (local $3 i32) (local $4 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -1776,7 +1752,7 @@ local.set $2 local.get $2 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -1800,7 +1776,7 @@ if i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1817,13 +1793,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if i32.const 32 - i32.const 304 + i32.const 336 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -1835,7 +1811,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -1871,9 +1847,9 @@ ) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.shr_u ) @@ -1894,7 +1870,7 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 400 + i32.const 432 i32.const 80 i32.const 110 i32.const 41 @@ -1915,7 +1891,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -1951,7 +1927,7 @@ if i32.const 4 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1966,7 +1942,7 @@ if i32.const 4 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2044,7 +2020,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -2056,7 +2032,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -2070,7 +2046,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -2082,7 +2058,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -2110,7 +2086,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -2122,7 +2098,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -2149,7 +2125,7 @@ ) (func $rt/finalize/__finalize (param $0 i32) (local $1 i32) - i32.const 464 + i32.const 496 i32.const 1 local.get $0 f64.convert_i32_u @@ -2171,7 +2147,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -2179,12 +2155,9 @@ end ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -2198,7 +2171,7 @@ i32.const 1 drop local.get $0 - i32.const 16 + i32.const 20 i32.add call $rt/finalize/__finalize global.get $~lib/rt/tlsf/ROOT @@ -2214,8 +2187,8 @@ i32.load i32.gt_u if - i32.const 400 - i32.const 496 + i32.const 432 + i32.const 544 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -3486,7 +3459,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -3509,22 +3482,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 144 - i32.const 585 + i32.const 272 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3532,7 +3494,18 @@ local.get $1 ) (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock @@ -3564,7 +3537,6 @@ select local.set $4 local.get $4 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 local.get $5 @@ -3629,7 +3601,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3640,7 +3612,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -3671,7 +3643,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3680,7 +3652,7 @@ i32.const 0 drop local.get $0 - i32.load offset=8 + i32.load offset=12 call $~lib/rt/__typeinfo i32.const 32 i32.and @@ -3739,7 +3711,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 2 call $~lib/rt/__visit_members @@ -3757,7 +3729,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 4 call $~lib/rt/__visit_members @@ -3792,7 +3764,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 3 call $~lib/rt/__visit_members @@ -3828,7 +3800,7 @@ i32.or i32.store offset=4 local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 5 call $~lib/rt/__visit_members @@ -3990,7 +3962,7 @@ i32.const 0 drop local.get $0 - i32.const 16 + i32.const 20 i32.sub local.set $2 block $break|0 @@ -4039,7 +4011,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 79 i32.const 20 call $~lib/builtins/abort @@ -4078,7 +4050,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 90 i32.const 9 call $~lib/builtins/abort @@ -4110,7 +4082,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 101 i32.const 27 call $~lib/builtins/abort diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat index 07ad9d95be..911be244e8 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -4,24 +4,24 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1088) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1136) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") - (data (i32.const 1184) "D\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00a\08\00\00\02\00\00\00a\00\00\00\02\00\00\00a\00\00\00\02\00\00\00\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 ") - (data (i32.const 1644) "\02A\00\00\00\00\00\00 ") - (data (i32.const 1668) "\08A\00\00\00\00\00\00 ") - (data (i32.const 1692) "\10\t\82") - (data (i32.const 1708) "\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1036) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1100) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1148) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") + (data (i32.const 1200) "D\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00a\08\00\00\02\00\00\00a\00\00\00\02\00\00\00a\00\00\00\02\00\00\00\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 ") + (data (i32.const 1660) "\02A\00\00\00\00\00\00 ") + (data (i32.const 1684) "\08A\00\00\00\00\00\00 ") + (data (i32.const 1708) "\10\t\82") + (data (i32.const 1724) "\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) local.get $0 - i32.const 1184 + i32.const 1200 i32.load i32.gt_u if - i32.const 1040 - i32.const 1104 + i32.const 1056 + i32.const 1120 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -30,7 +30,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 1188 + i32.const 1204 i32.add i32.load ) @@ -322,7 +322,7 @@ return end i32.const 0 - i32.const 1152 + i32.const 1168 i32.const 6 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat index a908854c26..1e0bc1e099 100644 --- a/tests/compiler/rt/flags.untouched.wat +++ b/tests/compiler/rt/flags.untouched.wat @@ -5,9 +5,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 80) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 128) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00") + (data (i32.const 12) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 76) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 124) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00") (data (i32.const 176) "D\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00a\08\00\00\02\00\00\00a\00\00\00\02\00\00\00a\00\00\00\02\00\00\00\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08A\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\t\82\00\00\00\00\00\00\00\00\00\00\00\00\00\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $rt/flags/VALUE_ALIGN_REF i32 (i32.const 256)) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index d433725220..ec5f58a1c9 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -5,8 +5,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") - (data (i32.const 1072) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04") + (data (i32.const 1036) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data (i32.const 1088) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $rt/instanceof/animal (mut i32) (i32.const 0)) (global $rt/instanceof/cat (mut i32) (i32.const 0)) @@ -17,22 +17,30 @@ (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -66,22 +74,26 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $rt/instanceof/Animal#constructor (param $0 i32) (result i32) local.get $0 @@ -89,7 +101,7 @@ local.get $0 else i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end ) (func $rt/instanceof/Cat#constructor (param $0 i32) (result i32) @@ -98,17 +110,17 @@ local.get $0 else i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end call $rt/instanceof/Animal#constructor ) (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 local.tee $0 - i32.const 1072 + i32.const 1088 i32.load i32.le_u if @@ -123,7 +135,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 1076 + i32.const 1092 i32.add i32.load offset=4 local.tee $0 @@ -134,7 +146,7 @@ ) (func $start:rt/instanceof (local $0 i32) - i32.const 1136 + i32.const 1148 global.set $~lib/rt/stub/offset i32.const 0 call $rt/instanceof/Animal#constructor @@ -143,7 +155,7 @@ call $rt/instanceof/Cat#constructor global.set $rt/instanceof/cat i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $rt/instanceof/Cat#constructor global.set $rt/instanceof/blackcat global.get $rt/instanceof/animal @@ -157,7 +169,7 @@ end if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -174,7 +186,7 @@ end if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -192,7 +204,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -209,7 +221,7 @@ end if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -227,7 +239,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -245,7 +257,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -258,14 +270,14 @@ call $rt/instanceof/Cat#constructor global.set $rt/instanceof/nullableCat i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $rt/instanceof/Cat#constructor global.set $rt/instanceof/nullableBlackcat global.get $rt/instanceof/nullableAnimal i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -282,7 +294,7 @@ end if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -299,7 +311,7 @@ end if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -309,7 +321,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -327,7 +339,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -344,7 +356,7 @@ end if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -354,7 +366,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -372,7 +384,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -390,7 +402,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 35 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index a1cb7ea6d1..4f1c463246 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -6,7 +6,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 12) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") (data (i32.const 64) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -25,6 +25,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 116)) (export "_start" (func $~start)) (export "memory" (memory $0)) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -36,6 +49,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -79,60 +102,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -143,7 +173,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -155,7 +185,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -170,7 +200,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -184,9 +214,9 @@ (local $3 i32) (local $4 i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 local.set $2 global.get $~lib/rt/__rtti_base local.set $3 @@ -222,12 +252,16 @@ (func $start:rt/instanceof (local $0 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index f8dd972f4e..b08cc1814a 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -1,30 +1,43 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (data (i32.const 1072) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s") - (data (i32.const 1136) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data (i32.const 1100) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s") + (data (i32.const 1168) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1136)) + (global $~lib/rt/__rtti_base i32 (i32.const 1168)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) (export "__release" (func $~lib/rt/stub/__release)) (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -33,6 +46,12 @@ local.tee $2 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $1 i32.gt_u if @@ -67,63 +86,28 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 15 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - i32.const -16 - i32.and local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $4 + local.get $0 + call $~lib/rt/stub/computeSize + local.tee $0 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $3 - i32.const 16 - i32.sub - local.tee $2 - local.get $4 + local.get $0 i32.store local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $3 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -313,50 +297,34 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 41 + i32.const 1056 + i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/stub/offset local.get $0 - i32.const 16 + local.get $0 + i32.const 4 i32.sub - local.tee $3 + local.tee $4 i32.load - local.set $4 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $4 + local.tee $3 i32.add i32.eq local.set $5 local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and + call $~lib/rt/stub/computeSize local.set $2 local.get $1 - local.get $4 + local.get $3 i32.gt_u if local.get $5 if local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable @@ -365,32 +333,26 @@ local.get $2 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $3 + local.get $4 local.get $2 i32.store else local.get $2 - local.get $4 + local.get $3 i32.const 1 i32.shl - local.tee $4 + local.tee $1 local.get $2 - local.get $4 + local.get $1 i32.gt_u select - local.get $3 - i32.load offset=8 call $~lib/rt/stub/__alloc - local.tee $2 + local.tee $1 local.get $0 local.get $3 - i32.load offset=12 call $~lib/memory/memory.copy - local.get $2 - local.tee $0 - i32.const 16 - i32.sub - local.set $3 + local.get $1 + local.set $0 end else local.get $5 @@ -399,21 +361,131 @@ local.get $2 i32.add global.set $~lib/rt/stub/offset - local.get $3 + local.get $4 local.get $2 i32.store end end + local.get $0 + ) + (func $~lib/rt/stub/__free (param $0 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub local.get $1 + i32.const 16 + i32.add + call $~lib/rt/stub/__realloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 i32.store offset=12 local.get $0 + local.get $1 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect + nop + ) + (func $~lib/rt/stub/__reset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset ) (func $start:rt/stub-realloc - (local $0 i32) - (local $1 i32) i32.const 10 - i32.const 0 call $~lib/rt/stub/__alloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -427,14 +499,14 @@ i32.ne if i32.const 0 - i32.const 1088 - i32.const 7 + i32.const 1120 + i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - i32.const 16 + i32.const 13 call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -442,8 +514,8 @@ i32.ne if i32.const 0 - i32.const 1088 - i32.const 10 + i32.const 1120 + i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable @@ -457,8 +529,8 @@ i32.ne if i32.const 0 - i32.const 1088 - i32.const 13 + i32.const 1120 + i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable @@ -468,18 +540,17 @@ call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr i32.const 1 - i32.const 0 call $~lib/rt/stub/__alloc global.set $rt/stub-realloc/newLastPtr global.get $rt/stub-realloc/newLastPtr global.get $rt/stub-realloc/originalPtr - i32.const 48 + i32.const 32 i32.add i32.ne if i32.const 0 - i32.const 1088 - i32.const 18 + i32.const 1120 + i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable @@ -493,14 +564,14 @@ i32.ne if i32.const 0 - i32.const 1088 - i32.const 21 + i32.const 1120 + i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - i32.const 32 + i32.const 28 call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -508,14 +579,14 @@ i32.ne if i32.const 0 - i32.const 1088 - i32.const 24 + i32.const 1120 + i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - i32.const 33 + i32.const 29 call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -523,63 +594,22 @@ i32.le_u if i32.const 0 - i32.const 1088 - i32.const 27 + i32.const 1120 + i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - local.tee $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $1 - i32.load - i32.add - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end + call $~lib/rt/stub/__free i32.const 1 - i32.const 0 call $~lib/rt/stub/__alloc global.get $rt/stub-realloc/ptr i32.ne if i32.const 0 - i32.const 1088 - i32.const 30 + i32.const 1120 + i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable @@ -593,9 +623,9 @@ i32.const 1 global.set $~started end - i32.const 1168 + i32.const 1196 global.set $~lib/rt/stub/startOffset - i32.const 1168 + i32.const 1196 global.set $~lib/rt/stub/offset call $start:rt/stub-realloc ) diff --git a/tests/compiler/rt/stub-realloc.ts b/tests/compiler/rt/stub-realloc.ts index 129011e08b..1ae9a266c6 100644 --- a/tests/compiler/rt/stub-realloc.ts +++ b/tests/compiler/rt/stub-realloc.ts @@ -1,30 +1,34 @@ import { BLOCK_OVERHEAD } from "rt/common"; -var ptr = __alloc(10, 0); // initial allocation +// size calculation: ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD +// BLOCK_OVERHEAD=4 -> 12, 28, 44, ... + +var ptr = __alloc(10); // initial allocation var originalPtr = ptr; -ptr = __realloc(ptr, 12); // just resizes (<= 16) +ptr = __realloc(ptr, 12); // just resizes (<= 12) assert(ptr == originalPtr); -ptr = __realloc(ptr, 16); // just resizes (<= 16) +ptr = __realloc(ptr, 13); // resizes checking for grow (<= 28) assert(ptr == originalPtr); -ptr = __realloc(ptr, 33); // last: resizes checking for grow (<= 48) +ptr = __realloc(ptr, 33); // last: resizes checking for grow (<= 44) assert(ptr == originalPtr); -ptr = __realloc(ptr, 20); // last: shrinks again (<= 32, see *) +ptr = __realloc(ptr, 20); // last: shrinks again (<= 28, see *) -var newLastPtr = __alloc(1, 0); -assert(newLastPtr == originalPtr + 32 + BLOCK_OVERHEAD); // * +var newLastPtr = __alloc(1); +assert(newLastPtr == originalPtr + 28 + BLOCK_OVERHEAD); // * -ptr = __realloc(ptr, 24); // just resizes (<= 32) +ptr = __realloc(ptr, 24); // just resizes (<= 28) assert(ptr == originalPtr); -ptr = __realloc(ptr, 32); // just resizes (<= 32) +ptr = __realloc(ptr, 28); // just resizes (<= 28) assert(ptr == originalPtr); -ptr = __realloc(ptr, 33); // not last anymore: copies +ptr = __realloc(ptr, 29); // not last anymore: copies assert(ptr > originalPtr); __free(ptr); // discards last -assert(__alloc(1, 0) == ptr); + +assert(__alloc(1) == ptr); diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index 081fb46313..ce870fa5b4 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -1,33 +1,50 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 64) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s\00") - (data (i32.const 128) "\03\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 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 76) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s\00") + (data (i32.const 144) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 128)) - (global $~lib/heap/__heap_base i32 (i32.const 156)) + (global $~lib/rt/__rtti_base i32 (i32.const 144)) + (global $~lib/heap/__heap_base i32 (i32.const 172)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) (export "__release" (func $~lib/rt/stub/__release)) (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -39,6 +56,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -82,74 +109,34 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 + local.get $3 + i32.store local.get $2 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1425,33 +1412,18 @@ if i32.const 0 i32.const 32 - i32.const 41 + i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $2 local.get $2 i32.load local.set $3 - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $3 i32.add @@ -1459,12 +1431,7 @@ i32.eq local.set $4 local.get $1 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + call $~lib/rt/stub/computeSize local.set $5 local.get $1 local.get $3 @@ -1473,7 +1440,7 @@ local.get $4 if local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable @@ -1496,18 +1463,15 @@ local.get $7 i32.gt_u select - local.get $2 - i32.load offset=8 call $~lib/rt/stub/__alloc local.set $6 local.get $6 local.get $0 - local.get $2 - i32.load offset=12 + local.get $3 call $~lib/memory/memory.copy local.get $6 local.tee $0 - i32.const 16 + i32.const 4 i32.sub local.set $2 end @@ -1523,9 +1487,6 @@ i32.store end end - local.get $2 - local.get $1 - i32.store offset=12 local.get $0 ) (func $~lib/rt/stub/__free (param $0 i32) @@ -1545,30 +1506,15 @@ if i32.const 0 i32.const 32 - i32.const 68 + i32.const 95 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 - i32.const 1 - drop - local.get $1 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 i32.load @@ -1580,9 +1526,100 @@ global.set $~lib/rt/stub/offset end ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=12 + local.set $3 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $4 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $3 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $4 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect + nop + ) + (func $~lib/rt/stub/__reset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + ) (func $start:rt/stub-realloc i32.const 10 - i32.const 0 call $~lib/rt/stub/__alloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -1597,14 +1634,14 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 7 + i32.const 96 + i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - i32.const 16 + i32.const 13 call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -1613,8 +1650,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 10 + i32.const 96 + i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable @@ -1629,8 +1666,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 13 + i32.const 96 + i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable @@ -1640,21 +1677,20 @@ call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr i32.const 1 - i32.const 0 call $~lib/rt/stub/__alloc global.set $rt/stub-realloc/newLastPtr global.get $rt/stub-realloc/newLastPtr global.get $rt/stub-realloc/originalPtr - i32.const 32 + i32.const 28 i32.add - i32.const 16 + i32.const 4 i32.add i32.eq i32.eqz if i32.const 0 - i32.const 80 - i32.const 18 + i32.const 96 + i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable @@ -1669,14 +1705,14 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 21 + i32.const 96 + i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - i32.const 32 + i32.const 28 call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -1685,14 +1721,14 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 24 + i32.const 96 + i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end global.get $rt/stub-realloc/ptr - i32.const 33 + i32.const 29 call $~lib/rt/stub/__realloc global.set $rt/stub-realloc/ptr global.get $rt/stub-realloc/ptr @@ -1701,8 +1737,8 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 27 + i32.const 96 + i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable @@ -1710,15 +1746,14 @@ global.get $rt/stub-realloc/ptr call $~lib/rt/stub/__free i32.const 1 - i32.const 0 call $~lib/rt/stub/__alloc global.get $rt/stub-realloc/ptr i32.eq i32.eqz if i32.const 0 - i32.const 80 - i32.const 30 + i32.const 96 + i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable @@ -1733,12 +1768,16 @@ global.set $~started end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index a65a8a749a..db9694a52e 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -1,27 +1,28 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1216) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) + (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -36,8 +37,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1056 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -46,18 +47,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1056 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -99,28 +100,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1056 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -191,8 +192,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1056 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -205,14 +206,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1056 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -228,14 +229,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -250,7 +251,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -278,8 +279,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1056 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -287,14 +288,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -323,33 +324,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1056 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1056 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -396,8 +397,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1056 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -415,15 +416,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -461,54 +462,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1056 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1056 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -524,18 +523,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1056 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -545,23 +543,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -572,93 +571,109 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1248 + i32.const 0 + i32.store + i32.const 2816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1248 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1248 + i32.const 2820 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1248 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.ge_u + if + i32.const 1120 + i32.const 1056 + i32.const 461 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $0 + i32.const 12 + i32.le_u + select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -684,7 +699,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -715,8 +730,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 338 + i32.const 1056 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -767,8 +782,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1056 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -796,12 +811,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1040 - i32.const 365 + i32.const 1056 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -812,7 +829,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -824,12 +841,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -844,7 +861,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -864,169 +881,565 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 + call $~lib/rt/tlsf/prepareSize + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 if - unreachable + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 end end + else + local.get $1 + i32.const 7 + i32.and local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.const 7 + i32.and + i32.eq if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end end end end - local.get $3 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + call $~lib/memory/memory.copy + local.get $1 + i32.const 1244 + i32.ge_u + if + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $2 + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1244 i32.lt_u if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $5 + i32.const -4 + i32.and + local.tee $3 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $7 + i32.const 1 + i32.and + if + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $4 + i32.ge_u + if + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $5 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $2 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock + end + end + local.get $0 + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + i32.const 1244 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 275 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1120 + i32.const 1184 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub + local.get $1 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__realloc + local.tee $4 + i32.const 4 + i32.sub + local.tee $0 local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 local.get $0 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=16 + local.get $4 i32.const 16 i32.add ) @@ -1034,11 +1447,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1212 + i32.const 1244 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1053,7 +1466,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1070,7 +1483,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1081,18 +1494,15 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1212 + i32.const 1244 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/__collect - nop - ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -1108,7 +1518,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1122,21 +1532,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1212 + i32.const 1244 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1150,28 +1560,22 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 126 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/insertBlock + call $~lib/rt/tlsf/freeBlock else local.get $1 i32.const 0 i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1184 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index d4c081a667..bdd2067cfe 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -3,29 +3,30 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\03\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 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 192) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (global $~lib/heap/__heap_base i32 (i32.const 204)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 192)) + (global $~lib/heap/__heap_base i32 (i32.const 220)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__new" (func $~lib/rt/pure/__new)) + (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -50,7 +51,7 @@ if i32.const 0 i32.const 32 - i32.const 277 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -64,11 +65,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -77,7 +78,7 @@ if i32.const 0 i32.const 32 - i32.const 279 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -131,28 +132,28 @@ if i32.const 0 i32.const 32 - i32.const 292 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -263,7 +264,7 @@ if i32.const 0 i32.const 32 - i32.const 205 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -280,7 +281,7 @@ if i32.const 0 i32.const 32 - i32.const 207 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -288,7 +289,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -310,7 +311,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -320,7 +321,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -337,7 +338,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -375,7 +376,7 @@ if i32.const 0 i32.const 32 - i32.const 228 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -385,7 +386,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -395,7 +396,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -427,11 +428,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -440,7 +441,7 @@ if i32.const 0 i32.const 32 - i32.const 243 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -448,7 +449,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -458,7 +459,7 @@ if i32.const 0 i32.const 32 - i32.const 244 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -517,7 +518,7 @@ if i32.const 0 i32.const 32 - i32.const 260 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -541,15 +542,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -618,31 +619,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 i32.const 32 - i32.const 386 - i32.const 5 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -656,14 +659,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 396 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -696,7 +699,7 @@ if i32.const 0 i32.const 32 - i32.const 408 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -707,10 +710,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -718,9 +721,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -736,15 +739,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -763,7 +766,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -776,127 +779,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -904,29 +926,16 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 + i32.const 96 i32.const 32 i32.const 461 i32.const 30 @@ -934,19 +943,7 @@ unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -969,7 +966,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1024,7 +1021,7 @@ if i32.const 0 i32.const 32 - i32.const 338 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1089,7 +1086,7 @@ if i32.const 0 i32.const 32 - i32.const 351 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1145,7 +1142,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1163,11 +1160,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1231,6 +1228,8 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz @@ -1238,7 +1237,7 @@ if i32.const 0 i32.const 32 - i32.const 365 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1252,8 +1251,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1265,14 +1264,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1291,7 +1290,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1303,7 +1302,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1320,233 +1319,1714 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 32 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 i32.const 32 - i32.const 520 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock - i32.const 16 + i32.const 4 i32.add ) - (func $~lib/rt/pure/increment (param $0 i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 + i32.const 4 + i32.sub local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 + i32.const 32 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $1 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end end local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store + i32.const 3 + i32.and i32.const 0 - drop + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) + (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $5 + local.get $3 + local.get $5 + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.load + local.set $8 + local.get $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $7 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $6 + i32.or + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + end local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 96 + i32.const 160 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $5 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 112 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/pure/__release (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 20 + i32.sub + call $~lib/rt/pure/decrement + end ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 @@ -1577,7 +3057,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1588,7 +3068,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -1603,7 +3083,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1620,7 +3100,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1658,14 +3138,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 160 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index 6825547dd7..a8ae58810b 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -3,59 +3,56 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data (i32.const 1088) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1024)) + (global $~lib/rt/__rtti_base i32 (i32.const 1088)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) (export "__release" (func $~lib/rt/stub/__release)) (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 + i32.const 4 + i32.sub + ) + (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -63,16 +60,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -81,24 +78,393 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub + ) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add local.tee $2 - local.get $6 + local.get $0 + call $~lib/rt/stub/computeSize + local.tee $0 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $0 i32.store local.get $2 - i32.const 1 + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $4 + i32.load + local.tee $3 + i32.add + i32.eq + local.set $5 + local.get $1 + call $~lib/rt/stub/computeSize + local.set $2 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $5 + if + local.get $1 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $2 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $4 + local.get $2 + i32.store + else + local.get $2 + local.get $3 + i32.const 1 + i32.shl + local.tee $1 + local.get $2 + local.get $1 + i32.gt_u + select + call $~lib/rt/stub/__alloc + local.tee $1 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $1 + local.set $0 + end + else + local.get $5 + if + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/stub/offset + local.get $4 + local.get $2 + i32.store + end + end + local.get $0 + ) + (func $~lib/rt/stub/__free (param $0 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.set $2 + local.get $0 + i32.const 16 + i32.sub + local.get $1 + i32.const 16 + i32.add + call $~lib/rt/stub/__realloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $2 i32.store offset=12 - local.get $4 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -114,9 +480,9 @@ global.set $~lib/rt/stub/offset ) (func $~start - i32.const 1056 + i32.const 1116 global.set $~lib/rt/stub/startOffset - i32.const 1056 + i32.const 1116 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 6fb4fec6af..5e7a0bc657 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -3,21 +3,43 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\03\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 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 64) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 16)) - (global $~lib/heap/__heap_base i32 (i32.const 44)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 64)) + (global $~lib/heap/__heap_base i32 (i32.const 92)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) (export "__release" (func $~lib/rt/stub/__release)) (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -29,6 +51,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -72,60 +104,1501 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 + call $~lib/rt/stub/computeSize + local.set $3 + local.get $2 + local.get $3 i32.add - i32.const 15 - i32.const -1 - i32.xor + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store + local.get $2 + ) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 i32.and - local.tee $3 + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 i32.const 16 - local.tee $4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $0 local.get $3 - local.get $4 - i32.gt_u - select + i32.add + global.get $~lib/rt/stub/offset + i32.eq + local.set $4 + local.get $1 + call $~lib/rt/stub/computeSize local.set $5 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $4 + if + local.get $1 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + local.get $5 + i32.store + else + local.get $5 + local.tee $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + call $~lib/rt/stub/__alloc + local.set $6 + local.get $6 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $6 + local.tee $0 + i32.const 4 + i32.sub + local.set $2 + end + else + local.get $4 + if + local.get $0 + local.get $5 + i32.add + global.set $~lib/rt/stub/offset + local.get $2 + local.get $5 + i32.store + end + end + local.get $0 + ) + (func $~lib/rt/stub/__free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 local.get $2 - local.get $5 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 i32.add - call $~lib/rt/stub/maybeGrowMemory + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 local.get $2 + i32.load offset=12 + local.set $3 + local.get $0 i32.const 16 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 + i32.const 16 local.get $1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $4 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $2 + local.get $3 i32.store offset=12 local.get $2 + local.get $1 + i32.store offset=16 + local.get $4 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -142,12 +1615,16 @@ ) (func $~start global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/static-this.optimized.wat b/tests/compiler/static-this.optimized.wat index d5d9d64094..2b3df8c9ea 100644 --- a/tests/compiler/static-this.optimized.wat +++ b/tests/compiler/static-this.optimized.wat @@ -1,5 +1,5 @@ (module (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.untouched.wat index 25a4783c22..0534028321 100644 --- a/tests/compiler/static-this.untouched.wat +++ b/tests/compiler/static-this.untouched.wat @@ -4,7 +4,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") (table $0 1 funcref) (global $static-this/Foo.bar (mut i32) (i32.const 42)) (export "memory" (memory $0)) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 8c4643e1d0..ba679f12fc 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -5,11 +5,11 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1088) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1136) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 1252) "\01\00\00\00\01") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 1036) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1100) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1148) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 1280) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1308) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) @@ -22,8 +22,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1040 - i32.const 1104 + i32.const 1056 + i32.const 1120 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -40,8 +40,8 @@ local.get $0 i32.eqz if - i32.const 1152 - i32.const 1104 + i32.const 1168 + i32.const 1120 i32.const 108 i32.const 40 call $~lib/builtins/abort @@ -57,8 +57,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1040 - i32.const 1104 + i32.const 1056 + i32.const 1120 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -70,9 +70,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -85,7 +85,7 @@ (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - i32.const 1264 + i32.const 1296 local.set $3 local.get $0 local.get $1 @@ -176,7 +176,7 @@ local.get $1 select local.tee $1 - i32.const 1264 + i32.const 1296 call $~lib/string/String#get:length local.tee $3 i32.add diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 5a71f70c10..ee895479d5 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -7,11 +7,11 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 240) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 12) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 76) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 124) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 252) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 284) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) @@ -168,9 +168,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -331,7 +331,7 @@ i32.const 0 i32.eq if - i32.const 272 + i32.const 304 local.tee $3 local.get $1 local.tee $4 @@ -403,7 +403,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 256 + i32.const 272 i32.const 0 call $~lib/string/String#startsWith local.set $2 @@ -496,7 +496,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 256 + i32.const 272 i32.const 0 call $~lib/string/String#startsWith local.set $3 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index e786053e2f..c434560c33 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1,30 +1,30 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 1056) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00\03\00\00\00\03") - (data (i32.const 1088) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 1152) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1216) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1264) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 1296) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\00\05\00\00\00\05\00\00\0c\00\00\00\03") - (data (i32.const 1332) "\01") - (data (i32.const 1344) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00@\05\00\00@\05") - (data (i32.const 1376) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1424) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1488) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\03\00\00\00\01") + (data (i32.const 1052) "\03\00\00\00\00\01\02") + (data (i32.const 1068) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\03\00\00\00\03") + (data (i32.const 1116) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (i32.const 1180) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1244) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1292) "\0c\00\00\00\01") + (data (i32.const 1308) "\0c\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 1324) "\10\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \05\00\00 \05\00\00\0c\00\00\00\03") + (data (i32.const 1376) "\01") + (data (i32.const 1404) "\10\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\05\00\00p\05") + (data (i32.const 1452) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1516) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1580) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) @@ -37,8 +37,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1168 - i32.const 1232 + i32.const 1200 + i32.const 1264 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -56,8 +56,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1168 - i32.const 1232 + i32.const 1200 + i32.const 1264 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -84,8 +84,8 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 277 + i32.const 1600 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -94,18 +94,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1392 - i32.const 279 + i32.const 1600 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -147,28 +147,28 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 292 + i32.const 1600 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -239,8 +239,8 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 205 + i32.const 1600 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -253,14 +253,14 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 207 + i32.const 1600 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -276,14 +276,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -298,7 +298,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -326,8 +326,8 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 228 + i32.const 1600 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -335,14 +335,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -371,33 +371,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1392 - i32.const 243 + i32.const 1600 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1392 - i32.const 244 + i32.const 1600 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -444,8 +444,8 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 260 + i32.const 1600 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -463,15 +463,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -509,54 +509,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1392 - i32.const 386 - i32.const 5 + i32.const 1600 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1392 - i32.const 396 + i32.const 1600 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -572,18 +570,17 @@ i32.lt_u if i32.const 0 - i32.const 1392 - i32.const 408 + i32.const 1600 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -593,23 +590,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -620,93 +618,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1632 + i32.const 0 + i32.store + i32.const 3200 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1632 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1536 - local.set $1 - i32.const 1536 - i32.const 0 - i32.store - i32.const 3104 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1536 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1536 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1632 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1536 - i32.const 3120 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1536 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1632 + i32.const 3204 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1632 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -732,7 +721,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -763,8 +752,8 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 338 + i32.const 1600 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -815,8 +804,8 @@ i32.eqz if i32.const 0 - i32.const 1392 - i32.const 351 + i32.const 1600 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -844,12 +833,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1392 - i32.const 365 + i32.const 1600 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -860,7 +851,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -872,12 +863,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -892,7 +883,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -912,169 +903,179 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1392 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1440 - i32.const 1392 + i32.const 1472 + i32.const 1600 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 12 local.get $1 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u select - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1600 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1392 - i32.const 520 + i32.const 1600 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1082,11 +1083,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1536 + i32.const 1632 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1101,7 +1102,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 1536 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1118,7 +1119,7 @@ i32.and if i32.const 0 - i32.const 1504 + i32.const 1536 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1127,18 +1128,18 @@ end local.get $0 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 i32.shl local.tee $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 call $~lib/rt/pure/__retain i32.store @@ -1155,11 +1156,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1536 + i32.const 1632 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1167,109 +1168,109 @@ (func $start:std/array-literal (local $0 i32) (local $1 i32) - i32.const 1084 + i32.const 1100 i32.load i32.const 3 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 2 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 + i32.const 1088 i32.const 0 call $~lib/array/Array#__get if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 3 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 + i32.const 1088 i32.const 1 call $~lib/array/Array#__get i32.const 1 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 + i32.const 1088 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1324 + i32.const 1356 i32.load i32.const 3 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 1344 i32.const 0 call $~lib/array/Array#__get if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 1344 i32.const 1 call $~lib/array/Array#__get i32.const 1 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 1344 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1372 + i32.const 1436 i32.load if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -1278,7 +1279,7 @@ i32.const 3 i32.const 0 i32.const 3 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 @@ -1307,7 +1308,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -1318,7 +1319,7 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -1331,7 +1332,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -1344,7 +1345,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -1355,7 +1356,7 @@ i32.const 3 i32.const 2 i32.const 4 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 @@ -1384,7 +1385,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -1395,7 +1396,7 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1408,7 +1409,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -1421,7 +1422,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -1430,26 +1431,26 @@ i32.const 3 i32.const 2 i32.const 6 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.tee $0 i32.const 0 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 0 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 i32.const 0 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store offset=8 local.get $1 @@ -1460,7 +1461,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -1469,26 +1470,26 @@ i32.const 3 i32.const 2 i32.const 8 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.tee $0 i32.const 0 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 0 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 i32.const 0 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store offset=8 local.get $1 @@ -1499,7 +1500,7 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1136 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -1516,13 +1517,13 @@ i32.const 1 i32.const 2 i32.const 6 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.load offset=4 i32.const 0 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store local.get $0 @@ -1546,7 +1547,7 @@ i32.and if i32.const 0 - i32.const 1504 + i32.const 1536 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1564,7 +1565,7 @@ block $switch$1$case$5 block $switch$1$case$4 local.get $0 - i32.const 16 + i32.const 20 i32.add local.tee $1 i32.const 8 @@ -1606,7 +1607,7 @@ i32.and if i32.const 0 - i32.const 1504 + i32.const 1536 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1627,7 +1628,7 @@ i32.le_u if i32.const 0 - i32.const 1504 + i32.const 1536 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1646,13 +1647,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1536 + i32.const 1632 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index b619fce832..eb9cb3aa6c 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -7,37 +7,34 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 48) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 80) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 144) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 208) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 256) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 288) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\10\01\00\00\10\01\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 320) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 336) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\01\00\00P\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 368) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 416) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 480) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\03\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\00\01\02") + (data (i32.const 44) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\03\00\00\00\03\00\00\00") + (data (i32.const 92) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") + (data (i32.const 156) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 220) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 268) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 300) "\10\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \01\00\00 \01\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 348) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 380) "\10\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\01\00\00p\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 428) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 492) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 556) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) - (global $std/array-literal/staticArrayI32 i32 (i32.const 304)) - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 352)) + (global $std/array-literal/staticArrayI32 i32 (i32.const 320)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 400)) (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 528)) + (global $~lib/heap/__heap_base i32 (i32.const 608)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) @@ -60,8 +57,8 @@ i32.load offset=12 i32.ge_u if - i32.const 160 - i32.const 224 + i32.const 176 + i32.const 240 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -95,8 +92,8 @@ i32.load offset=12 i32.ge_u if - i32.const 160 - i32.const 224 + i32.const 176 + i32.const 240 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -132,8 +129,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 277 + i32.const 576 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -147,11 +144,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -159,8 +156,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 279 + i32.const 576 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -213,29 +210,29 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 292 + i32.const 576 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -345,8 +342,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 205 + i32.const 576 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -362,8 +359,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 207 + i32.const 576 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -371,7 +368,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -393,7 +390,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -403,7 +400,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -420,7 +417,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -457,8 +454,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 228 + i32.const 576 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -468,7 +465,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -478,7 +475,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -510,11 +507,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -522,8 +519,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 243 + i32.const 576 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -531,7 +528,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -540,8 +537,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 244 + i32.const 576 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -599,8 +596,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 260 + i32.const 576 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -624,15 +621,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -701,31 +698,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 384 - i32.const 386 - i32.const 5 + i32.const 576 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -739,14 +738,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 384 - i32.const 396 + i32.const 576 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -778,8 +777,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 408 + i32.const 576 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -790,10 +789,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -801,9 +800,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -819,15 +818,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -846,7 +845,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -859,127 +858,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -987,49 +1005,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 432 - i32.const 384 + i32.const 448 + i32.const 576 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1052,7 +1045,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1106,8 +1099,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 338 + i32.const 576 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1171,8 +1164,8 @@ i32.eqz if i32.const 0 - i32.const 384 - i32.const 351 + i32.const 576 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1228,7 +1221,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1246,11 +1239,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1314,14 +1307,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 384 - i32.const 365 + i32.const 576 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1335,8 +1330,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1348,14 +1343,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1374,7 +1369,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1386,7 +1381,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1403,136 +1398,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 576 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 384 - i32.const 520 + i32.const 576 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 448 + i32.const 512 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -2789,11 +2765,11 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $2 if @@ -2825,7 +2801,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 512 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2848,7 +2824,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 512 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -2861,19 +2837,19 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end local.get $0 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 local.get $1 @@ -2882,7 +2858,7 @@ local.get $5 i32.const 0 local.get $3 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer local.set $6 local.get $4 local.get $6 @@ -2905,7 +2881,7 @@ if i32.const 0 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2921,7 +2897,7 @@ if i32.const 0 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2937,7 +2913,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2959,7 +2935,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -2973,7 +2949,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 3 i32.const 1 call $~lib/builtins/abort @@ -2987,7 +2963,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -3001,7 +2977,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -3014,7 +2990,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -3028,7 +3004,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -3042,7 +3018,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -3056,7 +3032,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -3069,7 +3045,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -3079,7 +3055,7 @@ i32.const 0 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $1 @@ -3111,7 +3087,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -3125,7 +3101,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -3139,7 +3115,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -3153,7 +3129,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -3165,7 +3141,7 @@ i32.const 2 i32.const 4 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $0 local.get $0 @@ -3197,7 +3173,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -3211,7 +3187,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3225,7 +3201,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -3239,7 +3215,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -3249,7 +3225,7 @@ i32.const 2 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $1 @@ -3276,7 +3252,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -3286,7 +3262,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $0 local.get $0 @@ -3313,7 +3289,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 112 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -3333,7 +3309,7 @@ i32.const 2 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $1 @@ -3352,18 +3328,10 @@ (func $~start call $start:std/array-literal ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3402,7 +3370,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 512 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3413,7 +3381,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -3428,7 +3396,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 512 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3445,7 +3413,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 512 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3483,14 +3451,14 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 512 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 4ab7f33740..8a9f298493 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -8,9 +8,9 @@ (type $i32_=>_none (func (param i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_f64 (func (result f64))) (type $none_=>_none (func)) + (type $none_=>_f64 (func (result f64))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) @@ -26,271 +26,390 @@ (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1120) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1280) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1328) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1392) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1424) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 1456) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 1488) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1552) "\05\00\00\00\01\00\00\00\00\00\00\00\05") - (data (i32.const 1584) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") - (data (i32.const 1616) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1648) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1680) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1728) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1776) "\14\00\00\00\01\00\00\00\00\00\00\00\14") - (data (i32.const 1824) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") - (data (i32.const 1872) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1920) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1968) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 2020) "\01") - (data (i32.const 2036) "\01") - (data (i32.const 2048) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2096) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2144) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2192) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2240) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2288) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2336) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2384) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2432) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2480) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2528) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2576) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2720) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2864) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2912) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2960) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3008) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3056) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 3104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3152) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 3200) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 3232) "\08\00\00\00\01\00\00\00\00\00\00\00\08") - (data (i32.const 3254) "\f8\7f") - (data (i32.const 3264) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 3296) "\08\00\00\00\01\00\00\00\00\00\00\00\08") - (data (i32.const 3318) "\f8\7f") - (data (i32.const 3328) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3428) "\01") - (data (i32.const 3440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3492) "\01") - (data (i32.const 3504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3600) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3632) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 3664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3712) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") - (data (i32.const 3744) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") - (data (i32.const 3776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3824) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 3856) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3936) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05") - (data (i32.const 3968) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data (i32.const 4000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4048) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05") - (data (i32.const 4080) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 4112) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4160) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04") - (data (i32.const 4192) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data (i32.const 4224) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4272) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 4304) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4336) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4388) "\01") - (data (i32.const 4400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4448) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4500) "\01") - (data (i32.const 4512) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4560) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4612) "\01") - (data (i32.const 4624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4724) "\01") - (data (i32.const 4736) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4784) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4836) "\01") - (data (i32.const 4848) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4900) "\01") - (data (i32.const 4912) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 5024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 5072) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\01") - (data (i32.const 5104) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\02") - (data (i32.const 5136) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03") - (data (i32.const 5168) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\04") - (data (i32.const 5200) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\05") - (data (i32.const 5232) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\06") - (data (i32.const 5264) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\07") - (data (i32.const 5296) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\08") - (data (i32.const 5328) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\t") - (data (i32.const 5360) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\n") - (data (i32.const 5392) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0b") - (data (i32.const 5424) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0c") - (data (i32.const 5456) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0d") - (data (i32.const 5488) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0e") - (data (i32.const 5520) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0f") - (data (i32.const 5552) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\10") - (data (i32.const 5584) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\11") - (data (i32.const 5616) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\12") - (data (i32.const 5648) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\13") - (data (i32.const 5680) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\14") - (data (i32.const 5712) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\15") - (data (i32.const 5744) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\16") - (data (i32.const 5776) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\17") - (data (i32.const 5808) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\18") - (data (i32.const 5840) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\19") - (data (i32.const 5872) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1a") - (data (i32.const 5904) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1b") - (data (i32.const 5936) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1c") - (data (i32.const 5968) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1d") - (data (i32.const 6000) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1e") - (data (i32.const 6032) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1f") - (data (i32.const 6064) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00 ") - (data (i32.const 6096) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00!") - (data (i32.const 6128) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\"") - (data (i32.const 6160) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00#") - (data (i32.const 6192) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00$") - (data (i32.const 6224) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00%") - (data (i32.const 6256) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00&") - (data (i32.const 6288) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\'") - (data (i32.const 6320) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00(") - (data (i32.const 6352) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00)") - (data (i32.const 6384) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00*") - (data (i32.const 6416) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00+") - (data (i32.const 6448) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 6496) "\ac\00\00\00\01\00\00\00\01\00\00\00\ac\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 6688) " \00\00\00\01\00\00\00\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") - (data (i32.const 6736) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00,") - (data (i32.const 6768) " \00\00\00\01\00\00\00\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") - (data (i32.const 6816) "@\00\00\00\01\00\00\00\00\00\00\00@") - (data (i32.const 6838) "\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 6878) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 6896) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00-") - (data (i32.const 6928) "@\00\00\00\01\00\00\00\00\00\00\00@") - (data (i32.const 6950) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 6982) "\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 7008) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7056) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00.") - (data (i32.const 7088) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 7136) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7184) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00/") - (data (i32.const 7216) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 7268) "\01") - (data (i32.const 7280) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 7312) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01") - (data (i32.const 7344) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 7376) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 7408) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\000") - (data (i32.const 7440) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 7472) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 7504) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\001") - (data (i32.const 7536) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\002") - (data (i32.const 7568) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\003") - (data (i32.const 7600) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\004") - (data (i32.const 7632) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\005") - (data (i32.const 7664) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\006") - (data (i32.const 7696) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 7728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 7760) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 7792) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 7828) "\01\00\00\00\01") - (data (i32.const 7840) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00 \1e\00\00@\1e\00\00 \1e\00\00`\1e\00\00\80\1e\00\00\a0\1e") - (data (i32.const 7888) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\a0\1e\00\00 \1e\00\00 \1e\00\00`\1e\00\00@\1e\00\00\80\1e") - (data (i32.const 7936) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\007") - (data (i32.const 7968) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 8000) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\008") - (data (i32.const 8032) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01") - (data (i32.const 8064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 8096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 8128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 8160) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 8208) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 8240) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 8368) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 8432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 8464) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 8560) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 8592) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 8624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 8656) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 8688) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 8720) "0\00\00\00\01\00\00\00\01\00\00\000\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 8784) "0\00\00\00\01\00\00\00\00\00\00\000") - (data (i32.const 8814) "\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 8848) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 8880) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 8912) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 8944) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 8992) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 9024) "\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\00\00\00\01\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data (i32.const 10308) "\01") - (data (i32.const 10320) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 10352) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 10384) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10416) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 10448) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 10480) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\01\ff") - (data (i32.const 10512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data (i32.const 10544) "\06\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff") - (data (i32.const 10576) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data (i32.const 10624) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 10672) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 10736) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 10784) "T\00\00\00\01\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 10896) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\a0\1e\00\00 \1e\00\00 \1e\00\00`\1e\00\00@\1e\00\00\80\1e") - (data (i32.const 10944) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 10992) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 11024) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 11056) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00@\'\00\00\00+\00\00\00\00\00\00 +") - (data (i32.const 11088) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data (i32.const 11120) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 11152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") - (data (i32.const 11184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 11216) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\02") - (data (i32.const 11248) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\03\04") - (data (i32.const 11280) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 11312) "\04\00\00\00\01\00\00\00\00\00\00\00\04") - (data (i32.const 11344) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 11376) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 11408) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 11440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00o\00n\00e") - (data (i32.const 11472) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\c0,") - (data (i32.const 11504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00t\00w\00o") - (data (i32.const 11536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data (i32.const 11568) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00-\00\00\00\00\00\00 -") - (data (i32.const 11600) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r") - (data (i32.const 11632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e") - (data (i32.const 11664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00i\00x") - (data (i32.const 11696) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00`-\00\00\80-\00\00\a0-") - (data (i32.const 11728) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data (i32.const 11760) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\e0-") - (data (i32.const 11792) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\c0,\00\00\00-\00\00\00\00\00\00 -\00\00`-\00\00\80-\00\00\a0-\00\00\e0-") - (data (i32.const 11844) "\01") - (data (i32.const 11860) "\01") - (data (i32.const 11872) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1132) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1196) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1260) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1324) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1372) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1436) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1468) "\05\00\00\00\01") + (data (i32.const 1484) "\05\00\00\00\01\02\03\04\05") + (data (i32.const 1500) "\05\00\00\00\01") + (data (i32.const 1516) "\05\00\00\00\01\01\01\04\05") + (data (i32.const 1532) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1596) "\05\00\00\00\01") + (data (i32.const 1612) "\05") + (data (i32.const 1628) "\05\00\00\00\01") + (data (i32.const 1644) "\05\00\00\00\01\01") + (data (i32.const 1660) "\05\00\00\00\01") + (data (i32.const 1676) "\05\00\00\00\01\01\00\02\02") + (data (i32.const 1692) "\05\00\00\00\01") + (data (i32.const 1708) "\05\00\00\00\01\01\00\02\02") + (data (i32.const 1724) "\14\00\00\00\01") + (data (i32.const 1740) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1772) "\14\00\00\00\01") + (data (i32.const 1788) "\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 1820) "\14\00\00\00\01") + (data (i32.const 1836) "\14") + (data (i32.const 1868) "\14\00\00\00\01") + (data (i32.const 1884) "\14\00\00\00\01\00\00\00\01") + (data (i32.const 1916) "\14\00\00\00\01") + (data (i32.const 1932) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 1964) "\14\00\00\00\01") + (data (i32.const 1980) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 2012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 2064) "\01") + (data (i32.const 2096) "\01") + (data (i32.const 2124) "\14\00\00\00\01") + (data (i32.const 2140) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2172) "\14\00\00\00\01") + (data (i32.const 2188) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2220) "\14\00\00\00\01") + (data (i32.const 2236) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2268) "\14\00\00\00\01") + (data (i32.const 2284) "\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 2316) "\14\00\00\00\01") + (data (i32.const 2332) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2364) "\14\00\00\00\01") + (data (i32.const 2380) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 2412) "\14\00\00\00\01") + (data (i32.const 2428) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2460) "\14\00\00\00\01") + (data (i32.const 2476) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2508) "\14\00\00\00\01") + (data (i32.const 2524) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2556) "\14\00\00\00\01") + (data (i32.const 2572) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2604) "\14\00\00\00\01") + (data (i32.const 2620) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2652) "\14\00\00\00\01") + (data (i32.const 2668) "\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2700) "\14\00\00\00\01") + (data (i32.const 2716) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2748) "\14\00\00\00\01") + (data (i32.const 2764) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 2796) "\14\00\00\00\01") + (data (i32.const 2812) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2844) "\14\00\00\00\01") + (data (i32.const 2860) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2892) "\14\00\00\00\01") + (data (i32.const 2908) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2940) "\14\00\00\00\01") + (data (i32.const 2956) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2988) "\14\00\00\00\01") + (data (i32.const 3004) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3036) "\14\00\00\00\01") + (data (i32.const 3052) "\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3084) "\14\00\00\00\01") + (data (i32.const 3100) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3132) "\14\00\00\00\01") + (data (i32.const 3148) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 3180) "\14\00\00\00\01") + (data (i32.const 3196) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3228) "\14\00\00\00\01") + (data (i32.const 3244) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 3276) "\04\00\00\00\01") + (data (i32.const 3292) "\04\00\00\00\00\00\c0\7f") + (data (i32.const 3308) "\08\00\00\00\01") + (data (i32.const 3324) "\08") + (data (i32.const 3334) "\f8\7f") + (data (i32.const 3340) "\04\00\00\00\01") + (data (i32.const 3356) "\04\00\00\00\00\00\c0\7f") + (data (i32.const 3372) "\08\00\00\00\01") + (data (i32.const 3388) "\08") + (data (i32.const 3398) "\f8\7f") + (data (i32.const 3404) "\14\00\00\00\01") + (data (i32.const 3420) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3452) "\14\00\00\00\01") + (data (i32.const 3468) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3504) "\01") + (data (i32.const 3532) "\14\00\00\00\01") + (data (i32.const 3548) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3584) "\01") + (data (i32.const 3612) "\14\00\00\00\01") + (data (i32.const 3628) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3660) "\14\00\00\00\01") + (data (i32.const 3676) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3708) "\0c\00\00\00\01") + (data (i32.const 3724) "\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3740) "\08\00\00\00\01") + (data (i32.const 3756) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 3772) "\14\00\00\00\01") + (data (i32.const 3788) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3820) "\08\00\00\00\01") + (data (i32.const 3836) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 3852) "\0c\00\00\00\01") + (data (i32.const 3868) "\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data (i32.const 3884) "\14\00\00\00\01") + (data (i32.const 3900) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3932) "\04\00\00\00\01") + (data (i32.const 3948) "\04\00\00\00\01") + (data (i32.const 3964) "\10\00\00\00\01") + (data (i32.const 3980) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4012) "\14\00\00\00\01") + (data (i32.const 4028) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4060) "\04\00\00\00\01") + (data (i32.const 4076) "\04\00\00\00\05") + (data (i32.const 4092) "\10\00\00\00\01") + (data (i32.const 4108) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data (i32.const 4140) "\14\00\00\00\01") + (data (i32.const 4156) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4188) "\08\00\00\00\01") + (data (i32.const 4204) "\08\00\00\00\04\00\00\00\05") + (data (i32.const 4220) "\0c\00\00\00\01") + (data (i32.const 4236) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 4252) "\14\00\00\00\01") + (data (i32.const 4268) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4300) "\04\00\00\00\01") + (data (i32.const 4316) "\04\00\00\00\04") + (data (i32.const 4332) "\10\00\00\00\01") + (data (i32.const 4348) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data (i32.const 4380) "\14\00\00\00\01") + (data (i32.const 4396) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4428) "\04\00\00\00\01") + (data (i32.const 4444) "\04\00\00\00\01") + (data (i32.const 4460) "\10\00\00\00\01") + (data (i32.const 4476) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4508) "\14\00\00\00\01") + (data (i32.const 4524) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4560) "\01") + (data (i32.const 4588) "\14\00\00\00\01") + (data (i32.const 4604) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4636) "\14\00\00\00\01") + (data (i32.const 4652) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4688) "\01") + (data (i32.const 4716) "\14\00\00\00\01") + (data (i32.const 4732) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4764) "\14\00\00\00\01") + (data (i32.const 4780) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4816) "\01") + (data (i32.const 4844) "\14\00\00\00\01") + (data (i32.const 4860) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4892) "\14\00\00\00\01") + (data (i32.const 4908) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4944) "\01") + (data (i32.const 4972) "\14\00\00\00\01") + (data (i32.const 4988) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5020) "\14\00\00\00\01") + (data (i32.const 5036) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5072) "\01") + (data (i32.const 5100) "\14\00\00\00\01") + (data (i32.const 5116) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5152) "\01") + (data (i32.const 5180) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 5308) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 5372) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01") + (data (i32.const 5404) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02") + (data (i32.const 5436) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03") + (data (i32.const 5468) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\04") + (data (i32.const 5500) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\05") + (data (i32.const 5532) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\06") + (data (i32.const 5564) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\07") + (data (i32.const 5596) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\08") + (data (i32.const 5628) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\t") + (data (i32.const 5660) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\n") + (data (i32.const 5692) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0b") + (data (i32.const 5724) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0c") + (data (i32.const 5756) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0d") + (data (i32.const 5788) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0e") + (data (i32.const 5820) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0f") + (data (i32.const 5852) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\10") + (data (i32.const 5884) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\11") + (data (i32.const 5916) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\12") + (data (i32.const 5948) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\13") + (data (i32.const 5980) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\14") + (data (i32.const 6012) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\15") + (data (i32.const 6044) "\08\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\16") + (data (i32.const 6076) "\08\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17") + (data (i32.const 6108) "\08\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18") + (data (i32.const 6140) "\08\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19") + (data (i32.const 6172) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1a") + (data (i32.const 6204) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1b") + (data (i32.const 6236) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1c") + (data (i32.const 6268) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1d") + (data (i32.const 6300) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1e") + (data (i32.const 6332) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1f") + (data (i32.const 6364) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00 ") + (data (i32.const 6396) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00!") + (data (i32.const 6428) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\"") + (data (i32.const 6460) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00#") + (data (i32.const 6492) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00$") + (data (i32.const 6524) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00%") + (data (i32.const 6556) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00&") + (data (i32.const 6588) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\'") + (data (i32.const 6620) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00(") + (data (i32.const 6652) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00)") + (data (i32.const 6684) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00*") + (data (i32.const 6716) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00+") + (data (i32.const 6748) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 6796) "\ac\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ac\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 6988) " \00\00\00\01") + (data (i32.const 7004) " \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") + (data (i32.const 7052) "\08\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,") + (data (i32.const 7084) " \00\00\00\01") + (data (i32.const 7100) " \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") + (data (i32.const 7148) "@\00\00\00\01") + (data (i32.const 7164) "@") + (data (i32.const 7174) "\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 7214) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 7244) "\08\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-") + (data (i32.const 7276) "@\00\00\00\01") + (data (i32.const 7292) "@") + (data (i32.const 7302) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 7334) "\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 7372) "\14\00\00\00\01") + (data (i32.const 7388) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 7420) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.") + (data (i32.const 7452) "\14\00\00\00\01") + (data (i32.const 7468) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 7500) "\14\00\00\00\01") + (data (i32.const 7516) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data (i32.const 7548) "\08\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/") + (data (i32.const 7580) "\14\00\00\00\01") + (data (i32.const 7596) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 7632) "\01") + (data (i32.const 7660) "\04\00\00\00\01") + (data (i32.const 7676) "\04\00\00\00\01") + (data (i32.const 7692) "\08\00\00\00\01") + (data (i32.const 7708) "\08\00\00\00\02\00\00\00\01") + (data (i32.const 7724) "\10\00\00\00\01") + (data (i32.const 7740) "\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 7772) "\10\00\00\00\01") + (data (i32.const 7788) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 7820) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000") + (data (i32.const 7852) "\04\00\00\00\01") + (data (i32.const 7868) "\04\00\00\00\01") + (data (i32.const 7884) "\08\00\00\00\01") + (data (i32.const 7900) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 7916) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001") + (data (i32.const 7948) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002") + (data (i32.const 7980) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003") + (data (i32.const 8012) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004") + (data (i32.const 8044) "\08\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005") + (data (i32.const 8076) "\08\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006") + (data (i32.const 8108) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 8140) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 8172) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 8204) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 8240) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 8268) "\1c\00\00\00\01") + (data (i32.const 8284) "\1c\00\00\00\c0\1f\00\00\e0\1f\00\00\c0\1f\00\00\00 \00\00 \00\00@ ") + (data (i32.const 8316) "\1c\00\00\00\01") + (data (i32.const 8332) "\1c\00\00\00@ \00\00\c0\1f\00\00\c0\1f\00\00\00 \00\00\e0\1f\00\00 ") + (data (i32.const 8364) "\08\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007") + (data (i32.const 8396) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 8428) "\08\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008") + (data (i32.const 8460) "\02\00\00\00\01") + (data (i32.const 8476) "\02\00\00\00\01") + (data (i32.const 8492) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 8524) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 8556) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 8588) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 8636) "\0c\00\00\00\01") + (data (i32.const 8652) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 8668) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 8796) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 8860) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 8892) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 8988) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 9020) "\0c\00\00\00\01") + (data (i32.const 9036) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 9052) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 9084) "\08\00\00\00\01") + (data (i32.const 9100) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 9116) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 9148) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\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 9228) "0\00\00\00\01") + (data (i32.const 9244) "0") + (data (i32.const 9262) "\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 9308) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 9340) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 9372) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 9404) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9452) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9544) "\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\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 10896) "\01") + (data (i32.const 10924) "\04\00\00\00\01") + (data (i32.const 10940) "\04\00\00\00\01") + (data (i32.const 10956) "\08\00\00\00\01") + (data (i32.const 10972) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 10988) "\10\00\00\00\01") + (data (i32.const 11004) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 11036) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002") + (data (i32.const 11068) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data (i32.const 11116) "\03\00\00\00\01") + (data (i32.const 11132) "\03\00\00\00\01\ff") + (data (i32.const 11148) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 11180) "\06\00\00\00\01") + (data (i32.const 11196) "\06\00\00\00\01\00\ff\ff") + (data (i32.const 11212) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data (i32.const 11260) "\18\00\00\00\01") + (data (i32.const 11276) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11308) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data (i32.const 11388) " \00\00\00\01") + (data (i32.const 11404) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 11452) "T\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 11564) "\1c\00\00\00\01") + (data (i32.const 11580) "\1c\00\00\00@ \00\00\c0\1f\00\00\c0\1f\00\00\00 \00\00\e0\1f\00\00 ") + (data (i32.const 11612) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data (i32.const 11660) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") + (data (i32.const 11692) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004") + (data (i32.const 11724) "\10\00\00\00\01") + (data (i32.const 11740) "\10\00\00\00`)\00\00\a0-\00\00\00\00\00\00\c0-") + (data (i32.const 11772) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data (i32.const 11804) "\08\00\00\00\01") + (data (i32.const 11820) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 11836) "\08\00\00\00\01") + (data (i32.const 11852) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 11868) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data (i32.const 11916) "\02\00\00\00\01") + (data (i32.const 11932) "\02\00\00\00\01\02") + (data (i32.const 11948) "\02\00\00\00\01") + (data (i32.const 11964) "\02\00\00\00\03\04") + (data (i32.const 11980) "\04\00\00\00\01") + (data (i32.const 11996) "\04\00\00\00\01") + (data (i32.const 12012) "\04\00\00\00\01") + (data (i32.const 12028) "\04") + (data (i32.const 12044) "\0c\00\00\00\01") + (data (i32.const 12060) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 12076) "\0c\00\00\00\01") + (data (i32.const 12092) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 12108) "\0c\00\00\00\01") + (data (i32.const 12124) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 12140) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e") + (data (i32.const 12172) "\04\00\00\00\01") + (data (i32.const 12188) "\04\00\00\00\80/") + (data (i32.const 12204) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o") + (data (i32.const 12236) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data (i32.const 12268) "\0c\00\00\00\01") + (data (i32.const 12284) "\0c\00\00\00\c0/\00\00\00\00\00\00\e0/") + (data (i32.const 12300) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r") + (data (i32.const 12332) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e") + (data (i32.const 12364) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x") + (data (i32.const 12396) "\0c\00\00\00\01") + (data (i32.const 12412) "\0c\00\00\00 0\00\00@0\00\00`0") + (data (i32.const 12428) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 12460) "\04\00\00\00\01") + (data (i32.const 12476) "\04\00\00\00\a00") + (data (i32.const 12492) " \00\00\00\01") + (data (i32.const 12508) " \00\00\00\80/\00\00\c0/\00\00\00\00\00\00\e0/\00\00 0\00\00@0\00\00`0\00\00\a00") + (data (i32.const 12560) "\01") + (data (i32.const 12592) "\01") + (data (i32.const 12620) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") (table $0 57 funcref) (elem (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) @@ -391,11 +510,11 @@ (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 11928 + i32.const 12680 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -413,8 +532,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 277 + i32.const 1280 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -423,18 +542,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1136 - i32.const 279 + i32.const 1280 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -476,28 +595,28 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 292 + i32.const 1280 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -568,8 +687,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 205 + i32.const 1280 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -582,14 +701,14 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 207 + i32.const 1280 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -605,14 +724,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -627,7 +746,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -655,8 +774,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 228 + i32.const 1280 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -664,14 +783,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -700,33 +819,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1136 - i32.const 243 + i32.const 1280 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1136 - i32.const 244 + i32.const 1280 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -773,8 +892,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 260 + i32.const 1280 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -792,15 +911,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -838,54 +957,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1136 - i32.const 386 - i32.const 5 + i32.const 1280 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 396 + i32.const 1280 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -901,18 +1018,17 @@ i32.lt_u if i32.const 0 - i32.const 1136 - i32.const 408 + i32.const 1280 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -922,23 +1038,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -949,116 +1066,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 12688 + i32.const 0 + i32.store + i32.const 14256 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 12688 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 11936 - local.set $1 - i32.const 11936 - i32.const 0 - i32.store - i32.const 13504 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 11936 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 11936 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 12688 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 11936 - i32.const 13520 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 11936 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 12688 + i32.const 14260 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 12688 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1184 - i32.const 1136 + i32.const 1152 + i32.const 1280 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -1085,7 +1194,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -1116,8 +1225,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 338 + i32.const 1280 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1168,8 +1277,8 @@ i32.eqz if i32.const 0 - i32.const 1136 - i32.const 351 + i32.const 1280 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1197,12 +1306,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1136 - i32.const 365 + i32.const 1280 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1213,7 +1324,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -1225,12 +1336,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1245,7 +1356,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -1265,149 +1376,160 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1136 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1280 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u if - i32.const 0 - i32.const 1136 - i32.const 520 - i32.const 14 + i32.const 1152 + i32.const 1216 + i32.const 275 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1588,11 +1710,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 11928 + i32.const 12680 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1607,7 +1729,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1624,7 +1746,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1641,7 +1763,7 @@ (local $5 i32) i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $5 i32.const 0 @@ -1656,11 +1778,11 @@ i32.const 0 i32.store offset=12 local.get $0 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -1671,7 +1793,7 @@ i32.shl local.tee $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 i32.const 0 local.get $4 @@ -1717,7 +1839,7 @@ (local $1 i32) i32.const 4 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 local.get $0 @@ -1897,12 +2019,12 @@ end end ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -1911,7 +2033,7 @@ local.set $5 local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $3 if @@ -2012,8 +2134,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -2163,8 +2285,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -2247,9 +2369,9 @@ i32.load call $~lib/rt/pure/__retain local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.shr_s local.get $0 @@ -2260,7 +2382,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -2279,20 +2401,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 1136 - i32.const 585 + i32.const 1280 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -2310,105 +2423,175 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 12680 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + i32.const 1073741804 + i32.gt_u if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end + i32.const 1152 + i32.const 1216 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 + i32.const 20 + i32.sub + local.tee $2 i32.load offset=4 - i32.store offset=4 - local.get $3 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 i32.const 16 - i32.add + i32.sub + local.set $0 local.get $1 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 11928 - i32.ge_u + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 12680 + i32.lt_u if + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + end end - local.get $3 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add ) (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2422,13 +2605,13 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -2436,17 +2619,12 @@ end local.get $0 i32.load - local.set $4 - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - call $~lib/rt/tlsf/checkUsedBlock + local.tee $4 local.get $1 local.get $2 i32.shl local.tee $2 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add + call $~lib/rt/pure/__renew local.tee $1 local.get $3 i32.add @@ -2505,8 +2683,8 @@ i32.const 1 i32.lt_s if - i32.const 1984 - i32.const 1088 + i32.const 2032 + i32.const 1104 i32.const 300 i32.const 21 call $~lib/builtins/abort @@ -2591,11 +2769,11 @@ local.tee $4 i32.add local.tee $2 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 229 i32.const 60 call $~lib/builtins/abort @@ -2605,7 +2783,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.load offset=4 @@ -2776,8 +2954,8 @@ i32.const 1 i32.lt_s if - i32.const 1984 - i32.const 1088 + i32.const 2032 + i32.const 1104 i32.const 361 i32.const 21 call $~lib/builtins/abort @@ -2971,7 +3149,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -3062,7 +3240,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -3121,8 +3299,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3134,8 +3312,8 @@ local.tee $0 i32.eqz if - i32.const 4928 - i32.const 1088 + i32.const 5200 + i32.const 1104 i32.const 108 i32.const 40 call $~lib/builtins/abort @@ -3178,7 +3356,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -3227,8 +3405,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3249,8 +3427,8 @@ i32.const 0 i32.lt_s if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -3727,7 +3905,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 625 i32.const 7 call $~lib/builtins/abort @@ -3747,8 +3925,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3793,7 +3971,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 i32.load offset=4 @@ -3883,7 +4061,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $4 local.get $0 @@ -4211,7 +4389,7 @@ i32.eqz if i32.const 0 - i32.const 6464 + i32.const 6768 i32.const 1399 i32.const 5 call $~lib/builtins/abort @@ -4303,6 +4481,23 @@ local.get $5 call $~lib/rt/pure/__release ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + i32.const 12680 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f32) @@ -4321,7 +4516,6 @@ i32.const 2 i32.shl local.tee $2 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $5 i32.const 0 @@ -4554,10 +4748,8 @@ br $for-loop|2 end end - call $~lib/rt/tlsf/maybeInitialize local.get $5 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/__free local.get $0 f32.load offset=4 local.set $4 @@ -4578,7 +4770,7 @@ (local $4 i32) (local $5 f32) (local $6 f32) - i32.const 6752 + i32.const 7072 call $~lib/rt/pure/__retain local.set $2 block $folding-inner0 @@ -4859,7 +5051,6 @@ i32.const 2 i32.shl local.tee $2 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $5 i32.const 0 @@ -5092,10 +5283,8 @@ br $for-loop|2 end end - call $~lib/rt/tlsf/maybeInitialize local.get $5 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 local.set $4 @@ -5116,7 +5305,7 @@ (local $4 i32) (local $5 f64) (local $6 f64) - i32.const 6912 + i32.const 7264 call $~lib/rt/pure/__retain local.set $2 block $folding-inner0 @@ -5223,8 +5412,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5418,7 +5607,6 @@ i32.const 2 i32.shl local.tee $2 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $4 i32.const 0 @@ -5651,10 +5839,8 @@ br $for-loop|2 end end - call $~lib/rt/tlsf/maybeInitialize local.get $4 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/__free local.get $0 i32.load offset=4 local.set $1 @@ -5770,7 +5956,7 @@ end unreachable end - i32.const 7200 + i32.const 7568 local.tee $2 local.set $1 end @@ -5948,7 +6134,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -5965,9 +6151,9 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $0 - i32.const 7424 + i32.const 7840 call $std/array/assertSorted - i32.const 7424 + i32.const 7840 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -5991,8 +6177,8 @@ i32.const 0 i32.lt_s if - i32.const 1504 - i32.const 1088 + i32.const 1552 + i32.const 1104 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -6043,7 +6229,7 @@ (local $4 i32) i32.const 16 i32.const 22 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -6059,7 +6245,7 @@ i32.store offset=12 i32.const 8 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 i32.const 8 @@ -6389,7 +6575,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -6410,7 +6596,7 @@ (local $4 i32) i32.const 16 i32.const 25 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -6426,7 +6612,7 @@ i32.store offset=12 i32.const 2048 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 i32.const 2048 @@ -6464,7 +6650,7 @@ if i32.const 4 i32.const 24 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 511 @@ -6506,9 +6692,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -6828,7 +7014,7 @@ if i32.const 16 i32.const 29 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -6845,11 +7031,11 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -6860,7 +7046,7 @@ i32.shl local.tee $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 i32.const 0 local.get $4 @@ -6903,7 +7089,7 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $2 - i32.const 7984 + i32.const 8416 local.get $2 select local.set $3 @@ -6915,13 +7101,13 @@ i32.eqz if local.get $0 - i32.const 7984 + i32.const 8416 i32.ne if local.get $0 call $~lib/rt/pure/__release end - i32.const 7984 + i32.const 8416 local.set $0 end local.get $3 @@ -6940,12 +7126,12 @@ if local.get $0 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 br $__inlined_func$~lib/string/String#concat end local.get $1 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 local.get $3 @@ -7012,7 +7198,7 @@ local.tee $3 i32.eqz if - i32.const 7840 + i32.const 8256 return end i32.const 0 @@ -7030,7 +7216,7 @@ end local.get $3 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -7049,7 +7235,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -7061,14 +7247,14 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 i32.eqz if - i32.const 8080 - i32.const 8112 + i32.const 8512 + i32.const 8544 local.get $0 i32.load8_u select @@ -7090,7 +7276,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|1 @@ -7112,8 +7298,8 @@ i32.const 1 i32.shl i32.add - i32.const 8080 - i32.const 8112 + i32.const 8512 + i32.const 8544 local.get $9 select local.get $7 @@ -7162,8 +7348,8 @@ i32.const 1 i32.shl i32.add - i32.const 8080 - i32.const 8112 + i32.const 8512 + i32.const 8544 local.get $4 select local.get $0 @@ -7266,7 +7452,7 @@ local.get $0 i32.eqz if - i32.const 8448 + i32.const 8880 return end local.get $0 @@ -7287,7 +7473,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $3 @@ -7362,7 +7548,7 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 @@ -7388,7 +7574,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -7485,7 +7671,7 @@ local.get $0 i32.eqz if - i32.const 8448 + i32.const 8880 return end local.get $0 @@ -7494,7 +7680,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -7541,7 +7727,7 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 @@ -7567,7 +7753,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -7855,7 +8041,7 @@ local.get $9 i32.const 2 i32.shl - i32.const 9896 + i32.const 10416 i32.add i64.load32_u local.get $11 @@ -7982,7 +8168,7 @@ i32.sub i32.const 2 i32.shl - i32.const 9896 + i32.const 10416 i32.add i64.load32_u i64.mul @@ -8400,14 +8586,14 @@ i32.sub global.set $~lib/util/number/_K local.get $10 - i32.const 9024 + i32.const 9544 i32.add i64.load global.set $~lib/util/number/_frc_pow local.get $4 i32.const 1 i32.shl - i32.const 9720 + i32.const 10240 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow @@ -8644,7 +8830,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 8864 + i32.const 9328 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -8656,74 +8842,59 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $5 i32.eqz if - block $__inlined_func$~lib/util/number/dtoa + block $__inlined_func$~lib/util/number/dtoa (result i32) + i32.const 9360 local.get $0 f64.load local.tee $4 f64.const 0 f64.eq - if - i32.const 8896 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end + br_if $__inlined_func$~lib/util/number/dtoa + drop local.get $4 local.get $4 f64.sub f64.const 0 f64.ne if + i32.const 9392 local.get $4 local.get $4 f64.ne - if - i32.const 8928 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 8960 - i32.const 9008 + br_if $__inlined_func$~lib/util/number/dtoa + drop + i32.const 9424 + i32.const 9472 local.get $4 f64.const 0 f64.lt select call $~lib/rt/pure/__retain - local.set $0 br $__inlined_func$~lib/util/number/dtoa end - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 + i32.const 9488 local.get $4 call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl local.tee $0 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $1 + i32.const 1 + call $~lib/rt/pure/__new + local.tee $1 + i32.const 9488 local.get $0 - call $~lib/string/String#substring - local.set $0 - call $~lib/rt/tlsf/maybeInitialize + call $~lib/memory/memory.copy local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/pure/__retain end local.get $3 call $~lib/rt/pure/__release - local.get $0 return end local.get $5 @@ -8739,7 +8910,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -8837,7 +9008,7 @@ if local.get $5 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $6 @@ -8856,7 +9027,7 @@ local.get $3 call $~lib/rt/pure/__retain else - i32.const 7840 + i32.const 8256 end local.get $5 call $~lib/rt/pure/__release @@ -8864,7 +9035,7 @@ call $~lib/rt/pure/__release return end - i32.const 7840 + i32.const 8256 local.set $1 local.get $5 call $~lib/string/String#get:length @@ -9012,7 +9183,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -9024,7 +9195,7 @@ if local.get $5 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $6 @@ -9042,13 +9213,13 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 10112 - i32.const 7840 + i32.const 10656 + i32.const 8256 local.get $3 select return end - i32.const 7840 + i32.const 8256 local.set $1 local.get $5 call $~lib/string/String#get:length @@ -9079,7 +9250,7 @@ if local.get $1 local.get $1 - i32.const 10112 + i32.const 10656 call $~lib/string/String.__concat local.tee $7 local.tee $2 @@ -9144,7 +9315,7 @@ if local.get $1 local.get $1 - i32.const 10112 + i32.const 10656 call $~lib/string/String.__concat local.tee $4 local.tee $2 @@ -9173,7 +9344,7 @@ local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -9244,7 +9415,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -9256,7 +9427,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 @@ -9282,7 +9453,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -9393,7 +9564,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -9405,7 +9576,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 @@ -9431,7 +9602,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -9631,7 +9802,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -9643,14 +9814,14 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 i32.eqz if block $__inlined_func$~lib/util/number/utoa64 (result i32) - i32.const 8448 + i32.const 8880 local.get $0 i64.load local.tee $5 @@ -9669,7 +9840,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 local.get $1 local.get $2 @@ -9681,7 +9852,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 local.get $5 local.get $1 @@ -9707,7 +9878,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -9854,7 +10025,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -9866,14 +10037,14 @@ if local.get $4 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $5 i32.eqz if block $__inlined_func$~lib/util/number/itoa64 (result i32) - i32.const 8448 + i32.const 8880 local.get $0 i64.load i32.wrap_i64 @@ -9907,7 +10078,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $2 local.get $5 @@ -9921,7 +10092,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 local.get $2 @@ -9953,7 +10124,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -10033,7 +10204,7 @@ ) (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) local.get $0 - i32.const 8144 + i32.const 8576 call $~lib/array/Array<~lib/string/String|null>#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) @@ -10045,7 +10216,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -10057,7 +10228,7 @@ if local.get $5 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $6 @@ -10074,10 +10245,10 @@ local.get $3 if (result i32) local.get $3 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join else - i32.const 7840 + i32.const 8256 end local.get $5 call $~lib/rt/pure/__release @@ -10085,7 +10256,7 @@ call $~lib/rt/pure/__release return end - i32.const 7840 + i32.const 8256 local.set $1 local.get $5 call $~lib/string/String#get:length @@ -10115,7 +10286,7 @@ local.tee $4 if local.get $4 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $2 local.get $1 @@ -10185,7 +10356,7 @@ local.tee $0 if local.get $0 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $2 local.get $1 @@ -10262,7 +10433,7 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $4 @@ -10288,7 +10459,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -10377,7 +10548,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) @@ -10389,7 +10560,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -10401,7 +10572,7 @@ if local.get $5 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $6 @@ -10418,10 +10589,10 @@ local.get $3 if (result i32) local.get $3 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join else - i32.const 7840 + i32.const 8256 end local.get $5 call $~lib/rt/pure/__release @@ -10429,7 +10600,7 @@ call $~lib/rt/pure/__release return end - i32.const 7840 + i32.const 8256 local.set $1 local.get $5 call $~lib/string/String#get:length @@ -10459,7 +10630,7 @@ local.tee $4 if local.get $4 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $2 local.get $1 @@ -10529,7 +10700,7 @@ local.tee $0 if local.get $0 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $2 local.get $1 @@ -10560,7 +10731,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) @@ -10572,7 +10743,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -10584,7 +10755,7 @@ if local.get $5 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $6 @@ -10601,10 +10772,10 @@ local.get $3 if (result i32) local.get $3 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join else - i32.const 7840 + i32.const 8256 end local.get $5 call $~lib/rt/pure/__release @@ -10612,7 +10783,7 @@ call $~lib/rt/pure/__release return end - i32.const 7840 + i32.const 8256 local.set $1 local.get $5 call $~lib/string/String#get:length @@ -10642,7 +10813,7 @@ local.tee $4 if local.get $4 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $2 local.get $1 @@ -10712,7 +10883,7 @@ local.tee $0 if local.get $0 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $2 local.get $1 @@ -10747,7 +10918,7 @@ local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $0 i32) (param $1 i32) (result i32) @@ -10759,7 +10930,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -10771,7 +10942,7 @@ if local.get $5 call $~lib/rt/pure/__release - i32.const 7840 + i32.const 8256 return end local.get $6 @@ -10790,7 +10961,7 @@ local.get $3 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 7840 + i32.const 8256 end local.get $5 call $~lib/rt/pure/__release @@ -10798,7 +10969,7 @@ call $~lib/rt/pure/__release return end - i32.const 7840 + i32.const 8256 local.set $1 local.get $5 call $~lib/string/String#get:length @@ -10971,11 +11142,11 @@ i32.shl local.tee $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 local.get $3 i32.store offset=12 @@ -11075,11 +11246,11 @@ i32.shl local.tee $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $0 i32.const 16 i32.const 27 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $4 local.get $3 i32.store offset=12 @@ -11220,7 +11391,7 @@ call $~lib/array/Array.isArray<~lib/array/Array|null> if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -11230,14 +11401,14 @@ call $std/array/Ref#constructor i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.eqz if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $2 end @@ -11252,7 +11423,7 @@ i32.store offset=8 i32.const 1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 i32.const 0 i32.const 1 @@ -11284,7 +11455,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -11296,8 +11467,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1440 - call $~lib/rt/__allocArray + i32.const 1488 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 i32.const 1 @@ -11309,15 +11480,15 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1472 - call $~lib/rt/__allocArray + i32.const 1520 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -11333,15 +11504,15 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1568 - call $~lib/rt/__allocArray + i32.const 1616 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -11357,15 +11528,15 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1600 - call $~lib/rt/__allocArray + i32.const 1648 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -11381,15 +11552,15 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1632 - call $~lib/rt/__allocArray + i32.const 1680 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -11405,15 +11576,15 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1664 - call $~lib/rt/__allocArray + i32.const 1712 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -11434,8 +11605,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 1696 - call $~lib/rt/__allocArray + i32.const 1744 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 i32.const 1 @@ -11447,8 +11618,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 1744 - call $~lib/rt/__allocArray + i32.const 1792 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 i32.const 0 @@ -11456,7 +11627,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -11472,8 +11643,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 1792 - call $~lib/rt/__allocArray + i32.const 1840 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -11481,7 +11652,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -11497,8 +11668,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 1840 - call $~lib/rt/__allocArray + i32.const 1888 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -11506,7 +11677,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -11522,8 +11693,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 1888 - call $~lib/rt/__allocArray + i32.const 1936 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.const 0 @@ -11531,7 +11702,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -11547,8 +11718,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 1936 - call $~lib/rt/__allocArray + i32.const 1984 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -11556,7 +11727,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -11578,7 +11749,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -11588,7 +11759,7 @@ call $std/array/internalCapacity if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -11605,7 +11776,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 102 i32.const 3 call $~lib/builtins/abort @@ -11617,7 +11788,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -11629,7 +11800,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -11641,7 +11812,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -11651,7 +11822,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -11663,7 +11834,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -11679,7 +11850,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -11691,7 +11862,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -11704,7 +11875,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -11720,7 +11891,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -11732,7 +11903,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -11745,7 +11916,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -11758,7 +11929,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -11774,7 +11945,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 127 i32.const 3 call $~lib/builtins/abort @@ -11786,7 +11957,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 128 i32.const 3 call $~lib/builtins/abort @@ -11799,7 +11970,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -11812,7 +11983,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -11825,7 +11996,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 131 i32.const 3 call $~lib/builtins/abort @@ -11835,7 +12006,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 @@ -11854,7 +12025,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 139 i32.const 3 call $~lib/builtins/abort @@ -11875,7 +12046,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -11887,7 +12058,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -11899,7 +12070,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -11909,8 +12080,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2032 - call $~lib/rt/__allocArray + i32.const 2080 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 call $~lib/array/Array#concat @@ -11921,7 +12092,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -11934,7 +12105,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -11947,7 +12118,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -11960,7 +12131,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -11986,7 +12157,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -11998,7 +12169,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -12010,7 +12181,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -12023,7 +12194,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -12036,7 +12207,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -12049,7 +12220,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -12062,7 +12233,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -12075,7 +12246,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -12090,7 +12261,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 174 i32.const 3 call $~lib/builtins/abort @@ -12099,14 +12270,14 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2048 - call $~lib/rt/__allocArray + i32.const 2112 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -12124,7 +12295,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -12134,7 +12305,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 185 i32.const 3 call $~lib/builtins/abort @@ -12151,8 +12322,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2064 - call $~lib/rt/__allocArray + i32.const 2144 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -12163,8 +12334,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2112 - call $~lib/rt/__allocArray + i32.const 2192 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $22 i32.const 0 @@ -12172,7 +12343,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 192 i32.const 3 call $~lib/builtins/abort @@ -12181,8 +12352,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2160 - call $~lib/rt/__allocArray + i32.const 2240 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $0 @@ -12196,8 +12367,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2208 - call $~lib/rt/__allocArray + i32.const 2288 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $24 i32.const 0 @@ -12205,7 +12376,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 194 i32.const 3 call $~lib/builtins/abort @@ -12214,8 +12385,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2256 - call $~lib/rt/__allocArray + i32.const 2336 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $0 local.get $1 @@ -12229,8 +12400,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2304 - call $~lib/rt/__allocArray + i32.const 2384 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $17 i32.const 0 @@ -12238,7 +12409,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 196 i32.const 3 call $~lib/builtins/abort @@ -12247,8 +12418,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2352 - call $~lib/rt/__allocArray + i32.const 2432 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12261,8 +12432,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2400 - call $~lib/rt/__allocArray + i32.const 2480 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $19 i32.const 0 @@ -12270,7 +12441,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -12279,8 +12450,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2448 - call $~lib/rt/__allocArray + i32.const 2528 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12293,8 +12464,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2496 - call $~lib/rt/__allocArray + i32.const 2576 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $13 i32.const 0 @@ -12302,7 +12473,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -12311,8 +12482,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2544 - call $~lib/rt/__allocArray + i32.const 2624 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12325,8 +12496,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2592 - call $~lib/rt/__allocArray + i32.const 2672 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $15 i32.const 0 @@ -12334,7 +12505,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 202 i32.const 3 call $~lib/builtins/abort @@ -12343,8 +12514,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2640 - call $~lib/rt/__allocArray + i32.const 2720 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12357,8 +12528,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2688 - call $~lib/rt/__allocArray + i32.const 2768 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -12366,7 +12537,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 204 i32.const 3 call $~lib/builtins/abort @@ -12375,8 +12546,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2736 - call $~lib/rt/__allocArray + i32.const 2816 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12389,8 +12560,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2784 - call $~lib/rt/__allocArray + i32.const 2864 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 i32.const 0 @@ -12398,7 +12569,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 206 i32.const 3 call $~lib/builtins/abort @@ -12407,8 +12578,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2832 - call $~lib/rt/__allocArray + i32.const 2912 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12421,8 +12592,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2880 - call $~lib/rt/__allocArray + i32.const 2960 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 i32.const 0 @@ -12430,7 +12601,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 208 i32.const 3 call $~lib/builtins/abort @@ -12439,8 +12610,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2928 - call $~lib/rt/__allocArray + i32.const 3008 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12453,8 +12624,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2976 - call $~lib/rt/__allocArray + i32.const 3056 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 i32.const 0 @@ -12462,7 +12633,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 210 i32.const 3 call $~lib/builtins/abort @@ -12471,8 +12642,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3024 - call $~lib/rt/__allocArray + i32.const 3104 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release @@ -12485,8 +12656,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3072 - call $~lib/rt/__allocArray + i32.const 3152 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -12494,7 +12665,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 212 i32.const 3 call $~lib/builtins/abort @@ -12503,8 +12674,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3120 - call $~lib/rt/__allocArray + i32.const 3200 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $20 local.get $0 @@ -12518,8 +12689,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3168 - call $~lib/rt/__allocArray + i32.const 3248 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -12527,7 +12698,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 214 i32.const 3 call $~lib/builtins/abort @@ -12593,7 +12764,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -12605,7 +12776,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 223 i32.const 3 call $~lib/builtins/abort @@ -12618,7 +12789,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 224 i32.const 3 call $~lib/builtins/abort @@ -12631,7 +12802,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -12644,7 +12815,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 226 i32.const 3 call $~lib/builtins/abort @@ -12657,7 +12828,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -12673,7 +12844,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -12685,7 +12856,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 232 i32.const 3 call $~lib/builtins/abort @@ -12698,7 +12869,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 233 i32.const 3 call $~lib/builtins/abort @@ -12711,7 +12882,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -12724,7 +12895,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -12737,7 +12908,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 236 i32.const 3 call $~lib/builtins/abort @@ -12750,7 +12921,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -12764,7 +12935,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 246 i32.const 3 call $~lib/builtins/abort @@ -12776,7 +12947,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 247 i32.const 3 call $~lib/builtins/abort @@ -12788,7 +12959,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 248 i32.const 3 call $~lib/builtins/abort @@ -12801,7 +12972,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 249 i32.const 3 call $~lib/builtins/abort @@ -12814,7 +12985,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 250 i32.const 3 call $~lib/builtins/abort @@ -12827,7 +12998,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 251 i32.const 3 call $~lib/builtins/abort @@ -12840,7 +13011,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 252 i32.const 3 call $~lib/builtins/abort @@ -12854,7 +13025,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -12866,7 +13037,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 257 i32.const 3 call $~lib/builtins/abort @@ -12878,7 +13049,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 258 i32.const 3 call $~lib/builtins/abort @@ -12891,7 +13062,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 259 i32.const 3 call $~lib/builtins/abort @@ -12904,7 +13075,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 260 i32.const 3 call $~lib/builtins/abort @@ -12917,7 +13088,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 261 i32.const 3 call $~lib/builtins/abort @@ -12932,7 +13103,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 269 i32.const 3 call $~lib/builtins/abort @@ -12944,7 +13115,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -12957,7 +13128,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 271 i32.const 3 call $~lib/builtins/abort @@ -12970,7 +13141,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 272 i32.const 3 call $~lib/builtins/abort @@ -12983,7 +13154,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 273 i32.const 3 call $~lib/builtins/abort @@ -13005,7 +13176,7 @@ global.get $std/array/i if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 283 i32.const 3 call $~lib/builtins/abort @@ -13021,7 +13192,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 286 i32.const 3 call $~lib/builtins/abort @@ -13037,7 +13208,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -13053,7 +13224,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 292 i32.const 3 call $~lib/builtins/abort @@ -13069,7 +13240,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -13085,7 +13256,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 298 i32.const 3 call $~lib/builtins/abort @@ -13101,7 +13272,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -13117,7 +13288,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 304 i32.const 3 call $~lib/builtins/abort @@ -13133,7 +13304,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 307 i32.const 3 call $~lib/builtins/abort @@ -13149,7 +13320,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 310 i32.const 3 call $~lib/builtins/abort @@ -13158,8 +13329,8 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 3216 - call $~lib/rt/__allocArray + i32.const 3296 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 local.set $0 @@ -13211,7 +13382,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 312 i32.const 3 call $~lib/builtins/abort @@ -13220,8 +13391,8 @@ i32.const 1 i32.const 3 i32.const 10 - i32.const 3248 - call $~lib/rt/__allocArray + i32.const 3328 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 local.set $0 @@ -13273,7 +13444,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 313 i32.const 3 call $~lib/builtins/abort @@ -13291,7 +13462,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 320 i32.const 3 call $~lib/builtins/abort @@ -13305,7 +13476,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -13317,7 +13488,7 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 326 i32.const 3 call $~lib/builtins/abort @@ -13329,7 +13500,7 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 329 i32.const 3 call $~lib/builtins/abort @@ -13343,7 +13514,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 332 i32.const 3 call $~lib/builtins/abort @@ -13357,7 +13528,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 335 i32.const 3 call $~lib/builtins/abort @@ -13371,7 +13542,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 338 i32.const 3 call $~lib/builtins/abort @@ -13385,7 +13556,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 341 i32.const 3 call $~lib/builtins/abort @@ -13399,7 +13570,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -13413,7 +13584,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 347 i32.const 3 call $~lib/builtins/abort @@ -13427,8 +13598,8 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 3280 - call $~lib/rt/__allocArray + i32.const 3360 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 i32.load offset=12 @@ -13476,7 +13647,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 349 i32.const 3 call $~lib/builtins/abort @@ -13490,8 +13661,8 @@ i32.const 1 i32.const 3 i32.const 10 - i32.const 3312 - call $~lib/rt/__allocArray + i32.const 3392 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -13539,7 +13710,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 350 i32.const 3 call $~lib/builtins/abort @@ -13556,7 +13727,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 354 i32.const 3 call $~lib/builtins/abort @@ -13568,7 +13739,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 355 i32.const 3 call $~lib/builtins/abort @@ -13581,7 +13752,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 356 i32.const 3 call $~lib/builtins/abort @@ -13594,7 +13765,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 357 i32.const 3 call $~lib/builtins/abort @@ -13607,8 +13778,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3344 - call $~lib/rt/__allocArray + i32.const 3424 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -13618,8 +13789,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3392 - call $~lib/rt/__allocArray + i32.const 3472 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $36 i32.const 0 @@ -13627,7 +13798,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 364 i32.const 3 call $~lib/builtins/abort @@ -13637,8 +13808,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3440 - call $~lib/rt/__allocArray + i32.const 3520 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $37 i32.const 0 @@ -13646,7 +13817,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -13655,8 +13826,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3456 - call $~lib/rt/__allocArray + i32.const 3552 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $0 @@ -13669,8 +13840,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3504 - call $~lib/rt/__allocArray + i32.const 3600 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $39 i32.const 0 @@ -13678,7 +13849,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 368 i32.const 3 call $~lib/builtins/abort @@ -13688,8 +13859,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3520 - call $~lib/rt/__allocArray + i32.const 3632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $40 i32.const 0 @@ -13697,7 +13868,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 369 i32.const 3 call $~lib/builtins/abort @@ -13706,8 +13877,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3568 - call $~lib/rt/__allocArray + i32.const 3680 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -13719,8 +13890,8 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 3616 - call $~lib/rt/__allocArray + i32.const 3728 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $42 i32.const 0 @@ -13728,7 +13899,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 372 i32.const 3 call $~lib/builtins/abort @@ -13738,8 +13909,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3648 - call $~lib/rt/__allocArray + i32.const 3760 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $43 i32.const 0 @@ -13747,7 +13918,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 373 i32.const 3 call $~lib/builtins/abort @@ -13756,8 +13927,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3680 - call $~lib/rt/__allocArray + i32.const 3792 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -13769,8 +13940,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3728 - call $~lib/rt/__allocArray + i32.const 3840 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $45 i32.const 0 @@ -13778,7 +13949,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 376 i32.const 3 call $~lib/builtins/abort @@ -13788,8 +13959,8 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 3760 - call $~lib/rt/__allocArray + i32.const 3872 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $46 i32.const 0 @@ -13797,7 +13968,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 377 i32.const 3 call $~lib/builtins/abort @@ -13806,8 +13977,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3792 - call $~lib/rt/__allocArray + i32.const 3904 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -13819,8 +13990,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3840 - call $~lib/rt/__allocArray + i32.const 3952 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $48 i32.const 0 @@ -13828,7 +13999,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 380 i32.const 3 call $~lib/builtins/abort @@ -13838,8 +14009,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3872 - call $~lib/rt/__allocArray + i32.const 3984 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $49 i32.const 0 @@ -13847,7 +14018,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 381 i32.const 3 call $~lib/builtins/abort @@ -13856,8 +14027,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3904 - call $~lib/rt/__allocArray + i32.const 4032 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -13869,8 +14040,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3952 - call $~lib/rt/__allocArray + i32.const 4080 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $51 i32.const 0 @@ -13878,7 +14049,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 384 i32.const 3 call $~lib/builtins/abort @@ -13888,8 +14059,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3984 - call $~lib/rt/__allocArray + i32.const 4112 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $52 i32.const 0 @@ -13897,7 +14068,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 385 i32.const 3 call $~lib/builtins/abort @@ -13906,8 +14077,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4016 - call $~lib/rt/__allocArray + i32.const 4160 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -13919,8 +14090,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 4064 - call $~lib/rt/__allocArray + i32.const 4208 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $54 i32.const 0 @@ -13928,7 +14099,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -13938,8 +14109,8 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 4096 - call $~lib/rt/__allocArray + i32.const 4240 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $55 i32.const 0 @@ -13947,7 +14118,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -13956,8 +14127,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4128 - call $~lib/rt/__allocArray + i32.const 4272 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -13969,8 +14140,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 4176 - call $~lib/rt/__allocArray + i32.const 4320 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $57 i32.const 0 @@ -13978,7 +14149,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -13988,8 +14159,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 4208 - call $~lib/rt/__allocArray + i32.const 4352 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $26 i32.const 0 @@ -13997,7 +14168,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -14006,8 +14177,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4240 - call $~lib/rt/__allocArray + i32.const 4400 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -14019,8 +14190,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 4288 - call $~lib/rt/__allocArray + i32.const 4448 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $20 i32.const 0 @@ -14028,7 +14199,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -14038,8 +14209,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 4320 - call $~lib/rt/__allocArray + i32.const 4480 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $21 i32.const 0 @@ -14047,7 +14218,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 397 i32.const 3 call $~lib/builtins/abort @@ -14056,8 +14227,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4352 - call $~lib/rt/__allocArray + i32.const 4528 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -14069,8 +14240,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 4400 - call $~lib/rt/__allocArray + i32.const 4576 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $23 i32.const 0 @@ -14078,7 +14249,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 400 i32.const 3 call $~lib/builtins/abort @@ -14088,8 +14259,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4416 - call $~lib/rt/__allocArray + i32.const 4608 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $24 i32.const 0 @@ -14097,7 +14268,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 401 i32.const 3 call $~lib/builtins/abort @@ -14106,8 +14277,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4464 - call $~lib/rt/__allocArray + i32.const 4656 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -14119,8 +14290,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 4512 - call $~lib/rt/__allocArray + i32.const 4704 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $17 i32.const 0 @@ -14128,7 +14299,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 404 i32.const 3 call $~lib/builtins/abort @@ -14138,8 +14309,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4528 - call $~lib/rt/__allocArray + i32.const 4736 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $18 i32.const 0 @@ -14147,7 +14318,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -14156,8 +14327,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4576 - call $~lib/rt/__allocArray + i32.const 4784 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -14169,8 +14340,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 4624 - call $~lib/rt/__allocArray + i32.const 4832 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $12 i32.const 0 @@ -14178,7 +14349,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 408 i32.const 3 call $~lib/builtins/abort @@ -14188,8 +14359,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4640 - call $~lib/rt/__allocArray + i32.const 4864 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $13 i32.const 0 @@ -14197,7 +14368,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 409 i32.const 3 call $~lib/builtins/abort @@ -14206,8 +14377,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4688 - call $~lib/rt/__allocArray + i32.const 4912 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -14219,8 +14390,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 4736 - call $~lib/rt/__allocArray + i32.const 4960 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $15 i32.const 0 @@ -14228,7 +14399,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 412 i32.const 3 call $~lib/builtins/abort @@ -14238,8 +14409,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4752 - call $~lib/rt/__allocArray + i32.const 4992 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $16 i32.const 0 @@ -14247,7 +14418,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -14256,8 +14427,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4800 - call $~lib/rt/__allocArray + i32.const 5040 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $0 local.get $1 @@ -14270,8 +14441,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 4848 - call $~lib/rt/__allocArray + i32.const 5088 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 i32.const 0 @@ -14279,7 +14450,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -14289,8 +14460,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 4864 - call $~lib/rt/__allocArray + i32.const 5120 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 i32.const 0 @@ -14298,7 +14469,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14307,8 +14478,8 @@ i32.const 0 i32.const 2 i32.const 8 - i32.const 4912 - call $~lib/rt/__allocArray + i32.const 5168 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.const 1 @@ -14317,7 +14488,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 421 i32.const 3 call $~lib/builtins/abort @@ -14327,7 +14498,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 422 i32.const 3 call $~lib/builtins/abort @@ -14337,7 +14508,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $25 i32.load offset=4 @@ -14375,7 +14546,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 427 i32.const 3 call $~lib/builtins/abort @@ -14390,7 +14561,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 428 i32.const 3 call $~lib/builtins/abort @@ -14405,7 +14576,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 429 i32.const 3 call $~lib/builtins/abort @@ -14417,7 +14588,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 431 i32.const 3 call $~lib/builtins/abort @@ -14432,7 +14603,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 432 i32.const 3 call $~lib/builtins/abort @@ -14447,7 +14618,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 433 i32.const 3 call $~lib/builtins/abort @@ -14462,7 +14633,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 434 i32.const 3 call $~lib/builtins/abort @@ -14472,7 +14643,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $28 i32.load offset=4 @@ -14495,7 +14666,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 439 i32.const 3 call $~lib/builtins/abort @@ -14508,8 +14679,8 @@ local.get $33 i32.eqz if - i32.const 5040 - i32.const 1296 + i32.const 5328 + i32.const 1344 i32.const 440 i32.const 10 call $~lib/builtins/abort @@ -14520,7 +14691,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -14532,7 +14703,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 442 i32.const 3 call $~lib/builtins/abort @@ -14544,7 +14715,7 @@ local.tee $3 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 443 i32.const 3 call $~lib/builtins/abort @@ -14557,8 +14728,8 @@ local.get $34 i32.eqz if - i32.const 5040 - i32.const 1296 + i32.const 5328 + i32.const 1344 i32.const 444 i32.const 10 call $~lib/builtins/abort @@ -14569,7 +14740,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 444 i32.const 3 call $~lib/builtins/abort @@ -14694,20 +14865,20 @@ i32.const 3 call $~lib/array/Array#__set global.get $std/array/arr - i32.const 5088 + i32.const 5392 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 457 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5120 + i32.const 5424 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -14715,14 +14886,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 460 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5152 + i32.const 5456 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -14730,14 +14901,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5184 + i32.const 5488 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -14745,7 +14916,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 471 i32.const 3 call $~lib/builtins/abort @@ -14757,14 +14928,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 472 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5216 + i32.const 5520 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -14772,7 +14943,7 @@ i32.eq if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 474 i32.const 3 call $~lib/builtins/abort @@ -14791,7 +14962,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 5248 + i32.const 5552 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -14799,7 +14970,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 487 i32.const 3 call $~lib/builtins/abort @@ -14811,7 +14982,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 488 i32.const 3 call $~lib/builtins/abort @@ -14826,37 +14997,37 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 5280 + i32.const 5584 call $~lib/array/Array#every i32.const 1 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5312 + i32.const 5616 call $~lib/array/Array#every if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5344 + i32.const 5648 call $~lib/array/Array#every i32.const 1 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -14868,18 +15039,18 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 510 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5376 + i32.const 5680 call $~lib/array/Array#every if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 512 i32.const 3 call $~lib/builtins/abort @@ -14898,13 +15069,13 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 5408 + i32.const 5712 call $~lib/array/Array#every i32.const 1 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 525 i32.const 3 call $~lib/builtins/abort @@ -14916,7 +15087,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 526 i32.const 3 call $~lib/builtins/abort @@ -14931,35 +15102,35 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 5440 + i32.const 5744 call $~lib/array/Array#some i32.const 1 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 536 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5472 + i32.const 5776 call $~lib/array/Array#some if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5504 + i32.const 5808 call $~lib/array/Array#some if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 547 i32.const 3 call $~lib/builtins/abort @@ -14971,20 +15142,20 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5536 + i32.const 5840 call $~lib/array/Array#some i32.const 1 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 550 i32.const 3 call $~lib/builtins/abort @@ -15003,11 +15174,11 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 5568 + i32.const 5872 call $~lib/array/Array#some if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -15019,7 +15190,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -15036,14 +15207,14 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5600 + i32.const 5904 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -15052,14 +15223,14 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5632 + i32.const 5936 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -15071,7 +15242,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -15080,14 +15251,14 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5664 + i32.const 5968 call $~lib/array/Array#forEach global.get $std/array/i i32.const 406 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 588 i32.const 3 call $~lib/builtins/abort @@ -15108,14 +15279,14 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5696 + i32.const 6000 call $~lib/array/Array#forEach global.get $std/array/i i32.const 1 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 602 i32.const 3 call $~lib/builtins/abort @@ -15127,7 +15298,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -15142,7 +15313,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 5728 + i32.const 6032 call $~lib/array/Array#forEach global.get $std/array/arr i32.load offset=12 @@ -15150,7 +15321,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -15198,7 +15369,7 @@ i32.const 2 i32.const 9 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 i32.load offset=4 @@ -15232,7 +15403,7 @@ local.get $0 local.get $3 local.get $9 - i32.const 5760 + i32.const 6064 i32.load call_indirect (type $i32_i32_i32_=>_f32) f32.store @@ -15243,7 +15414,7 @@ br $for-loop|039 end end - i32.const 5760 + i32.const 6064 call $~lib/rt/pure/__release local.get $5 i32.load offset=12 @@ -15251,7 +15422,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 642 i32.const 3 call $~lib/builtins/abort @@ -15267,7 +15438,7 @@ f32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 643 i32.const 3 call $~lib/builtins/abort @@ -15276,7 +15447,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5792 + i32.const 6096 call $~lib/array/Array#map call $~lib/rt/pure/__release global.get $std/array/i @@ -15284,7 +15455,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 652 i32.const 3 call $~lib/builtins/abort @@ -15296,7 +15467,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 653 i32.const 3 call $~lib/builtins/abort @@ -15305,7 +15476,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5824 + i32.const 6128 call $~lib/array/Array#map call $~lib/rt/pure/__release global.get $std/array/i @@ -15313,7 +15484,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 660 i32.const 3 call $~lib/builtins/abort @@ -15334,7 +15505,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5856 + i32.const 6160 call $~lib/array/Array#map call $~lib/rt/pure/__release global.get $std/array/i @@ -15342,7 +15513,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 675 i32.const 3 call $~lib/builtins/abort @@ -15354,7 +15525,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 676 i32.const 3 call $~lib/builtins/abort @@ -15371,7 +15542,7 @@ local.get $5 call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 5888 + i32.const 6192 call $~lib/array/Array#filter local.tee $0 i32.load offset=12 @@ -15379,7 +15550,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 686 i32.const 3 call $~lib/builtins/abort @@ -15388,7 +15559,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5920 + i32.const 6224 call $~lib/array/Array#filter call $~lib/rt/pure/__release global.get $std/array/i @@ -15396,7 +15567,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 695 i32.const 3 call $~lib/builtins/abort @@ -15408,7 +15579,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 696 i32.const 3 call $~lib/builtins/abort @@ -15417,7 +15588,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5952 + i32.const 6256 call $~lib/array/Array#filter call $~lib/rt/pure/__release global.get $std/array/i @@ -15425,7 +15596,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 703 i32.const 3 call $~lib/builtins/abort @@ -15446,7 +15617,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 5984 + i32.const 6288 call $~lib/array/Array#filter call $~lib/rt/pure/__release global.get $std/array/i @@ -15454,7 +15625,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 718 i32.const 3 call $~lib/builtins/abort @@ -15466,7 +15637,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 719 i32.const 3 call $~lib/builtins/abort @@ -15483,7 +15654,7 @@ local.get $0 call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 6016 + i32.const 6320 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -15492,14 +15663,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 729 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6048 + i32.const 6352 i32.const 4 call $~lib/array/Array#reduce global.set $std/array/i @@ -15508,39 +15679,39 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 733 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6080 + i32.const 6384 i32.const 0 call $~lib/array/Array#reduce i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 736 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6112 + i32.const 6416 i32.const 0 call $~lib/array/Array#reduce if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 739 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6144 + i32.const 6448 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -15549,7 +15720,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 747 i32.const 3 call $~lib/builtins/abort @@ -15561,14 +15732,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 748 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6176 + i32.const 6480 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -15577,7 +15748,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 750 i32.const 3 call $~lib/builtins/abort @@ -15596,7 +15767,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 6208 + i32.const 6512 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -15605,7 +15776,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 763 i32.const 3 call $~lib/builtins/abort @@ -15617,7 +15788,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 764 i32.const 3 call $~lib/builtins/abort @@ -15632,7 +15803,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 6240 + i32.const 6544 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -15641,14 +15812,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 774 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6272 + i32.const 6576 i32.const 4 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -15657,39 +15828,39 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 778 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6304 + i32.const 6608 i32.const 0 call $~lib/array/Array#reduceRight i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 781 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6336 + i32.const 6640 i32.const 0 call $~lib/array/Array#reduceRight if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 784 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6368 + i32.const 6672 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -15698,7 +15869,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 792 i32.const 3 call $~lib/builtins/abort @@ -15710,14 +15881,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 793 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 6400 + i32.const 6704 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -15726,7 +15897,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 795 i32.const 3 call $~lib/builtins/abort @@ -15745,7 +15916,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 6432 + i32.const 6736 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -15754,7 +15925,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 808 i32.const 3 call $~lib/builtins/abort @@ -15764,7 +15935,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 809 i32.const 3 call $~lib/builtins/abort @@ -15792,30 +15963,30 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 6704 - call $~lib/rt/__allocArray + i32.const 7008 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $17 i32.const 0 global.set $~argumentsLength local.get $17 call $~lib/array/Array#sort - i32.const 6752 + i32.const 7072 call $~lib/rt/pure/__release call $~lib/rt/pure/__release local.get $17 i32.const 8 i32.const 2 i32.const 9 - i32.const 6784 - call $~lib/rt/__allocArray + i32.const 7104 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 898 i32.const 3 call $~lib/builtins/abort @@ -15824,30 +15995,30 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 6832 - call $~lib/rt/__allocArray + i32.const 7168 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $18 i32.const 0 global.set $~argumentsLength local.get $18 call $~lib/array/Array#sort - i32.const 6912 + i32.const 7264 call $~lib/rt/pure/__release call $~lib/rt/pure/__release local.get $18 i32.const 8 i32.const 3 i32.const 10 - i32.const 6944 - call $~lib/rt/__allocArray + i32.const 7296 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 902 i32.const 3 call $~lib/builtins/abort @@ -15856,24 +16027,24 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 7024 - call $~lib/rt/__allocArray + i32.const 7392 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $19 i32.const 0 global.set $~argumentsLength local.get $19 - i32.const 7072 + i32.const 7440 call $~lib/array/Array#sort - i32.const 7072 + i32.const 7440 call $~lib/rt/pure/__release call $~lib/rt/pure/__release local.get $19 i32.const 5 i32.const 2 i32.const 3 - i32.const 7104 - call $~lib/rt/__allocArray + i32.const 7472 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -15881,7 +16052,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 906 i32.const 3 call $~lib/builtins/abort @@ -15890,8 +16061,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 7152 - call $~lib/rt/__allocArray + i32.const 7520 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $12 i32.const 0 @@ -15904,8 +16075,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 7232 - call $~lib/rt/__allocArray + i32.const 7600 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -15913,7 +16084,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 910 i32.const 3 call $~lib/builtins/abort @@ -15922,36 +16093,36 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 7280 - call $~lib/rt/__allocArray + i32.const 7648 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $7 i32.const 1 i32.const 2 i32.const 3 - i32.const 7296 - call $~lib/rt/__allocArray + i32.const 7680 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $13 i32.const 2 i32.const 2 i32.const 3 - i32.const 7328 - call $~lib/rt/__allocArray + i32.const 7712 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $14 i32.const 4 i32.const 2 i32.const 3 - i32.const 7360 - call $~lib/rt/__allocArray + i32.const 7744 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $15 i32.const 4 i32.const 2 i32.const 3 - i32.const 7392 - call $~lib/rt/__allocArray + i32.const 7792 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $11 i32.const 64 @@ -15977,8 +16148,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 7456 - call $~lib/rt/__allocArray + i32.const 7872 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.const 0 @@ -15986,7 +16157,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 930 i32.const 3 call $~lib/builtins/abort @@ -15998,8 +16169,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7488 - call $~lib/rt/__allocArray + i32.const 7904 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -16007,7 +16178,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 933 i32.const 3 call $~lib/builtins/abort @@ -16022,7 +16193,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 936 i32.const 3 call $~lib/builtins/abort @@ -16037,7 +16208,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 939 i32.const 3 call $~lib/builtins/abort @@ -16052,7 +16223,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 942 i32.const 3 call $~lib/builtins/abort @@ -16067,7 +16238,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 945 i32.const 3 call $~lib/builtins/abort @@ -16082,7 +16253,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 948 i32.const 3 call $~lib/builtins/abort @@ -16137,16 +16308,16 @@ call $std/array/createRandomOrderedArray local.set $0 local.get $1 - i32.const 7520 + i32.const 7936 call $std/array/assertSorted local.get $1 - i32.const 7552 + i32.const 7968 call $std/array/assertSorted local.get $0 - i32.const 7584 + i32.const 8000 call $std/array/assertSorted local.get $0 - i32.const 7616 + i32.const 8032 call $std/array/assertSorted local.get $1 call $~lib/rt/pure/__release @@ -16154,28 +16325,28 @@ call $~lib/rt/pure/__release call $std/array/createReverseOrderedNestedArray local.tee $0 - i32.const 7648 + i32.const 8064 call $std/array/assertSorted<~lib/array/Array> local.get $0 call $~lib/rt/pure/__release call $std/array/createReverseOrderedElementsArray local.tee $0 - i32.const 7680 + i32.const 8096 call $std/array/assertSorted<~lib/array/Array> local.get $0 call $~lib/rt/pure/__release i32.const 7 i32.const 2 i32.const 27 - i32.const 7856 - call $~lib/rt/__allocArray + i32.const 8288 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $10 i32.const 7 i32.const 2 i32.const 27 - i32.const 7904 - call $~lib/rt/__allocArray + i32.const 8336 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $9 i32.const 1 @@ -16184,7 +16355,7 @@ local.get $10 call $~lib/rt/pure/__retain local.tee $3 - i32.const 7952 + i32.const 8384 call $~lib/rt/pure/__retain local.tee $4 call $~lib/array/Array<~lib/array/Array>#sort @@ -16255,7 +16426,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -16267,7 +16438,7 @@ call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - i32.const 7952 + i32.const 8384 call $~lib/rt/pure/__release local.get $10 local.get $9 @@ -16275,7 +16446,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 985 i32.const 3 call $~lib/builtins/abort @@ -16299,7 +16470,7 @@ local.set $5 i32.const 0 local.set $7 - i32.const 7840 + i32.const 8256 local.set $3 loop $for-loop|049 local.get $7 @@ -16310,28 +16481,28 @@ local.tee $1 local.tee $0 block $__inlined_func$~lib/string/String#charAt (result i32) - i32.const 7840 + i32.const 8256 call $~lib/math/NativeMath.random - i32.const 6512 + i32.const 6816 call $~lib/string/String#get:length f64.convert_i32_s f64.mul f64.floor i32.trunc_f64_s local.tee $6 - i32.const 6512 + i32.const 6816 call $~lib/string/String#get:length i32.ge_u br_if $__inlined_func$~lib/string/String#charAt drop i32.const 2 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $4 local.get $6 i32.const 1 i32.shl - i32.const 6512 + i32.const 6816 i32.add i32.load16_u i32.store16 @@ -16378,9 +16549,9 @@ i32.const 1 global.set $~argumentsLength local.get $8 - i32.const 8016 + i32.const 8448 call $std/array/assertSorted<~lib/array/Array> - i32.const 8016 + i32.const 8448 call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release @@ -16391,8 +16562,8 @@ i32.const 2 i32.const 0 i32.const 31 - i32.const 8048 - call $~lib/rt/__allocArray + i32.const 8480 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $12 i32.load offset=4 @@ -16400,15 +16571,15 @@ i32.load offset=12 call $~lib/util/string/joinBooleanArray local.set $13 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $13 - i32.const 8176 + i32.const 8608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 994 i32.const 3 call $~lib/builtins/abort @@ -16417,19 +16588,19 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 8224 - call $~lib/rt/__allocArray + i32.const 8656 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 - i32.const 7840 + i32.const 8256 call $~lib/array/Array#join local.tee $8 - i32.const 8576 + i32.const 9008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 995 i32.const 3 call $~lib/builtins/abort @@ -16438,19 +16609,19 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 8608 - call $~lib/rt/__allocArray + i32.const 9040 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 - i32.const 8640 + i32.const 9072 call $~lib/array/Array#join local.tee $9 - i32.const 8576 + i32.const 9008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 996 i32.const 3 call $~lib/builtins/abort @@ -16459,19 +16630,19 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 8672 - call $~lib/rt/__allocArray + i32.const 9104 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 - i32.const 8704 + i32.const 9136 call $~lib/array/Array#join local.tee $6 - i32.const 8736 + i32.const 9168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 997 i32.const 3 call $~lib/builtins/abort @@ -16480,8 +16651,8 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 8800 - call $~lib/rt/__allocArray + i32.const 9248 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $14 i32.load offset=4 @@ -16489,15 +16660,15 @@ i32.load offset=12 call $~lib/util/string/joinFloatArray local.set $15 - i32.const 8864 + i32.const 9328 call $~lib/rt/pure/__release local.get $15 - i32.const 9952 + i32.const 10480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 998 i32.const 3 call $~lib/builtins/abort @@ -16506,19 +16677,19 @@ i32.const 3 i32.const 2 i32.const 27 - i32.const 10080 - call $~lib/rt/__allocArray + i32.const 10624 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 - i32.const 7840 + i32.const 8256 call $~lib/array/Array<~lib/string/String|null>#join local.tee $3 - i32.const 10048 + i32.const 10592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 999 i32.const 3 call $~lib/builtins/abort @@ -16528,7 +16699,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $16 i32.load offset=4 @@ -16546,12 +16717,12 @@ local.get $16 call $~lib/array/Array#join local.tee $1 - i32.const 10160 + i32.const 10720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1001 i32.const 3 call $~lib/builtins/abort @@ -16561,7 +16732,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.load offset=4 @@ -16576,12 +16747,12 @@ local.get $2 call $~lib/array/Array#join local.tee $0 - i32.const 10240 + i32.const 10816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1004 i32.const 3 call $~lib/builtins/abort @@ -16622,93 +16793,93 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 10320 - call $~lib/rt/__allocArray + i32.const 10912 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $21 i32.const 1 i32.const 2 i32.const 3 - i32.const 10336 - call $~lib/rt/__allocArray + i32.const 10944 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $22 i32.const 2 i32.const 2 i32.const 3 - i32.const 10368 - call $~lib/rt/__allocArray + i32.const 10976 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $23 i32.const 4 i32.const 2 i32.const 3 - i32.const 10400 - call $~lib/rt/__allocArray + i32.const 11008 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $24 local.get $21 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $0 local.get $0 - i32.const 7840 + i32.const 8256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1014 i32.const 3 call $~lib/builtins/abort unreachable end local.get $22 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $0 local.set $8 local.get $0 - i32.const 10048 + i32.const 10592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1015 i32.const 3 call $~lib/builtins/abort unreachable end local.get $23 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $0 local.set $7 local.get $0 - i32.const 10432 + i32.const 11056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1016 i32.const 3 call $~lib/builtins/abort unreachable end local.get $24 - i32.const 8144 + i32.const 8576 call $~lib/array/Array#join local.tee $0 local.set $9 local.get $0 - i32.const 10464 + i32.const 11088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1017 i32.const 3 call $~lib/builtins/abort @@ -16717,8 +16888,8 @@ i32.const 3 i32.const 0 i32.const 32 - i32.const 10496 - call $~lib/rt/__allocArray + i32.const 11136 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $11 i32.load offset=4 @@ -16726,15 +16897,15 @@ i32.load offset=12 call $~lib/util/string/joinIntegerArray local.set $17 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $17 - i32.const 10528 + i32.const 11168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1019 i32.const 3 call $~lib/builtins/abort @@ -16743,8 +16914,8 @@ i32.const 3 i32.const 1 i32.const 33 - i32.const 10560 - call $~lib/rt/__allocArray + i32.const 11200 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $18 i32.load offset=4 @@ -16752,15 +16923,15 @@ i32.load offset=12 call $~lib/util/string/joinIntegerArray local.set $19 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $19 - i32.const 10592 + i32.const 11232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1020 i32.const 3 call $~lib/builtins/abort @@ -16769,8 +16940,8 @@ i32.const 3 i32.const 3 i32.const 34 - i32.const 10640 - call $~lib/rt/__allocArray + i32.const 11280 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $12 i32.load offset=4 @@ -16778,15 +16949,15 @@ i32.load offset=12 call $~lib/util/string/joinIntegerArray local.set $13 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $13 - i32.const 10688 + i32.const 11328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1021 i32.const 3 call $~lib/builtins/abort @@ -16795,8 +16966,8 @@ i32.const 4 i32.const 3 i32.const 35 - i32.const 10752 - call $~lib/rt/__allocArray + i32.const 11408 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $14 i32.load offset=4 @@ -16804,15 +16975,15 @@ i32.load offset=12 call $~lib/util/string/joinIntegerArray local.set $15 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $15 - i32.const 10800 + i32.const 11472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1022 i32.const 3 call $~lib/builtins/abort @@ -16821,21 +16992,21 @@ i32.const 7 i32.const 2 i32.const 27 - i32.const 10912 - call $~lib/rt/__allocArray + i32.const 11584 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 - i32.const 8144 + i32.const 8576 call $~lib/array/Array<~lib/string/String|null>#join local.tee $0 local.set $6 local.get $0 - i32.const 10960 + i32.const 11632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1026 i32.const 3 call $~lib/builtins/abort @@ -16844,21 +17015,21 @@ i32.const 4 i32.const 2 i32.const 27 - i32.const 11072 - call $~lib/rt/__allocArray + i32.const 11744 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 - i32.const 8144 + i32.const 8576 call $~lib/array/Array<~lib/string/String|null>#join local.tee $0 local.set $3 local.get $0 - i32.const 11104 + i32.const 11792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1027 i32.const 3 call $~lib/builtins/abort @@ -16868,7 +17039,7 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $26 i32.load offset=4 @@ -16876,16 +17047,16 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 11136 - call $~lib/rt/__allocArray + i32.const 11824 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 2 i32.const 2 i32.const 3 - i32.const 11168 - call $~lib/rt/__allocArray + i32.const 11856 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $26 @@ -16894,15 +17065,15 @@ i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> local.set $16 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $16 - i32.const 11200 + i32.const 11888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1030 i32.const 3 call $~lib/builtins/abort @@ -16912,7 +17083,7 @@ i32.const 2 i32.const 36 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $27 i32.load offset=4 @@ -16920,16 +17091,16 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 11232 - call $~lib/rt/__allocArray + i32.const 11936 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 2 i32.const 0 i32.const 6 - i32.const 11264 - call $~lib/rt/__allocArray + i32.const 11968 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $27 @@ -16938,15 +17109,15 @@ i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> local.set $2 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $2 - i32.const 11200 + i32.const 11888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1033 i32.const 3 call $~lib/builtins/abort @@ -16956,7 +17127,7 @@ i32.const 2 i32.const 38 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $20 i32.load offset=4 @@ -16964,15 +17135,15 @@ i32.const 2 i32.const 37 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.load offset=4 i32.const 1 i32.const 2 i32.const 7 - i32.const 11296 - call $~lib/rt/__allocArray + i32.const 12000 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $0 @@ -16983,15 +17154,15 @@ i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> local.set $0 - i32.const 8144 + i32.const 8576 call $~lib/rt/pure/__release local.get $0 - i32.const 10048 + i32.const 10592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1036 i32.const 3 call $~lib/builtins/abort @@ -17048,7 +17219,7 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 i32.load offset=4 @@ -17056,32 +17227,32 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 11328 - call $~lib/rt/__allocArray + i32.const 12032 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 3 i32.const 2 i32.const 3 - i32.const 11360 - call $~lib/rt/__allocArray + i32.const 12064 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 i32.const 3 i32.const 2 i32.const 3 - i32.const 11392 - call $~lib/rt/__allocArray + i32.const 12096 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=8 local.get $0 i32.const 3 i32.const 2 i32.const 3 - i32.const 11424 - call $~lib/rt/__allocArray + i32.const 12128 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=12 local.get $5 @@ -17092,7 +17263,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1047 i32.const 3 call $~lib/builtins/abort @@ -17112,7 +17283,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1049 i32.const 5 call $~lib/builtins/abort @@ -17129,7 +17300,7 @@ i32.const 2 i32.const 39 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -17137,32 +17308,32 @@ i32.const 1 i32.const 2 i32.const 27 - i32.const 11488 - call $~lib/rt/__allocArray + i32.const 12192 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 3 i32.const 2 i32.const 27 - i32.const 11584 - call $~lib/rt/__allocArray + i32.const 12288 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 i32.const 3 i32.const 2 i32.const 27 - i32.const 11712 - call $~lib/rt/__allocArray + i32.const 12416 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=8 local.get $0 i32.const 1 i32.const 2 i32.const 27 - i32.const 11776 - call $~lib/rt/__allocArray + i32.const 12480 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=12 local.get $4 @@ -17171,8 +17342,8 @@ i32.const 8 i32.const 2 i32.const 27 - i32.const 11808 - call $~lib/rt/__allocArray + i32.const 12512 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $9 local.get $7 @@ -17181,7 +17352,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1055 i32.const 3 call $~lib/builtins/abort @@ -17207,7 +17378,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1057 i32.const 5 call $~lib/builtins/abort @@ -17228,7 +17399,7 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 @@ -17236,16 +17407,16 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 11856 - call $~lib/rt/__allocArray + i32.const 12576 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 0 i32.const 2 i32.const 3 - i32.const 11872 - call $~lib/rt/__allocArray + i32.const 12608 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $1 @@ -17254,7 +17425,7 @@ i32.load offset=12 if i32.const 0 - i32.const 1296 + i32.const 1344 i32.const 1061 i32.const 3 call $~lib/builtins/abort @@ -17299,7 +17470,7 @@ if i32.const 16 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -17316,11 +17487,11 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -17331,7 +17502,7 @@ i32.shl local.tee $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 i32.const 0 local.get $4 @@ -17395,11 +17566,11 @@ local.tee $4 i32.add local.tee $2 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 229 i32.const 60 call $~lib/builtins/abort @@ -17409,7 +17580,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.load offset=4 @@ -17446,7 +17617,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $4 local.get $0 @@ -17557,7 +17728,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.load offset=4 @@ -17620,7 +17791,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -17664,8 +17835,8 @@ local.get $4 ) (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 11888 - i32.const 1088 + i32.const 12640 + i32.const 1104 i32.const 504 i32.const 7 call $~lib/builtins/abort @@ -17680,7 +17851,7 @@ if i32.const 16 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -17697,11 +17868,11 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -17709,7 +17880,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 i32.const 0 local.get $1 @@ -17957,11 +18128,11 @@ local.tee $4 i32.add local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 229 i32.const 60 call $~lib/builtins/abort @@ -17971,7 +18142,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.load offset=4 @@ -18098,8 +18269,8 @@ i32.const 1 i32.lt_s if - i32.const 1984 - i32.const 1088 + i32.const 2032 + i32.const 1104 i32.const 300 i32.const 21 call $~lib/builtins/abort @@ -18173,7 +18344,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $4 local.get $0 @@ -18232,8 +18403,8 @@ i32.const 1 i32.lt_s if - i32.const 1984 - i32.const 1088 + i32.const 2032 + i32.const 1104 i32.const 361 i32.const 21 call $~lib/builtins/abort @@ -18401,7 +18572,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.load offset=4 @@ -18460,7 +18631,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -18638,7 +18809,6 @@ i32.const 2 i32.shl local.tee $2 - i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $4 i32.const 0 @@ -18857,10 +19027,8 @@ br $for-loop|2 end end - call $~lib/rt/tlsf/maybeInitialize local.get $4 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/__free local.get $0 i32.load8_u offset=1 local.set $1 @@ -19164,11 +19332,11 @@ local.tee $5 i32.add local.tee $3 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 229 i32.const 60 call $~lib/builtins/abort @@ -19178,7 +19346,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 i32.load offset=4 @@ -19467,8 +19635,8 @@ i32.const 1 i32.lt_s if - i32.const 1984 - i32.const 1088 + i32.const 2032 + i32.const 1104 i32.const 300 i32.const 21 call $~lib/builtins/abort @@ -19501,7 +19669,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $4 local.get $0 @@ -19566,8 +19734,8 @@ i32.const 1 i32.lt_s if - i32.const 1984 - i32.const 1088 + i32.const 2032 + i32.const 1104 i32.const 361 i32.const 21 call $~lib/builtins/abort @@ -19697,7 +19865,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.load offset=4 @@ -19785,7 +19953,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.load offset=4 @@ -19901,7 +20069,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -19918,13 +20086,13 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $__inlined_func$~lib/rt/__visit_members $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -19935,15 +20103,15 @@ unreachable end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=20 + i32.load offset=24 local.tee $1 local.get $0 - i32.load offset=28 + i32.load offset=32 i32.const 2 i32.shl i32.add @@ -19968,12 +20136,12 @@ end end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=20 + i32.load offset=24 call $~lib/rt/pure/__visit end local.get $2 @@ -19981,7 +20149,7 @@ i32.and if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -19996,7 +20164,7 @@ i32.le_u if i32.const 0 - i32.const 1248 + i32.const 1216 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -20015,13 +20183,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 11928 + i32.const 12680 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) @@ -20244,7 +20412,7 @@ end unreachable end - i32.const 8144 + i32.const 8576 local.set $1 end local.get $0 @@ -20473,7 +20641,7 @@ end unreachable end - i32.const 11952 + i32.const 12704 local.tee $2 local.set $1 end @@ -20492,7 +20660,7 @@ end unreachable end - i32.const 8144 + i32.const 8576 local.set $1 end local.get $0 @@ -20736,7 +20904,7 @@ end unreachable end - i32.const 11984 + i32.const 12736 local.tee $2 local.set $1 end @@ -20755,7 +20923,7 @@ end unreachable end - i32.const 8144 + i32.const 8576 local.set $1 end local.get $0 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 66887d78a3..2438968747 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -22,7 +22,6 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $i64_=>_none (func (param i64))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) @@ -32,268 +31,267 @@ (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 272) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 320) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 384) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 416) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 448) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 480) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 576) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 608) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 640) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 720) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\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 816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 864) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 912) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 960) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 1008) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1024) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1040) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1088) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1136) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1184) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1232) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1280) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1328) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1424) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1472) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1520) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1568) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1712) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1760) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1808) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1856) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1904) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1952) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2048) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2096) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2144) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 2192) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 2224) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f") - (data (i32.const 2256) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 2288) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f") - (data (i32.const 2320) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2368) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2416) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2432) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2480) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2496) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2592) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2624) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 2656) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2704) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2736) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") - (data (i32.const 2768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2816) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 2848) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2880) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2928) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2960) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2992) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3040) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3072) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 3104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3152) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00") - (data (i32.const 3184) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") - (data (i32.const 3216) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3264) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3296) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3328) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3376) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3392) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3488) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3600) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3712) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3728) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3824) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3840) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3888) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3904) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 4016) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 4064) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 4096) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 4128) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 4160) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 4192) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 4224) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 4256) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 4288) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (data (i32.const 4320) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 4352) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") - (data (i32.const 4384) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") - (data (i32.const 4448) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") - (data (i32.const 4480) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") - (data (i32.const 4512) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 4544) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 4576) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00") - (data (i32.const 4640) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00") - (data (i32.const 4672) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00") - (data (i32.const 4704) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00") - (data (i32.const 4736) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00") - (data (i32.const 4768) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00") - (data (i32.const 4800) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00") - (data (i32.const 4832) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00") - (data (i32.const 4864) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00") - (data (i32.const 4896) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00") - (data (i32.const 4928) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00") - (data (i32.const 4960) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00") - (data (i32.const 4992) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00") - (data (i32.const 5024) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00") - (data (i32.const 5056) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") - (data (i32.const 5088) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00!\00\00\00\00\00\00\00") - (data (i32.const 5120) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00") - (data (i32.const 5152) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00#\00\00\00\00\00\00\00") - (data (i32.const 5184) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00$\00\00\00\00\00\00\00") - (data (i32.const 5216) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00%\00\00\00\00\00\00\00") - (data (i32.const 5248) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00&\00\00\00\00\00\00\00") - (data (i32.const 5280) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00") - (data (i32.const 5312) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00(\00\00\00\00\00\00\00") - (data (i32.const 5344) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00)\00\00\00\00\00\00\00") - (data (i32.const 5376) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00*\00\00\00\00\00\00\00") - (data (i32.const 5408) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00+\00\00\00\00\00\00\00") - (data (i32.const 5440) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 5488) "\ac\00\00\00\01\00\00\00\01\00\00\00\ac\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 5680) " \00\00\00\01\00\00\00\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") - (data (i32.const 5728) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00") - (data (i32.const 5760) " \00\00\00\01\00\00\00\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") - (data (i32.const 5808) "@\00\00\00\01\00\00\00\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") - (data (i32.const 5888) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00") - (data (i32.const 5920) "@\00\00\00\01\00\00\00\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") - (data (i32.const 6000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 6048) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00") - (data (i32.const 6080) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 6128) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 6176) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00") - (data (i32.const 6208) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 6256) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6272) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 6304) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00") - (data (i32.const 6336) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 6368) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 6400) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00") - (data (i32.const 6432) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 6464) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 6496) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00") - (data (i32.const 6528) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00") - (data (i32.const 6560) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00") - (data (i32.const 6592) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00") - (data (i32.const 6624) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00") - (data (i32.const 6656) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00") - (data (i32.const 6688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 6720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 6752) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 6784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 6816) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 6832) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\000\1a\00\00P\1a\00\000\1a\00\00p\1a\00\00\90\1a\00\00\b0\1a\00\00\00\00\00\00") - (data (i32.const 6880) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\b0\1a\00\000\1a\00\000\1a\00\00p\1a\00\00P\1a\00\00\90\1a\00\00\00\00\00\00") - (data (i32.const 6928) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00") - (data (i32.const 6960) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 6992) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00") - (data (i32.const 7024) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00") - (data (i32.const 7056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 7088) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 7120) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 7152) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") - (data (i32.const 7200) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 7232) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 7360) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 7424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 7444) "0\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") - (data (i32.const 7856) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 8896) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 8992) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") - (data (i32.const 9024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 9056) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 9088) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 9120) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00") - (data (i32.const 9152) "0\00\00\00\01\00\00\00\01\00\00\000\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 9216) "0\00\00\00\01\00\00\00\00\00\00\000\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") - (data (i32.const 9280) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 9312) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 9344) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 9376) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 9424) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 9456) "\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\00\00\00\01\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00") - (data (i32.const 10736) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10752) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 10784) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 10816) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 10848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00,\002\00") - (data (i32.const 10880) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00") - (data (i32.const 10912) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\01\ff\00") - (data (i32.const 10944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data (i32.const 10976) "\06\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00") - (data (i32.const 11008) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00") - (data (i32.const 11056) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 11104) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00") - (data (i32.const 11168) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 11216) "T\00\00\00\01\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 11328) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\b0\1a\00\000\1a\00\000\1a\00\00p\1a\00\00P\1a\00\00\90\1a\00\00\00\00\00\00") - (data (i32.const 11376) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00") - (data (i32.const 11424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 11456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") - (data (i32.const 11488) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\f0(\00\00\b0,\00\00\00\00\00\00\d0,\00\00") - (data (i32.const 11520) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data (i32.const 11552) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 11584) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 11616) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00") - (data (i32.const 11648) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\02") - (data (i32.const 11680) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\03\04") - (data (i32.const 11712) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 11744) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 11776) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 11808) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data (i32.const 11840) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 11872) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00") - (data (i32.const 11904) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00p.\00\00") - (data (i32.const 11936) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00") - (data (i32.const 11968) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00") - (data (i32.const 12000) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\b0.\00\00\00\00\00\00\d0.\00\00") - (data (i32.const 12032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00") - (data (i32.const 12064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00") - (data (i32.const 12096) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00") - (data (i32.const 12128) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\10/\00\000/\00\00P/\00\00") - (data (i32.const 12160) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00") - (data (i32.const 12192) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\90/\00\00") - (data (i32.const 12224) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00p.\00\00\b0.\00\00\00\00\00\00\d0.\00\00\10/\00\000/\00\00P/\00\00\90/\00\00") - (data (i32.const 12272) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12288) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12304) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 108) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 172) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 236) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 300) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 348) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 412) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 444) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 476) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 508) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 572) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") + (data (i32.const 604) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 636) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 668) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 700) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 748) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 796) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\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 844) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 892) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 940) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 1036) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1068) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1100) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1148) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1196) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1244) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1292) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1340) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1388) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1436) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1484) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1532) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1580) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1628) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1676) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1724) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1772) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1820) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1868) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1916) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1964) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2012) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2060) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2108) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2156) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2204) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 2252) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") + (data (i32.const 2284) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f") + (data (i32.const 2316) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") + (data (i32.const 2348) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f") + (data (i32.const 2380) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2428) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2476) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2508) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2556) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2588) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2636) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2684) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2716) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 2748) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2796) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 2828) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") + (data (i32.const 2860) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2908) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 2940) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2988) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3036) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3068) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 3116) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3164) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3196) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 3228) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3276) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00") + (data (i32.const 3308) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") + (data (i32.const 3356) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3404) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 3436) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3484) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3532) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3564) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3612) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3660) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3692) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3740) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3788) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3820) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3868) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3916) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3948) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3996) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 4044) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4076) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 4124) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4156) "^\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 4284) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") + (data (i32.const 4348) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 4380) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 4412) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 4444) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 4476) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 4508) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") + (data (i32.const 4540) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") + (data (i32.const 4572) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 4604) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 4636) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") + (data (i32.const 4668) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") + (data (i32.const 4700) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") + (data (i32.const 4732) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") + (data (i32.const 4764) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") + (data (i32.const 4796) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") + (data (i32.const 4828) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 4860) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") + (data (i32.const 4892) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00") + (data (i32.const 4924) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00") + (data (i32.const 4956) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00") + (data (i32.const 4988) "\08\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00") + (data (i32.const 5020) "\08\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00") + (data (i32.const 5052) "\08\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00") + (data (i32.const 5084) "\08\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00") + (data (i32.const 5116) "\08\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00") + (data (i32.const 5148) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00") + (data (i32.const 5180) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00") + (data (i32.const 5212) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00") + (data (i32.const 5244) "\08\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00") + (data (i32.const 5276) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00") + (data (i32.const 5308) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00") + (data (i32.const 5340) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") + (data (i32.const 5372) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00!\00\00\00\00\00\00\00") + (data (i32.const 5404) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00") + (data (i32.const 5436) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00#\00\00\00\00\00\00\00") + (data (i32.const 5468) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00$\00\00\00\00\00\00\00") + (data (i32.const 5500) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00%\00\00\00\00\00\00\00") + (data (i32.const 5532) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00&\00\00\00\00\00\00\00") + (data (i32.const 5564) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00") + (data (i32.const 5596) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00(\00\00\00\00\00\00\00") + (data (i32.const 5628) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00)\00\00\00\00\00\00\00") + (data (i32.const 5660) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00*\00\00\00\00\00\00\00") + (data (i32.const 5692) "\08\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00+\00\00\00\00\00\00\00") + (data (i32.const 5724) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 5772) "\ac\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ac\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 5964) " \00\00\00\01\00\00\00\00\00\00\00\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") + (data (i32.const 6028) "\08\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00") + (data (i32.const 6060) " \00\00\00\01\00\00\00\00\00\00\00\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") + (data (i32.const 6124) "@\00\00\00\01\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\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") + (data (i32.const 6220) "\08\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00") + (data (i32.const 6252) "@\00\00\00\01\00\00\00\00\00\00\00\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") + (data (i32.const 6348) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 6396) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00") + (data (i32.const 6428) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 6476) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 6524) "\08\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00") + (data (i32.const 6556) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 6604) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6636) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 6668) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00") + (data (i32.const 6700) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 6748) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 6796) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00") + (data (i32.const 6828) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 6860) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 6892) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00") + (data (i32.const 6924) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00") + (data (i32.const 6956) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00") + (data (i32.const 6988) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00") + (data (i32.const 7020) "\08\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00") + (data (i32.const 7052) "\08\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00") + (data (i32.const 7084) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 7116) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 7148) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00") + (data (i32.const 7180) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00") + (data (i32.const 7212) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 7244) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\c0\1b\00\00\e0\1b\00\00\c0\1b\00\00\00\1c\00\00 \1c\00\00@\1c\00\00\00\00\00\00") + (data (i32.const 7292) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00@\1c\00\00\c0\1b\00\00\c0\1b\00\00\00\1c\00\00\e0\1b\00\00 \1c\00\00\00\00\00\00") + (data (i32.const 7340) "\08\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00") + (data (i32.const 7372) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 7404) "\08\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00") + (data (i32.const 7436) "\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00") + (data (i32.const 7468) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 7500) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 7532) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 7564) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") + (data (i32.const 7612) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 7644) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 7772) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 7836) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 7860) "0\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") + (data (i32.const 8268) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 9324) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 9420) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") + (data (i32.const 9452) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 9484) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 9516) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 9548) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00") + (data (i32.const 9580) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\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 9660) "0\00\00\00\01\00\00\00\00\00\00\00\00\00\00\000\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") + (data (i32.const 9740) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00") + (data (i32.const 9772) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") + (data (i32.const 9804) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") + (data (i32.const 9836) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 9884) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 9920) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 9976) "\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\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00") + (data (i32.const 11324) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11356) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 11388) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 11420) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 11468) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00") + (data (i32.const 11500) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00") + (data (i32.const 11548) "\03\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00") + (data (i32.const 11580) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") + (data (i32.const 11612) "\06\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00") + (data (i32.const 11644) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00") + (data (i32.const 11692) "\18\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data (i32.const 11740) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00") + (data (i32.const 11820) " \00\00\00\01\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 11884) "T\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") + (data (i32.const 11996) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00@\1c\00\00\c0\1b\00\00\c0\1b\00\00\00\1c\00\00\e0\1b\00\00 \1c\00\00\00\00\00\00") + (data (i32.const 12044) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00") + (data (i32.const 12092) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00") + (data (i32.const 12124) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00") + (data (i32.const 12156) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10+\00\00P/\00\00\00\00\00\00p/\00\00") + (data (i32.const 12204) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") + (data (i32.const 12236) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 12268) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 12300) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00") + (data (i32.const 12348) "\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02") + (data (i32.const 12380) "\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04") + (data (i32.const 12412) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 12444) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 12476) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 12508) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") + (data (i32.const 12540) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 12572) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00") + (data (i32.const 12604) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\0001\00\00") + (data (i32.const 12636) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00") + (data (i32.const 12668) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00") + (data (i32.const 12700) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00p1\00\00\00\00\00\00\901\00\00") + (data (i32.const 12732) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00") + (data (i32.const 12764) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00") + (data (i32.const 12796) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00") + (data (i32.const 12828) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\d01\00\00\f01\00\00\102\00\00") + (data (i32.const 12860) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00") + (data (i32.const 12892) "\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00P2\00\00") + (data (i32.const 12924) " \00\00\00\01\00\00\00\00\00\00\00\00\00\00\00 \00\00\0001\00\00p1\00\00\00\00\00\00\901\00\00\d01\00\00\f01\00\00\102\00\00P2\00\00") + (data (i32.const 12988) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13020) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13052) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00") (table $0 57 funcref) (elem (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) @@ -304,7 +302,7 @@ (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 5504)) + (global $std/array/charset i32 (i32.const 5792)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -314,7 +312,7 @@ (global $~lib/util/number/_exp_pow (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 $~lib/heap/__heap_base i32 (i32.const 12360)) + (global $~lib/heap/__heap_base i32 (i32.const 13112)) (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) @@ -405,7 +403,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -432,8 +430,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 277 + i32.const 256 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -447,11 +445,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -459,8 +457,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 279 + i32.const 256 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -513,29 +511,29 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 292 + i32.const 256 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -645,8 +643,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 205 + i32.const 256 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -662,8 +660,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 207 + i32.const 256 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -671,7 +669,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -693,7 +691,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -703,7 +701,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -720,7 +718,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -757,8 +755,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 228 + i32.const 256 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -768,7 +766,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -778,7 +776,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -810,11 +808,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -822,8 +820,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 243 + i32.const 256 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -831,7 +829,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -840,8 +838,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 244 + i32.const 256 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -899,8 +897,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 260 + i32.const 256 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -924,15 +922,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -1001,31 +999,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 128 - i32.const 386 - i32.const 5 + i32.const 256 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -1039,14 +1039,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 128 - i32.const 396 + i32.const 256 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -1078,8 +1078,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 408 + i32.const 256 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -1090,10 +1090,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -1101,9 +1101,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -1119,15 +1119,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -1146,7 +1146,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -1159,127 +1159,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1287,49 +1306,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 176 i32.const 128 + i32.const 256 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1352,7 +1346,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1406,8 +1400,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 338 + i32.const 256 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1471,8 +1465,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 351 + i32.const 256 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1528,7 +1522,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1546,11 +1540,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1614,14 +1608,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 128 - i32.const 365 + i32.const 256 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1635,8 +1631,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1648,14 +1644,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1674,7 +1670,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1686,7 +1682,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1703,136 +1699,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 128 - i32.const 520 + i32.const 256 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 192 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -2070,7 +2047,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2093,7 +2070,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -2106,7 +2083,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -2123,7 +2100,7 @@ if i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2140,7 +2117,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -2158,7 +2135,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -2216,7 +2193,7 @@ if i32.const 4 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2253,7 +2230,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2267,13 +2244,13 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if i32.const 32 - i32.const 336 + i32.const 368 i32.const 18 i32.const 57 call $~lib/builtins/abort @@ -2284,7 +2261,7 @@ i32.shl local.tee $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -2321,7 +2298,7 @@ if i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3642,11 +3619,11 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $2 if @@ -3657,13 +3634,13 @@ end local.get $3 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 local.get $1 @@ -3672,7 +3649,7 @@ local.get $5 i32.const 0 local.get $3 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer local.set $6 local.get $4 local.get $6 @@ -3792,7 +3769,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -4005,7 +3982,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -4113,9 +4090,9 @@ ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 ) (func $std/array/internalCapacity (param $0 i32) (result i32) (local $1 i32) @@ -4141,7 +4118,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -4164,22 +4141,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 128 - i32.const 585 + i32.const 256 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -4187,12 +4153,9 @@ local.get $1 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -4202,6 +4165,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -4209,7 +4203,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -4230,9 +4223,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -4241,7 +4231,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -4259,7 +4249,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -4282,9 +4272,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -4296,41 +4283,86 @@ end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 192 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -4349,7 +4381,7 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u @@ -4370,7 +4402,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $6 local.get $6 local.get $3 @@ -4441,7 +4473,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -4466,7 +4498,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 300 i32.const 21 @@ -4574,7 +4606,7 @@ i32.add local.set $4 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -4590,7 +4622,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $5 @@ -4887,7 +4919,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 361 i32.const 21 @@ -5428,7 +5460,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -5536,7 +5568,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -5602,7 +5634,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -5621,7 +5653,7 @@ local.get $2 i32.eqz if - i32.const 3920 + i32.const 4176 i32.const 80 i32.const 108 i32.const 40 @@ -5689,7 +5721,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -5759,7 +5791,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -5799,7 +5831,7 @@ i32.const 0 i32.lt_s if - i32.const 496 + i32.const 528 i32.const 80 i32.const 120 i32.const 22 @@ -6448,7 +6480,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 625 i32.const 7 call $~lib/builtins/abort @@ -6488,7 +6520,7 @@ i32.const 2 i32.const 9 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $3 local.get $3 @@ -6568,7 +6600,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -6619,7 +6651,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $3 local.get $3 @@ -6738,7 +6770,7 @@ i32.const 2 i32.const 3 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $2 i32.const 0 @@ -7399,7 +7431,7 @@ i32.eqz if i32.const 0 - i32.const 5456 + i32.const 5744 i32.const 1399 i32.const 5 call $~lib/builtins/abort @@ -7503,7 +7535,18 @@ call $~lib/rt/pure/__release ) (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock @@ -7531,7 +7574,6 @@ i32.shl local.set $3 local.get $3 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -7953,7 +7995,7 @@ i32.const 4 i32.eq drop - i32.const 5744 + i32.const 6048 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -8196,7 +8238,6 @@ i32.shl local.set $3 local.get $3 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -8618,7 +8659,7 @@ i32.const 4 i32.eq drop - i32.const 5904 + i32.const 6240 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -8653,7 +8694,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -8896,7 +8937,6 @@ i32.shl local.set $3 local.get $3 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -9291,7 +9331,7 @@ i32.const 0 end drop - i32.const 6064 + i32.const 6416 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -9425,7 +9465,6 @@ i32.shl local.set $3 local.get $3 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -9824,7 +9863,7 @@ i32.const 0 end drop - i32.const 6192 + i32.const 6544 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -10044,7 +10083,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -10075,7 +10114,7 @@ i32.const 0 end drop - i32.const 6416 + i32.const 6816 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.1 end @@ -10117,7 +10156,7 @@ if i32.const 16 i32.const 22 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -10134,7 +10173,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -10152,7 +10191,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -10231,7 +10270,7 @@ i32.const 0 i32.lt_s if - i32.const 496 + i32.const 528 i32.const 80 i32.const 120 i32.const 22 @@ -10539,7 +10578,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -10558,7 +10597,7 @@ local.get $2 i32.eqz if - i32.const 3920 + i32.const 4176 i32.const 80 i32.const 108 i32.const 40 @@ -10659,7 +10698,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -10683,7 +10722,7 @@ if i32.const 16 i32.const 25 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -10700,7 +10739,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -10718,7 +10757,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -10758,7 +10797,7 @@ if i32.const 4 i32.const 24 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -10812,7 +10851,7 @@ i32.const 0 i32.lt_s if - i32.const 496 + i32.const 528 i32.const 80 i32.const 120 i32.const 22 @@ -11113,7 +11152,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -11132,7 +11171,7 @@ local.get $2 i32.eqz if - i32.const 3920 + i32.const 4176 i32.const 80 i32.const 108 i32.const 40 @@ -11233,7 +11272,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -11461,7 +11500,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -11571,7 +11610,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -11586,9 +11625,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -11843,7 +11882,7 @@ drop i32.const 1 drop - i32.const 6944 + i32.const 7360 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 end @@ -12058,7 +12097,7 @@ if i32.const 16 i32.const 29 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -12075,7 +12114,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -12093,7 +12132,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -12134,13 +12173,13 @@ call $~lib/string/String#get:length i32.ge_u if - i32.const 6832 + i32.const 7232 call $~lib/rt/pure/__retain return end i32.const 2 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -12167,7 +12206,7 @@ i32.const 0 i32.eq if - i32.const 6976 + i32.const 7392 local.tee $2 local.get $1 local.tee $3 @@ -12200,7 +12239,7 @@ i32.const 0 i32.eq if - i32.const 6832 + i32.const 7232 call $~lib/rt/pure/__retain local.set $2 local.get $1 @@ -12210,7 +12249,7 @@ end local.get $6 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $7 local.get $7 @@ -12238,7 +12277,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - i32.const 6976 + i32.const 7392 local.get $0 i32.const 0 i32.ne @@ -12261,7 +12300,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 6832 + i32.const 7232 local.set $1 i32.const 0 local.set $2 @@ -12358,7 +12397,7 @@ i32.const 0 i32.lt_s if - i32.const 496 + i32.const 528 i32.const 80 i32.const 120 i32.const 22 @@ -12637,7 +12676,7 @@ i32.load offset=12 i32.ge_u if - i32.const 496 + i32.const 528 i32.const 80 i32.const 104 i32.const 42 @@ -12656,7 +12695,7 @@ local.get $2 i32.eqz if - i32.const 3920 + i32.const 4176 i32.const 80 i32.const 108 i32.const 40 @@ -12757,7 +12796,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -12895,7 +12934,7 @@ drop i32.const 1 drop - i32.const 7008 + i32.const 7424 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end @@ -12982,7 +13021,7 @@ local.get $10 i32.eqz if - i32.const 6832 + i32.const 7232 call $~lib/rt/pure/__retain return end @@ -13004,7 +13043,7 @@ end local.get $10 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $11 local.get $11 local.get $0 @@ -13037,7 +13076,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -13047,8 +13086,8 @@ local.get $3 i32.eqz if - i32.const 7072 - i32.const 7104 + i32.const 7488 + i32.const 7520 local.get $0 i32.load8_u select @@ -13076,7 +13115,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $8 i32.const 0 @@ -13105,8 +13144,8 @@ i32.const 1 i32.shl i32.add - i32.const 7072 - i32.const 7104 + i32.const 7488 + i32.const 7520 local.get $10 select local.get $6 @@ -13156,8 +13195,8 @@ i32.const 1 i32.shl i32.add - i32.const 7072 - i32.const 7104 + i32.const 7488 + i32.const 7520 local.get $10 select local.get $6 @@ -13305,14 +13344,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 7444 + i32.const 7860 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 7444 + i32.const 7860 local.get $7 i32.const 2 i32.shl @@ -13355,7 +13394,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 7444 + i32.const 7860 local.get $10 i32.const 2 i32.shl @@ -13378,7 +13417,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 7444 + i32.const 7860 local.get $1 i32.const 2 i32.shl @@ -13428,7 +13467,7 @@ i32.const 1 i32.shl i32.add - i32.const 7872 + i32.const 8288 local.get $1 i32.wrap_i64 i32.const 255 @@ -13450,7 +13489,7 @@ i32.and if local.get $0 - i32.const 7872 + i32.const 8288 local.get $1 i32.wrap_i64 i32.const 6 @@ -13573,7 +13612,7 @@ i32.const 1 i32.shl i32.add - i32.const 8912 + i32.const 9344 local.get $1 local.get $6 i64.and @@ -13609,7 +13648,7 @@ i32.const 1 i32.shl i32.add - i32.const 8912 + i32.const 9344 local.get $1 local.get $6 local.get $4 @@ -13650,8 +13689,8 @@ i32.gt_s end if - i32.const 7248 - i32.const 7376 + i32.const 7664 + i32.const 7792 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -13660,7 +13699,7 @@ local.get $0 i32.eqz if - i32.const 7440 + i32.const 7856 return end local.get $0 @@ -13689,7 +13728,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -13725,7 +13764,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -13756,7 +13795,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $4 @@ -13875,7 +13914,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -13919,7 +13958,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -14057,8 +14096,8 @@ i32.gt_s end if - i32.const 7248 - i32.const 7376 + i32.const 7664 + i32.const 7792 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -14067,7 +14106,7 @@ local.get $0 i32.eqz if - i32.const 7440 + i32.const 7856 return end i32.const 0 @@ -14083,7 +14122,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -14117,7 +14156,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -14144,7 +14183,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -14233,7 +14272,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -14277,7 +14316,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -14664,7 +14703,7 @@ local.set $22 local.get $18 local.set $21 - i32.const 10328 + i32.const 10848 local.get $13 i32.const 2 i32.shl @@ -14805,7 +14844,7 @@ i32.add global.set $~lib/util/number/_K local.get $10 - i32.const 10328 + i32.const 10848 i32.const 0 local.get $13 i32.sub @@ -15386,14 +15425,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 9456 + i32.const 9976 local.get $14 i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 10152 + i32.const 10672 local.get $14 i32.const 1 i32.shl @@ -15652,12 +15691,11 @@ (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 f64.const 0 f64.eq if - i32.const 9328 + i32.const 9792 return end local.get $0 @@ -15671,11 +15709,11 @@ local.get $0 f64.ne if - i32.const 9360 + i32.const 9824 return end - i32.const 9392 - i32.const 9440 + i32.const 9856 + i32.const 9904 local.get $0 f64.const 0 f64.lt @@ -15683,32 +15721,22 @@ call $~lib/rt/pure/__retain return end - i32.const 28 + i32.const 9920 + local.get $0 + call $~lib/util/number/dtoa_core i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc local.set $1 local.get $1 - local.get $0 - call $~lib/util/number/dtoa_core + i32.const 1 + call $~lib/rt/pure/__new local.set $2 local.get $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end + i32.const 9920 local.get $1 - i32.const 0 + call $~lib/memory/memory.copy local.get $2 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/tlsf/__free - local.get $3 + call $~lib/rt/pure/__retain ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) @@ -15802,7 +15830,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -15837,7 +15865,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $8 i32.const 0 @@ -15982,7 +16010,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -15999,7 +16027,7 @@ local.get $4 call $~lib/rt/pure/__retain else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -16069,7 +16097,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $12 i32.const 0 local.set $4 @@ -16225,7 +16253,7 @@ return ) (func $std/array/Ref#toString (param $0 i32) (result i32) - i32.const 10544 + i32.const 11088 ) (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -16249,7 +16277,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -16283,7 +16311,7 @@ local.get $5 call $std/array/Ref#toString else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -16293,7 +16321,7 @@ local.get $4 return end - i32.const 6832 + i32.const 7232 local.set $7 local.get $2 call $~lib/string/String#get:length @@ -16497,7 +16525,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -16531,7 +16559,7 @@ local.get $5 call $std/array/Ref#toString else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -16541,7 +16569,7 @@ local.get $4 return end - i32.const 6832 + i32.const 7232 local.set $7 local.get $2 call $~lib/string/String#get:length @@ -16725,7 +16753,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -16848,7 +16876,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -16892,7 +16920,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -17015,7 +17043,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -17102,7 +17130,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -17146,7 +17174,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -17269,7 +17297,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) @@ -17387,14 +17415,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 7444 + i32.const 7860 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 7444 + i32.const 7860 local.get $11 i32.const 2 i32.shl @@ -17416,14 +17444,14 @@ i64.shl i64.or i64.store - i32.const 7444 + i32.const 7860 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 7444 + i32.const 7860 local.get $9 i32.const 2 i32.shl @@ -17473,8 +17501,8 @@ i32.gt_s end if - i32.const 7248 - i32.const 7376 + i32.const 7664 + i32.const 7792 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -17485,7 +17513,7 @@ i64.ne i32.eqz if - i32.const 7440 + i32.const 7856 return end i32.const 0 @@ -17509,7 +17537,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $7 @@ -17533,7 +17561,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -17569,7 +17597,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $3 @@ -17594,7 +17622,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -17713,7 +17741,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -17757,7 +17785,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -17880,7 +17908,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) @@ -17903,8 +17931,8 @@ i32.gt_s end if - i32.const 7248 - i32.const 7376 + i32.const 7664 + i32.const 7792 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -17915,7 +17943,7 @@ i64.ne i32.eqz if - i32.const 7440 + i32.const 7856 return end local.get $0 @@ -17953,7 +17981,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $8 @@ -17979,7 +18007,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -18017,7 +18045,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $4 @@ -18044,7 +18072,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $0 @@ -18193,7 +18221,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -18239,7 +18267,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -18362,12 +18390,12 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array<~lib/string/String|null>#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -18392,7 +18420,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -18426,7 +18454,7 @@ local.get $5 call $~lib/array/Array#toString else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -18436,7 +18464,7 @@ local.get $4 return end - i32.const 6832 + i32.const 7232 local.set $7 local.get $2 call $~lib/string/String#get:length @@ -18620,7 +18648,7 @@ ) (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -18707,7 +18735,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -18751,7 +18779,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -18874,7 +18902,7 @@ ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -18899,7 +18927,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -18933,7 +18961,7 @@ local.get $5 call $~lib/array/Array#toString else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -18943,7 +18971,7 @@ local.get $4 return end - i32.const 6832 + i32.const 7232 local.set $7 local.get $2 call $~lib/string/String#get:length @@ -19127,12 +19155,12 @@ ) (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/array/Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -19157,7 +19185,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -19191,7 +19219,7 @@ local.get $5 call $~lib/array/Array#toString else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -19201,7 +19229,7 @@ local.get $4 return end - i32.const 6832 + i32.const 7232 local.set $7 local.get $2 call $~lib/string/String#get:length @@ -19385,7 +19413,7 @@ ) (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -19410,7 +19438,7 @@ i32.const 0 i32.lt_s if - i32.const 6832 + i32.const 7232 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -19444,7 +19472,7 @@ local.get $5 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 6832 + i32.const 7232 end local.set $4 local.get $2 @@ -19454,7 +19482,7 @@ local.get $4 return end - i32.const 6832 + i32.const 7232 local.set $7 local.get $2 call $~lib/string/String#get:length @@ -19638,7 +19666,7 @@ ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) @@ -19705,11 +19733,11 @@ local.set $7 local.get $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $9 local.get $9 local.get $3 @@ -19840,11 +19868,11 @@ local.set $7 local.get $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 16 i32.const 27 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $9 local.get $9 local.get $3 @@ -20022,7 +20050,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -20037,7 +20065,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -20052,7 +20080,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -20064,19 +20092,19 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 400 + i32.const 432 call $~lib/array/Array.isArray<~lib/string/String> i32.eqz i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -20087,7 +20115,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -20100,8 +20128,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 432 - call $~lib/rt/__allocArray + i32.const 464 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $0 local.get $0 @@ -20114,8 +20142,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 464 - call $~lib/rt/__allocArray + i32.const 496 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -20123,7 +20151,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -20139,8 +20167,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 560 - call $~lib/rt/__allocArray + i32.const 592 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -20148,7 +20176,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -20164,8 +20192,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 592 - call $~lib/rt/__allocArray + i32.const 624 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -20173,7 +20201,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -20189,8 +20217,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 624 - call $~lib/rt/__allocArray + i32.const 656 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 i32.const 0 @@ -20198,7 +20226,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -20214,8 +20242,8 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 656 - call $~lib/rt/__allocArray + i32.const 688 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 i32.const 0 @@ -20223,7 +20251,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -20244,8 +20272,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 688 - call $~lib/rt/__allocArray + i32.const 720 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $5 @@ -20258,8 +20286,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 736 - call $~lib/rt/__allocArray + i32.const 768 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -20267,7 +20295,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -20283,8 +20311,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 784 - call $~lib/rt/__allocArray + i32.const 816 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -20292,7 +20320,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -20308,8 +20336,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 832 - call $~lib/rt/__allocArray + i32.const 864 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 i32.const 0 @@ -20317,7 +20345,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -20333,8 +20361,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 880 - call $~lib/rt/__allocArray + i32.const 912 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -20342,7 +20370,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -20358,8 +20386,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 928 - call $~lib/rt/__allocArray + i32.const 960 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.const 0 @@ -20367,7 +20395,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -20392,7 +20420,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -20405,7 +20433,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -20423,7 +20451,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 102 i32.const 3 call $~lib/builtins/abort @@ -20436,7 +20464,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -20449,7 +20477,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -20464,7 +20492,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -20477,7 +20505,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -20490,7 +20518,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -20507,7 +20535,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -20520,7 +20548,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -20534,7 +20562,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -20551,7 +20579,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -20564,7 +20592,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -20578,7 +20606,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -20592,7 +20620,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -20609,7 +20637,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 127 i32.const 3 call $~lib/builtins/abort @@ -20622,7 +20650,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 128 i32.const 3 call $~lib/builtins/abort @@ -20636,7 +20664,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -20650,7 +20678,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -20664,7 +20692,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 131 i32.const 3 call $~lib/builtins/abort @@ -20674,7 +20702,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $1 @@ -20702,7 +20730,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 139 i32.const 3 call $~lib/builtins/abort @@ -20725,7 +20753,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -20738,7 +20766,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -20751,7 +20779,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -20761,8 +20789,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 1024 - call $~lib/rt/__allocArray + i32.const 1056 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 call $~lib/array/Array#concat @@ -20774,7 +20802,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -20788,7 +20816,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -20802,7 +20830,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -20816,7 +20844,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -20845,7 +20873,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -20858,7 +20886,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -20871,7 +20899,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -20885,7 +20913,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -20899,7 +20927,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -20913,7 +20941,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -20927,7 +20955,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -20941,7 +20969,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -20957,7 +20985,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 174 i32.const 3 call $~lib/builtins/abort @@ -20966,8 +20994,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 1040 - call $~lib/rt/__allocArray + i32.const 1088 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $2 local.get $2 @@ -20977,7 +21005,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -20998,7 +21026,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -21011,7 +21039,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 185 i32.const 3 call $~lib/builtins/abort @@ -21028,8 +21056,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1056 - call $~lib/rt/__allocArray + i32.const 1120 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $3 local.get $3 @@ -21041,8 +21069,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1104 - call $~lib/rt/__allocArray + i32.const 1168 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -21050,7 +21078,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 192 i32.const 3 call $~lib/builtins/abort @@ -21059,8 +21087,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1152 - call $~lib/rt/__allocArray + i32.const 1216 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $4 local.get $3 @@ -21076,8 +21104,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1200 - call $~lib/rt/__allocArray + i32.const 1264 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 i32.const 0 @@ -21085,7 +21113,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 194 i32.const 3 call $~lib/builtins/abort @@ -21094,8 +21122,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1248 - call $~lib/rt/__allocArray + i32.const 1312 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -21111,8 +21139,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1296 - call $~lib/rt/__allocArray + i32.const 1360 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 i32.const 0 @@ -21120,7 +21148,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 196 i32.const 3 call $~lib/builtins/abort @@ -21129,8 +21157,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1344 - call $~lib/rt/__allocArray + i32.const 1408 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $3 @@ -21146,8 +21174,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1392 - call $~lib/rt/__allocArray + i32.const 1456 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 i32.const 0 @@ -21155,7 +21183,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -21164,8 +21192,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1440 - call $~lib/rt/__allocArray + i32.const 1504 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $8 local.get $3 @@ -21181,8 +21209,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1488 - call $~lib/rt/__allocArray + i32.const 1552 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $11 i32.const 0 @@ -21190,7 +21218,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -21199,8 +21227,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1536 - call $~lib/rt/__allocArray + i32.const 1600 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $10 local.get $3 @@ -21216,8 +21244,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1584 - call $~lib/rt/__allocArray + i32.const 1648 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $13 i32.const 0 @@ -21225,7 +21253,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 202 i32.const 3 call $~lib/builtins/abort @@ -21234,8 +21262,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1632 - call $~lib/rt/__allocArray + i32.const 1696 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $12 local.get $3 @@ -21251,8 +21279,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1680 - call $~lib/rt/__allocArray + i32.const 1744 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $15 i32.const 0 @@ -21260,7 +21288,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 204 i32.const 3 call $~lib/builtins/abort @@ -21269,8 +21297,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1728 - call $~lib/rt/__allocArray + i32.const 1792 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $14 local.get $3 @@ -21286,8 +21314,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1776 - call $~lib/rt/__allocArray + i32.const 1840 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $17 i32.const 0 @@ -21295,7 +21323,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 206 i32.const 3 call $~lib/builtins/abort @@ -21304,8 +21332,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1824 - call $~lib/rt/__allocArray + i32.const 1888 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $16 local.get $3 @@ -21321,8 +21349,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1872 - call $~lib/rt/__allocArray + i32.const 1936 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $19 i32.const 0 @@ -21330,7 +21358,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 208 i32.const 3 call $~lib/builtins/abort @@ -21339,8 +21367,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1920 - call $~lib/rt/__allocArray + i32.const 1984 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $18 local.get $3 @@ -21356,8 +21384,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1968 - call $~lib/rt/__allocArray + i32.const 2032 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $21 i32.const 0 @@ -21365,7 +21393,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 210 i32.const 3 call $~lib/builtins/abort @@ -21374,8 +21402,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2016 - call $~lib/rt/__allocArray + i32.const 2080 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $20 local.get $3 @@ -21391,8 +21419,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2064 - call $~lib/rt/__allocArray + i32.const 2128 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $23 i32.const 0 @@ -21400,7 +21428,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 212 i32.const 3 call $~lib/builtins/abort @@ -21409,8 +21437,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2112 - call $~lib/rt/__allocArray + i32.const 2176 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $22 local.get $3 @@ -21426,8 +21454,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2160 - call $~lib/rt/__allocArray + i32.const 2224 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $25 i32.const 0 @@ -21435,7 +21463,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 214 i32.const 3 call $~lib/builtins/abort @@ -21502,7 +21530,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -21515,7 +21543,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 223 i32.const 3 call $~lib/builtins/abort @@ -21529,7 +21557,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 224 i32.const 3 call $~lib/builtins/abort @@ -21543,7 +21571,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -21557,7 +21585,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 226 i32.const 3 call $~lib/builtins/abort @@ -21571,7 +21599,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -21588,7 +21616,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -21601,7 +21629,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 232 i32.const 3 call $~lib/builtins/abort @@ -21615,7 +21643,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 233 i32.const 3 call $~lib/builtins/abort @@ -21629,7 +21657,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -21643,7 +21671,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -21657,7 +21685,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 236 i32.const 3 call $~lib/builtins/abort @@ -21671,7 +21699,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -21686,7 +21714,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 246 i32.const 3 call $~lib/builtins/abort @@ -21699,7 +21727,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 247 i32.const 3 call $~lib/builtins/abort @@ -21712,7 +21740,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 248 i32.const 3 call $~lib/builtins/abort @@ -21726,7 +21754,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 249 i32.const 3 call $~lib/builtins/abort @@ -21740,7 +21768,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 250 i32.const 3 call $~lib/builtins/abort @@ -21754,7 +21782,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 251 i32.const 3 call $~lib/builtins/abort @@ -21768,7 +21796,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 252 i32.const 3 call $~lib/builtins/abort @@ -21783,7 +21811,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -21796,7 +21824,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 257 i32.const 3 call $~lib/builtins/abort @@ -21809,7 +21837,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 258 i32.const 3 call $~lib/builtins/abort @@ -21823,7 +21851,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 259 i32.const 3 call $~lib/builtins/abort @@ -21837,7 +21865,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 260 i32.const 3 call $~lib/builtins/abort @@ -21851,7 +21879,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 261 i32.const 3 call $~lib/builtins/abort @@ -21867,7 +21895,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 269 i32.const 3 call $~lib/builtins/abort @@ -21880,7 +21908,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -21894,7 +21922,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 271 i32.const 3 call $~lib/builtins/abort @@ -21908,7 +21936,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 272 i32.const 3 call $~lib/builtins/abort @@ -21922,7 +21950,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 273 i32.const 3 call $~lib/builtins/abort @@ -21947,7 +21975,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 283 i32.const 3 call $~lib/builtins/abort @@ -21964,7 +21992,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 286 i32.const 3 call $~lib/builtins/abort @@ -21981,7 +22009,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -21998,7 +22026,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 292 i32.const 3 call $~lib/builtins/abort @@ -22015,7 +22043,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -22032,7 +22060,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 298 i32.const 3 call $~lib/builtins/abort @@ -22049,7 +22077,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -22066,7 +22094,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 304 i32.const 3 call $~lib/builtins/abort @@ -22083,7 +22111,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 307 i32.const 3 call $~lib/builtins/abort @@ -22100,7 +22128,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 310 i32.const 3 call $~lib/builtins/abort @@ -22109,8 +22137,8 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 2208 - call $~lib/rt/__allocArray + i32.const 2272 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $22 f32.const nan:0x400000 @@ -22121,7 +22149,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 312 i32.const 3 call $~lib/builtins/abort @@ -22130,8 +22158,8 @@ i32.const 1 i32.const 3 i32.const 10 - i32.const 2240 - call $~lib/rt/__allocArray + i32.const 2304 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $23 f64.const nan:0x8000000000000 @@ -22142,7 +22170,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 313 i32.const 3 call $~lib/builtins/abort @@ -22163,7 +22191,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 320 i32.const 3 call $~lib/builtins/abort @@ -22180,7 +22208,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -22197,7 +22225,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 326 i32.const 3 call $~lib/builtins/abort @@ -22214,7 +22242,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 329 i32.const 3 call $~lib/builtins/abort @@ -22231,7 +22259,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 332 i32.const 3 call $~lib/builtins/abort @@ -22248,7 +22276,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 335 i32.const 3 call $~lib/builtins/abort @@ -22265,7 +22293,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 338 i32.const 3 call $~lib/builtins/abort @@ -22282,7 +22310,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 341 i32.const 3 call $~lib/builtins/abort @@ -22299,7 +22327,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -22316,7 +22344,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 347 i32.const 3 call $~lib/builtins/abort @@ -22325,8 +22353,8 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 2272 - call $~lib/rt/__allocArray + i32.const 2336 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $25 f32.const nan:0x400000 @@ -22335,7 +22363,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 349 i32.const 3 call $~lib/builtins/abort @@ -22344,8 +22372,8 @@ i32.const 1 i32.const 3 i32.const 10 - i32.const 2304 - call $~lib/rt/__allocArray + i32.const 2368 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $20 f64.const nan:0x8000000000000 @@ -22354,7 +22382,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 350 i32.const 3 call $~lib/builtins/abort @@ -22372,7 +22400,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 354 i32.const 3 call $~lib/builtins/abort @@ -22385,7 +22413,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 355 i32.const 3 call $~lib/builtins/abort @@ -22399,7 +22427,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 356 i32.const 3 call $~lib/builtins/abort @@ -22413,7 +22441,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 357 i32.const 3 call $~lib/builtins/abort @@ -22426,8 +22454,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2336 - call $~lib/rt/__allocArray + i32.const 2400 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $25 local.get $25 @@ -22438,8 +22466,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2384 - call $~lib/rt/__allocArray + i32.const 2448 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $22 i32.const 0 @@ -22447,7 +22475,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 364 i32.const 3 call $~lib/builtins/abort @@ -22457,8 +22485,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2432 - call $~lib/rt/__allocArray + i32.const 2496 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $21 i32.const 0 @@ -22466,7 +22494,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -22475,8 +22503,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2448 - call $~lib/rt/__allocArray + i32.const 2528 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $24 local.get $25 @@ -22491,8 +22519,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2496 - call $~lib/rt/__allocArray + i32.const 2576 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $23 i32.const 0 @@ -22500,7 +22528,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 368 i32.const 3 call $~lib/builtins/abort @@ -22510,8 +22538,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2512 - call $~lib/rt/__allocArray + i32.const 2608 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $19 i32.const 0 @@ -22519,7 +22547,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 369 i32.const 3 call $~lib/builtins/abort @@ -22528,8 +22556,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2560 - call $~lib/rt/__allocArray + i32.const 2656 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $3 local.get $25 @@ -22544,8 +22572,8 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 2608 - call $~lib/rt/__allocArray + i32.const 2704 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $18 i32.const 0 @@ -22553,7 +22581,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 372 i32.const 3 call $~lib/builtins/abort @@ -22563,8 +22591,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 2640 - call $~lib/rt/__allocArray + i32.const 2736 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $17 i32.const 0 @@ -22572,7 +22600,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 373 i32.const 3 call $~lib/builtins/abort @@ -22581,8 +22609,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2672 - call $~lib/rt/__allocArray + i32.const 2768 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $2 local.get $25 @@ -22597,8 +22625,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 2720 - call $~lib/rt/__allocArray + i32.const 2816 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $16 i32.const 0 @@ -22606,7 +22634,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 376 i32.const 3 call $~lib/builtins/abort @@ -22616,8 +22644,8 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 2752 - call $~lib/rt/__allocArray + i32.const 2848 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $15 i32.const 0 @@ -22625,7 +22653,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 377 i32.const 3 call $~lib/builtins/abort @@ -22634,8 +22662,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2784 - call $~lib/rt/__allocArray + i32.const 2880 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $0 local.get $25 @@ -22650,8 +22678,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2832 - call $~lib/rt/__allocArray + i32.const 2928 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $14 i32.const 0 @@ -22659,7 +22687,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 380 i32.const 3 call $~lib/builtins/abort @@ -22669,8 +22697,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2864 - call $~lib/rt/__allocArray + i32.const 2960 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $13 i32.const 0 @@ -22678,7 +22706,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 381 i32.const 3 call $~lib/builtins/abort @@ -22687,8 +22715,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2896 - call $~lib/rt/__allocArray + i32.const 3008 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $4 local.get $25 @@ -22703,8 +22731,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2944 - call $~lib/rt/__allocArray + i32.const 3056 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $12 i32.const 0 @@ -22712,7 +22740,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 384 i32.const 3 call $~lib/builtins/abort @@ -22722,8 +22750,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2976 - call $~lib/rt/__allocArray + i32.const 3088 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $11 i32.const 0 @@ -22731,7 +22759,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 385 i32.const 3 call $~lib/builtins/abort @@ -22740,8 +22768,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3008 - call $~lib/rt/__allocArray + i32.const 3136 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $1 local.get $25 @@ -22756,8 +22784,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3056 - call $~lib/rt/__allocArray + i32.const 3184 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 i32.const 0 @@ -22765,7 +22793,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -22775,8 +22803,8 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 3088 - call $~lib/rt/__allocArray + i32.const 3216 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 i32.const 0 @@ -22784,7 +22812,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -22793,8 +22821,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3120 - call $~lib/rt/__allocArray + i32.const 3248 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $25 @@ -22809,8 +22837,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3168 - call $~lib/rt/__allocArray + i32.const 3296 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 i32.const 0 @@ -22818,7 +22846,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -22828,8 +22856,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3200 - call $~lib/rt/__allocArray + i32.const 3328 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 i32.const 0 @@ -22837,7 +22865,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -22846,8 +22874,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3232 - call $~lib/rt/__allocArray + i32.const 3376 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $25 @@ -22862,8 +22890,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3280 - call $~lib/rt/__allocArray + i32.const 3424 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $27 i32.const 0 @@ -22871,7 +22899,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -22881,8 +22909,8 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3312 - call $~lib/rt/__allocArray + i32.const 3456 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $28 i32.const 0 @@ -22890,7 +22918,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 397 i32.const 3 call $~lib/builtins/abort @@ -22899,8 +22927,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3344 - call $~lib/rt/__allocArray + i32.const 3504 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $26 local.get $25 @@ -22915,8 +22943,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3392 - call $~lib/rt/__allocArray + i32.const 3552 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $30 i32.const 0 @@ -22924,7 +22952,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 400 i32.const 3 call $~lib/builtins/abort @@ -22934,8 +22962,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3408 - call $~lib/rt/__allocArray + i32.const 3584 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $31 i32.const 0 @@ -22943,7 +22971,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 401 i32.const 3 call $~lib/builtins/abort @@ -22952,8 +22980,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3456 - call $~lib/rt/__allocArray + i32.const 3632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $29 local.get $25 @@ -22968,8 +22996,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3504 - call $~lib/rt/__allocArray + i32.const 3680 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $33 i32.const 0 @@ -22977,7 +23005,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 404 i32.const 3 call $~lib/builtins/abort @@ -22987,8 +23015,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3520 - call $~lib/rt/__allocArray + i32.const 3712 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $34 i32.const 0 @@ -22996,7 +23024,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -23005,8 +23033,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3568 - call $~lib/rt/__allocArray + i32.const 3760 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $32 local.get $25 @@ -23021,8 +23049,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3616 - call $~lib/rt/__allocArray + i32.const 3808 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $36 i32.const 0 @@ -23030,7 +23058,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 408 i32.const 3 call $~lib/builtins/abort @@ -23040,8 +23068,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3632 - call $~lib/rt/__allocArray + i32.const 3840 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $37 i32.const 0 @@ -23049,7 +23077,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 409 i32.const 3 call $~lib/builtins/abort @@ -23058,8 +23086,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3680 - call $~lib/rt/__allocArray + i32.const 3888 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $35 local.get $25 @@ -23074,8 +23102,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3728 - call $~lib/rt/__allocArray + i32.const 3936 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $39 i32.const 0 @@ -23083,7 +23111,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 412 i32.const 3 call $~lib/builtins/abort @@ -23093,8 +23121,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3744 - call $~lib/rt/__allocArray + i32.const 3968 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $40 i32.const 0 @@ -23102,7 +23130,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -23111,8 +23139,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3792 - call $~lib/rt/__allocArray + i32.const 4016 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $38 local.get $25 @@ -23127,8 +23155,8 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3840 - call $~lib/rt/__allocArray + i32.const 4064 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $42 i32.const 0 @@ -23136,7 +23164,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -23146,8 +23174,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3856 - call $~lib/rt/__allocArray + i32.const 4096 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $43 i32.const 0 @@ -23155,7 +23183,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -23164,8 +23192,8 @@ i32.const 0 i32.const 2 i32.const 8 - i32.const 3904 - call $~lib/rt/__allocArray + i32.const 4144 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $45 local.get $45 @@ -23180,7 +23208,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 421 i32.const 3 call $~lib/builtins/abort @@ -23193,7 +23221,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 422 i32.const 3 call $~lib/builtins/abort @@ -23203,7 +23231,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $44 local.get $44 @@ -23256,7 +23284,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 427 i32.const 3 call $~lib/builtins/abort @@ -23272,7 +23300,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 428 i32.const 3 call $~lib/builtins/abort @@ -23288,7 +23316,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 429 i32.const 3 call $~lib/builtins/abort @@ -23301,7 +23329,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 431 i32.const 3 call $~lib/builtins/abort @@ -23317,7 +23345,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 432 i32.const 3 call $~lib/builtins/abort @@ -23333,7 +23361,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 433 i32.const 3 call $~lib/builtins/abort @@ -23349,7 +23377,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 434 i32.const 3 call $~lib/builtins/abort @@ -23359,7 +23387,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $50 local.get $50 @@ -23393,7 +23421,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 439 i32.const 3 call $~lib/builtins/abort @@ -23407,8 +23435,8 @@ if (result i32) local.get $50 else - i32.const 4032 - i32.const 288 + i32.const 4304 + i32.const 320 i32.const 440 i32.const 10 call $~lib/builtins/abort @@ -23420,7 +23448,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -23433,7 +23461,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 442 i32.const 3 call $~lib/builtins/abort @@ -23448,7 +23476,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 443 i32.const 3 call $~lib/builtins/abort @@ -23462,8 +23490,8 @@ if (result i32) local.get $55 else - i32.const 4032 - i32.const 288 + i32.const 4304 + i32.const 320 i32.const 444 i32.const 10 call $~lib/builtins/abort @@ -23475,7 +23503,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 444 i32.const 3 call $~lib/builtins/abort @@ -23600,7 +23628,7 @@ i32.const 3 call $~lib/array/Array#__set global.get $std/array/arr - i32.const 4080 + i32.const 4368 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23609,14 +23637,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 457 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4112 + i32.const 4400 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23625,14 +23653,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 460 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4144 + i32.const 4432 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23641,14 +23669,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4176 + i32.const 4464 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23657,7 +23685,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 471 i32.const 3 call $~lib/builtins/abort @@ -23670,14 +23698,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 472 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4208 + i32.const 4496 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23686,7 +23714,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 474 i32.const 3 call $~lib/builtins/abort @@ -23705,7 +23733,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 4240 + i32.const 4528 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23714,7 +23742,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 487 i32.const 3 call $~lib/builtins/abort @@ -23727,7 +23755,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 488 i32.const 3 call $~lib/builtins/abort @@ -23742,7 +23770,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 4272 + i32.const 4560 call $~lib/array/Array#every local.set $54 local.get $54 @@ -23751,14 +23779,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4304 + i32.const 4592 call $~lib/array/Array#every local.set $54 local.get $54 @@ -23767,14 +23795,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4336 + i32.const 4624 call $~lib/array/Array#every local.set $54 local.get $54 @@ -23783,7 +23811,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -23796,14 +23824,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 510 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4368 + i32.const 4656 call $~lib/array/Array#every local.set $54 local.get $54 @@ -23812,7 +23840,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 512 i32.const 3 call $~lib/builtins/abort @@ -23831,7 +23859,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 4400 + i32.const 4688 call $~lib/array/Array#every local.set $54 local.get $54 @@ -23840,7 +23868,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 525 i32.const 3 call $~lib/builtins/abort @@ -23853,7 +23881,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 526 i32.const 3 call $~lib/builtins/abort @@ -23868,7 +23896,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 4432 + i32.const 4720 call $~lib/array/Array#some local.set $54 local.get $54 @@ -23877,14 +23905,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 536 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4464 + i32.const 4752 call $~lib/array/Array#some local.set $54 local.get $54 @@ -23893,14 +23921,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4496 + i32.const 4784 call $~lib/array/Array#some local.set $54 local.get $54 @@ -23909,7 +23937,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 547 i32.const 3 call $~lib/builtins/abort @@ -23922,14 +23950,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4528 + i32.const 4816 call $~lib/array/Array#some local.set $54 local.get $54 @@ -23938,7 +23966,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 550 i32.const 3 call $~lib/builtins/abort @@ -23957,7 +23985,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 4560 + i32.const 4848 call $~lib/array/Array#some local.set $54 local.get $54 @@ -23966,7 +23994,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -23979,7 +24007,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -23996,7 +24024,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4592 + i32.const 4880 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 @@ -24004,7 +24032,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -24013,7 +24041,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4624 + i32.const 4912 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 @@ -24021,7 +24049,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -24034,7 +24062,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -24043,7 +24071,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4656 + i32.const 4944 call $~lib/array/Array#forEach global.get $std/array/i i32.const 406 @@ -24051,7 +24079,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 588 i32.const 3 call $~lib/builtins/abort @@ -24072,7 +24100,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4688 + i32.const 4976 call $~lib/array/Array#forEach global.get $std/array/i i32.const 1 @@ -24080,7 +24108,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 602 i32.const 3 call $~lib/builtins/abort @@ -24093,7 +24121,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -24108,7 +24136,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 4720 + i32.const 5008 call $~lib/array/Array#forEach global.get $std/array/arr call $~lib/array/Array#get:length @@ -24117,7 +24145,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -24159,7 +24187,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 4752 + i32.const 5040 call $~lib/array/Array#map local.set $54 local.get $54 @@ -24169,7 +24197,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 642 i32.const 3 call $~lib/builtins/abort @@ -24186,7 +24214,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 643 i32.const 3 call $~lib/builtins/abort @@ -24195,7 +24223,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4784 + i32.const 5072 call $~lib/array/Array#map call $~lib/rt/pure/__release global.get $std/array/i @@ -24204,7 +24232,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 652 i32.const 3 call $~lib/builtins/abort @@ -24217,7 +24245,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 653 i32.const 3 call $~lib/builtins/abort @@ -24226,7 +24254,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4816 + i32.const 5104 call $~lib/array/Array#map call $~lib/rt/pure/__release global.get $std/array/i @@ -24235,7 +24263,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 660 i32.const 3 call $~lib/builtins/abort @@ -24256,7 +24284,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4848 + i32.const 5136 call $~lib/array/Array#map call $~lib/rt/pure/__release global.get $std/array/i @@ -24265,7 +24293,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 675 i32.const 3 call $~lib/builtins/abort @@ -24278,7 +24306,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 676 i32.const 3 call $~lib/builtins/abort @@ -24295,7 +24323,7 @@ local.get $54 call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 4880 + i32.const 5168 call $~lib/array/Array#filter local.set $54 local.get $54 @@ -24305,7 +24333,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 686 i32.const 3 call $~lib/builtins/abort @@ -24314,7 +24342,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4912 + i32.const 5200 call $~lib/array/Array#filter call $~lib/rt/pure/__release global.get $std/array/i @@ -24323,7 +24351,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 695 i32.const 3 call $~lib/builtins/abort @@ -24336,7 +24364,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 696 i32.const 3 call $~lib/builtins/abort @@ -24345,7 +24373,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4944 + i32.const 5232 call $~lib/array/Array#filter call $~lib/rt/pure/__release global.get $std/array/i @@ -24354,7 +24382,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 703 i32.const 3 call $~lib/builtins/abort @@ -24375,7 +24403,7 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4976 + i32.const 5264 call $~lib/array/Array#filter call $~lib/rt/pure/__release global.get $std/array/i @@ -24384,7 +24412,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 718 i32.const 3 call $~lib/builtins/abort @@ -24397,7 +24425,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 719 i32.const 3 call $~lib/builtins/abort @@ -24414,7 +24442,7 @@ local.get $54 call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 5008 + i32.const 5296 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24424,14 +24452,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 729 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5040 + i32.const 5328 i32.const 4 call $~lib/array/Array#reduce global.set $std/array/i @@ -24441,14 +24469,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 733 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5072 + i32.const 5360 i32.const 0 call $~lib/array/Array#reduce local.set $54 @@ -24460,14 +24488,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 736 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5104 + i32.const 5392 i32.const 0 call $~lib/array/Array#reduce local.set $54 @@ -24479,14 +24507,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 739 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5136 + i32.const 5424 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24496,7 +24524,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 747 i32.const 3 call $~lib/builtins/abort @@ -24509,14 +24537,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 748 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5168 + i32.const 5456 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24526,7 +24554,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 750 i32.const 3 call $~lib/builtins/abort @@ -24545,7 +24573,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 5200 + i32.const 5488 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24555,7 +24583,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 763 i32.const 3 call $~lib/builtins/abort @@ -24568,7 +24596,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 764 i32.const 3 call $~lib/builtins/abort @@ -24583,7 +24611,7 @@ call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 5232 + i32.const 5520 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24593,14 +24621,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 774 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5264 + i32.const 5552 i32.const 4 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24610,14 +24638,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 778 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5296 + i32.const 5584 i32.const 0 call $~lib/array/Array#reduceRight local.set $54 @@ -24629,14 +24657,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 781 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5328 + i32.const 5616 i32.const 0 call $~lib/array/Array#reduceRight local.set $54 @@ -24648,14 +24676,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 784 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5360 + i32.const 5648 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24665,7 +24693,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 792 i32.const 3 call $~lib/builtins/abort @@ -24678,14 +24706,14 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 793 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 5392 + i32.const 5680 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24695,7 +24723,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 795 i32.const 3 call $~lib/builtins/abort @@ -24714,7 +24742,7 @@ call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 5424 + i32.const 5712 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24724,7 +24752,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 808 i32.const 3 call $~lib/builtins/abort @@ -24737,7 +24765,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 809 i32.const 3 call $~lib/builtins/abort @@ -24765,8 +24793,8 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 5696 - call $~lib/rt/__allocArray + i32.const 5984 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $50 local.get $50 @@ -24779,8 +24807,8 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 5776 - call $~lib/rt/__allocArray + i32.const 6080 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $51 i32.const 0 @@ -24788,7 +24816,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 898 i32.const 3 call $~lib/builtins/abort @@ -24797,8 +24825,8 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 5824 - call $~lib/rt/__allocArray + i32.const 6144 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $49 local.get $49 @@ -24811,8 +24839,8 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 5936 - call $~lib/rt/__allocArray + i32.const 6272 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $48 i32.const 0 @@ -24820,7 +24848,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 902 i32.const 3 call $~lib/builtins/abort @@ -24829,8 +24857,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 6016 - call $~lib/rt/__allocArray + i32.const 6368 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $47 local.get $47 @@ -24843,8 +24871,8 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 6096 - call $~lib/rt/__allocArray + i32.const 6448 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $44 i32.const 0 @@ -24852,7 +24880,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 906 i32.const 3 call $~lib/builtins/abort @@ -24861,8 +24889,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 6144 - call $~lib/rt/__allocArray + i32.const 6496 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $41 local.get $41 @@ -24875,8 +24903,8 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 6224 - call $~lib/rt/__allocArray + i32.const 6576 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $43 i32.const 0 @@ -24884,7 +24912,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 910 i32.const 3 call $~lib/builtins/abort @@ -24893,36 +24921,36 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 6272 - call $~lib/rt/__allocArray + i32.const 6624 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $42 i32.const 1 i32.const 2 i32.const 3 - i32.const 6288 - call $~lib/rt/__allocArray + i32.const 6656 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $38 i32.const 2 i32.const 2 i32.const 3 - i32.const 6320 - call $~lib/rt/__allocArray + i32.const 6688 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $40 i32.const 4 i32.const 2 i32.const 3 - i32.const 6352 - call $~lib/rt/__allocArray + i32.const 6720 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $39 i32.const 4 i32.const 2 i32.const 3 - i32.const 6384 - call $~lib/rt/__allocArray + i32.const 6768 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $35 i32.const 64 @@ -24948,8 +24976,8 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 6448 - call $~lib/rt/__allocArray + i32.const 6848 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $29 i32.const 0 @@ -24957,7 +24985,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 930 i32.const 3 call $~lib/builtins/abort @@ -24969,8 +24997,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 6480 - call $~lib/rt/__allocArray + i32.const 6880 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $31 i32.const 0 @@ -24978,7 +25006,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 933 i32.const 3 call $~lib/builtins/abort @@ -24993,7 +25021,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 936 i32.const 3 call $~lib/builtins/abort @@ -25008,7 +25036,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 939 i32.const 3 call $~lib/builtins/abort @@ -25023,7 +25051,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 942 i32.const 3 call $~lib/builtins/abort @@ -25038,7 +25066,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 945 i32.const 3 call $~lib/builtins/abort @@ -25053,7 +25081,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 948 i32.const 3 call $~lib/builtins/abort @@ -25108,16 +25136,16 @@ call $std/array/createRandomOrderedArray local.set $29 local.get $31 - i32.const 6512 + i32.const 6912 call $std/array/assertSorted local.get $31 - i32.const 6544 + i32.const 6944 call $std/array/assertSorted local.get $29 - i32.const 6576 + i32.const 6976 call $std/array/assertSorted local.get $29 - i32.const 6608 + i32.const 7008 call $std/array/assertSorted local.get $31 call $~lib/rt/pure/__release @@ -25127,7 +25155,7 @@ call $std/array/createReverseOrderedNestedArray local.set $29 local.get $29 - i32.const 6640 + i32.const 7040 call $std/array/assertSorted<~lib/array/Array> local.get $29 call $~lib/rt/pure/__release @@ -25135,22 +25163,22 @@ call $std/array/createReverseOrderedElementsArray local.set $29 local.get $29 - i32.const 6672 + i32.const 7072 call $std/array/assertSorted> local.get $29 call $~lib/rt/pure/__release i32.const 7 i32.const 2 i32.const 27 - i32.const 6848 - call $~lib/rt/__allocArray + i32.const 7264 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $31 i32.const 7 i32.const 2 i32.const 27 - i32.const 6896 - call $~lib/rt/__allocArray + i32.const 7312 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $34 local.get $31 @@ -25165,7 +25193,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 985 i32.const 3 call $~lib/builtins/abort @@ -25188,19 +25216,19 @@ i32.const 2 i32.const 0 i32.const 31 - i32.const 7040 - call $~lib/rt/__allocArray + i32.const 7456 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $34 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join local.tee $29 - i32.const 7168 + i32.const 7584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 994 i32.const 3 call $~lib/builtins/abort @@ -25209,19 +25237,19 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 7216 - call $~lib/rt/__allocArray + i32.const 7632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $32 - i32.const 6832 + i32.const 7232 call $~lib/array/Array#join local.tee $31 - i32.const 9008 + i32.const 9440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 995 i32.const 3 call $~lib/builtins/abort @@ -25230,19 +25258,19 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 9040 - call $~lib/rt/__allocArray + i32.const 9472 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $37 - i32.const 9072 + i32.const 9504 call $~lib/array/Array#join local.tee $36 - i32.const 9008 + i32.const 9440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 996 i32.const 3 call $~lib/builtins/abort @@ -25251,19 +25279,19 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 9104 - call $~lib/rt/__allocArray + i32.const 9536 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $35 - i32.const 9136 + i32.const 9568 call $~lib/array/Array#join local.tee $54 - i32.const 9168 + i32.const 9600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 997 i32.const 3 call $~lib/builtins/abort @@ -25272,19 +25300,19 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 9232 - call $~lib/rt/__allocArray + i32.const 9680 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $40 - i32.const 9296 + i32.const 9760 call $~lib/array/Array#join local.tee $39 - i32.const 10384 + i32.const 10912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 998 i32.const 3 call $~lib/builtins/abort @@ -25293,19 +25321,19 @@ i32.const 3 i32.const 2 i32.const 27 - i32.const 10512 - call $~lib/rt/__allocArray + i32.const 11056 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $42 - i32.const 6832 + i32.const 7232 call $~lib/array/Array<~lib/string/String|null>#join local.tee $38 - i32.const 10480 + i32.const 11024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 999 i32.const 3 call $~lib/builtins/abort @@ -25315,7 +25343,7 @@ i32.const 2 i32.const 11 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $43 local.get $43 @@ -25338,15 +25366,15 @@ local.get $43 local.set $41 local.get $41 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join local.tee $43 - i32.const 10592 + i32.const 11152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1001 i32.const 3 call $~lib/builtins/abort @@ -25356,7 +25384,7 @@ i32.const 2 i32.const 8 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $44 local.get $44 @@ -25375,15 +25403,15 @@ local.get $44 local.set $47 local.get $47 - i32.const 7136 + i32.const 7552 call $~lib/array/Array#join local.tee $44 - i32.const 10672 + i32.const 11248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1004 i32.const 3 call $~lib/builtins/abort @@ -25424,40 +25452,40 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 10752 - call $~lib/rt/__allocArray + i32.const 11344 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $47 i32.const 1 i32.const 2 i32.const 3 - i32.const 10768 - call $~lib/rt/__allocArray + i32.const 11376 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $43 i32.const 2 i32.const 2 i32.const 3 - i32.const 10800 - call $~lib/rt/__allocArray + i32.const 11408 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $41 i32.const 4 i32.const 2 i32.const 3 - i32.const 10832 - call $~lib/rt/__allocArray + i32.const 11440 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $38 local.get $47 call $~lib/array/Array#toString local.tee $44 - i32.const 6832 + i32.const 7232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1014 i32.const 3 call $~lib/builtins/abort @@ -25466,12 +25494,12 @@ local.get $43 call $~lib/array/Array#toString local.tee $42 - i32.const 10480 + i32.const 11024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1015 i32.const 3 call $~lib/builtins/abort @@ -25480,12 +25508,12 @@ local.get $41 call $~lib/array/Array#toString local.tee $39 - i32.const 10864 + i32.const 11488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1016 i32.const 3 call $~lib/builtins/abort @@ -25494,12 +25522,12 @@ local.get $38 call $~lib/array/Array#toString local.tee $40 - i32.const 10896 + i32.const 11520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1017 i32.const 3 call $~lib/builtins/abort @@ -25508,18 +25536,18 @@ i32.const 3 i32.const 0 i32.const 32 - i32.const 10928 - call $~lib/rt/__allocArray + i32.const 11568 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $35 call $~lib/array/Array#toString local.tee $54 - i32.const 10960 + i32.const 11600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1019 i32.const 3 call $~lib/builtins/abort @@ -25528,18 +25556,18 @@ i32.const 3 i32.const 1 i32.const 33 - i32.const 10992 - call $~lib/rt/__allocArray + i32.const 11632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $37 call $~lib/array/Array#toString local.tee $36 - i32.const 11024 + i32.const 11664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1020 i32.const 3 call $~lib/builtins/abort @@ -25548,18 +25576,18 @@ i32.const 3 i32.const 3 i32.const 34 - i32.const 11072 - call $~lib/rt/__allocArray + i32.const 11712 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $32 call $~lib/array/Array#toString local.tee $31 - i32.const 11120 + i32.const 11760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1021 i32.const 3 call $~lib/builtins/abort @@ -25568,18 +25596,18 @@ i32.const 4 i32.const 3 i32.const 35 - i32.const 11184 - call $~lib/rt/__allocArray + i32.const 11840 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $34 call $~lib/array/Array#toString local.tee $29 - i32.const 11232 + i32.const 11904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1022 i32.const 3 call $~lib/builtins/abort @@ -25588,19 +25616,19 @@ i32.const 7 i32.const 2 i32.const 27 - i32.const 11344 - call $~lib/rt/__allocArray + i32.const 12016 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $49 local.get $49 call $~lib/array/Array<~lib/string/String|null>#toString local.tee $48 - i32.const 11392 + i32.const 12064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1026 i32.const 3 call $~lib/builtins/abort @@ -25609,18 +25637,18 @@ i32.const 4 i32.const 2 i32.const 27 - i32.const 11504 - call $~lib/rt/__allocArray + i32.const 12176 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $50 call $~lib/array/Array<~lib/string/String|null>#toString local.tee $51 - i32.const 11536 + i32.const 12224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1027 i32.const 3 call $~lib/builtins/abort @@ -25630,7 +25658,7 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $33 local.get $33 @@ -25640,16 +25668,16 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 11568 - call $~lib/rt/__allocArray + i32.const 12256 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $30 i32.const 2 i32.const 2 i32.const 3 - i32.const 11600 - call $~lib/rt/__allocArray + i32.const 12288 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $33 @@ -25657,12 +25685,12 @@ local.get $56 call $~lib/array/Array<~lib/array/Array>#toString local.tee $30 - i32.const 11632 + i32.const 12320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1030 i32.const 3 call $~lib/builtins/abort @@ -25672,7 +25700,7 @@ i32.const 2 i32.const 36 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $33 local.get $33 @@ -25682,16 +25710,16 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 11664 - call $~lib/rt/__allocArray + i32.const 12368 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $26 i32.const 2 i32.const 0 i32.const 6 - i32.const 11696 - call $~lib/rt/__allocArray + i32.const 12400 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $33 @@ -25699,12 +25727,12 @@ local.get $57 call $~lib/array/Array<~lib/array/Array>#toString local.tee $26 - i32.const 11632 + i32.const 12320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1033 i32.const 3 call $~lib/builtins/abort @@ -25714,7 +25742,7 @@ i32.const 2 i32.const 38 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $33 local.get $33 @@ -25725,7 +25753,7 @@ i32.const 2 i32.const 37 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $27 local.get $27 @@ -25735,8 +25763,8 @@ i32.const 1 i32.const 2 i32.const 7 - i32.const 11728 - call $~lib/rt/__allocArray + i32.const 12432 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $27 @@ -25746,12 +25774,12 @@ local.get $58 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString local.tee $28 - i32.const 10480 + i32.const 11024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1036 i32.const 3 call $~lib/builtins/abort @@ -25809,7 +25837,7 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $28 local.get $28 @@ -25819,32 +25847,32 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 11760 - call $~lib/rt/__allocArray + i32.const 12464 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $26 i32.const 3 i32.const 2 i32.const 3 - i32.const 11792 - call $~lib/rt/__allocArray + i32.const 12496 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $26 i32.const 3 i32.const 2 i32.const 3 - i32.const 11824 - call $~lib/rt/__allocArray + i32.const 12528 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=8 local.get $26 i32.const 3 i32.const 2 i32.const 3 - i32.const 11856 - call $~lib/rt/__allocArray + i32.const 12560 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=12 local.get $28 @@ -25859,7 +25887,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1047 i32.const 3 call $~lib/builtins/abort @@ -25882,7 +25910,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1049 i32.const 5 call $~lib/builtins/abort @@ -25899,7 +25927,7 @@ i32.const 2 i32.const 39 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $26 local.get $26 @@ -25909,32 +25937,32 @@ i32.const 1 i32.const 2 i32.const 27 - i32.const 11920 - call $~lib/rt/__allocArray + i32.const 12624 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $28 i32.const 3 i32.const 2 i32.const 27 - i32.const 12016 - call $~lib/rt/__allocArray + i32.const 12720 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $28 i32.const 3 i32.const 2 i32.const 27 - i32.const 12144 - call $~lib/rt/__allocArray + i32.const 12848 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=8 local.get $28 i32.const 1 i32.const 2 i32.const 27 - i32.const 12208 - call $~lib/rt/__allocArray + i32.const 12912 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=12 local.get $26 @@ -25945,8 +25973,8 @@ i32.const 8 i32.const 2 i32.const 27 - i32.const 12240 - call $~lib/rt/__allocArray + i32.const 12944 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $63 local.get $62 @@ -25956,7 +25984,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1055 i32.const 3 call $~lib/builtins/abort @@ -25984,7 +26012,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1057 i32.const 5 call $~lib/builtins/abort @@ -26005,7 +26033,7 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $26 local.get $26 @@ -26015,16 +26043,16 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 12288 - call $~lib/rt/__allocArray + i32.const 13008 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store local.get $28 i32.const 0 i32.const 2 i32.const 3 - i32.const 12304 - call $~lib/rt/__allocArray + i32.const 13040 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain i32.store offset=4 local.get $26 @@ -26038,7 +26066,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 320 i32.const 1061 i32.const 3 call $~lib/builtins/abort @@ -26084,7 +26112,7 @@ if i32.const 16 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -26101,7 +26129,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -26119,7 +26147,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -26159,7 +26187,7 @@ if i32.const 16 i32.const 40 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -26383,7 +26411,7 @@ i32.const 0 i32.lt_s if - i32.const 496 + i32.const 528 i32.const 80 i32.const 120 i32.const 22 @@ -26607,7 +26635,7 @@ i32.add local.set $4 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -26623,7 +26651,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $5 @@ -26796,7 +26824,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 300 i32.const 21 @@ -26884,7 +26912,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $2 i32.const 0 @@ -26954,7 +26982,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 361 i32.const 21 @@ -27166,7 +27194,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -27248,7 +27276,7 @@ i32.const 2 i32.const 7 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -27356,7 +27384,7 @@ i32.const 0 i32.eqz drop - i32.const 12320 + i32.const 13072 i32.const 80 i32.const 504 i32.const 7 @@ -27382,7 +27410,7 @@ if i32.const 16 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -27399,7 +27427,7 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 0 i32.shr_u i32.gt_u @@ -27417,7 +27445,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -27457,7 +27485,7 @@ if i32.const 16 i32.const 41 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -27681,7 +27709,7 @@ i32.const 0 i32.lt_s if - i32.const 496 + i32.const 528 i32.const 80 i32.const 120 i32.const 22 @@ -27909,7 +27937,7 @@ i32.add local.set $4 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.const 0 i32.shr_u i32.gt_u @@ -27925,7 +27953,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $5 @@ -28098,7 +28126,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 300 i32.const 21 @@ -28186,7 +28214,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $2 i32.const 0 @@ -28256,7 +28284,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 361 i32.const 21 @@ -28468,7 +28496,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -28550,7 +28578,7 @@ i32.const 0 i32.const 6 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -28773,7 +28801,6 @@ i32.shl local.set $3 local.get $3 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -29144,7 +29171,7 @@ i32.const 0 i32.eqz drop - i32.const 12320 + i32.const 13072 i32.const 80 i32.const 504 i32.const 7 @@ -29165,7 +29192,7 @@ if i32.const 16 i32.const 42 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -29768,7 +29795,7 @@ i32.add local.set $4 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u @@ -29784,7 +29811,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $5 local.get $5 @@ -30125,7 +30152,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 300 i32.const 21 @@ -30214,7 +30241,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $2 i32.const 0 @@ -30287,7 +30314,7 @@ i32.const 1 i32.lt_s if - i32.const 976 + i32.const 1008 i32.const 80 i32.const 361 i32.const 21 @@ -30511,7 +30538,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -30618,7 +30645,7 @@ i32.const 2 i32.const 29 i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.set $6 local.get $6 @@ -30764,7 +30791,7 @@ i32.const 0 i32.eqz drop - i32.const 12320 + i32.const 13072 i32.const 80 i32.const 504 i32.const 7 @@ -30773,7 +30800,7 @@ ) (func $~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) local.get $0 - i32.const 7136 + i32.const 7552 call $~lib/array/Array<~lib/string/String>#join ) (func $~lib/array/Array<~lib/string/String>#__visit_impl (param $0 i32) (param $1 i32) @@ -30853,7 +30880,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -30864,7 +30891,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -30879,7 +30906,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -30896,7 +30923,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -30917,11 +30944,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -30939,14 +30961,14 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) @@ -31899,7 +31921,7 @@ end unreachable end - i32.const 7136 + i32.const 7552 local.set $1 end local.get $0 @@ -32104,7 +32126,7 @@ i32.const 0 end drop - i32.const 12384 + i32.const 13136 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -32128,7 +32150,7 @@ end unreachable end - i32.const 7136 + i32.const 7552 local.set $1 end local.get $0 @@ -32417,7 +32439,7 @@ drop i32.const 1 drop - i32.const 12416 + i32.const 13168 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 end @@ -32441,7 +32463,7 @@ end unreachable end - i32.const 7136 + i32.const 7552 local.set $1 end local.get $0 diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 871090b217..615ce47e6a 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,34 +1,33 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1360) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 1392) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1148) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1276) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1340) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1404) "\08\00\00\00\01") + (data (i32.const 1420) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 1436) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1440 + i32.const 1488 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -46,8 +45,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 277 + i32.const 1296 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -56,18 +55,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 279 + i32.const 1296 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -109,28 +108,28 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 292 + i32.const 1296 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -201,8 +200,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 205 + i32.const 1296 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -215,14 +214,14 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 207 + i32.const 1296 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -238,14 +237,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -260,7 +259,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -288,8 +287,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 228 + i32.const 1296 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -297,14 +296,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -333,33 +332,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 243 + i32.const 1296 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1152 - i32.const 244 + i32.const 1296 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -406,8 +405,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 260 + i32.const 1296 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -425,15 +424,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -471,54 +470,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 + i32.const 1296 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 396 + i32.const 1296 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -534,18 +531,17 @@ i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 408 + i32.const 1296 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -555,23 +551,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -582,93 +579,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1488 + i32.const 0 + i32.store + i32.const 3056 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1488 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1440 - local.set $1 - i32.const 1440 - i32.const 0 - i32.store - i32.const 3008 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1488 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1440 - i32.const 3024 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1440 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1488 + i32.const 3060 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1488 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -694,7 +682,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -725,8 +713,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 338 + i32.const 1296 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -777,8 +765,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 351 + i32.const 1296 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -806,12 +794,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1152 - i32.const 365 + i32.const 1296 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -822,7 +812,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -834,12 +824,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -854,7 +844,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -874,169 +864,179 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1200 - i32.const 1152 + i32.const 1168 + i32.const 1296 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 12 local.get $1 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u select - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 520 + i32.const 1296 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1202,11 +1202,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1440 + i32.const 1488 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1221,7 +1221,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1238,7 +1238,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1423,9 +1423,9 @@ (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.set $3 local.get $1 i32.const 0 @@ -1480,7 +1480,7 @@ select local.tee $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $1 @@ -1499,7 +1499,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1513,13 +1513,13 @@ i32.const 0 i32.store offset=8 i32.const 1 - i32.const 1073741808 + i32.const 1073741820 local.get $1 i32.shr_u i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 18 i32.const 57 call $~lib/builtins/abort @@ -1530,7 +1530,7 @@ i32.shl local.tee $3 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $3 call $~lib/memory/memory.fill @@ -1571,21 +1571,21 @@ (local $9 i32) i32.const 8 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 i32.const 8 call $~lib/memory/memory.fill local.get $0 call $~lib/rt/pure/__retain local.tee $2 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 8 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -1593,17 +1593,17 @@ end local.get $2 i32.const 0 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 8 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -1614,7 +1614,7 @@ i32.eq if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -1622,19 +1622,19 @@ end local.get $2 i32.const 1 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.get $1 call $~lib/rt/pure/__release local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 7 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -1642,19 +1642,19 @@ end local.get $2 i32.const -1 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.get $1 call $~lib/rt/pure/__release local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -1667,14 +1667,14 @@ local.get $1 call $~lib/rt/pure/__release local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -1687,14 +1687,14 @@ local.get $1 call $~lib/rt/pure/__release local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 6 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -1708,14 +1708,14 @@ local.get $1 call $~lib/rt/pure/__release local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -1729,14 +1729,14 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 4 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -1744,18 +1744,18 @@ end local.get $2 i32.const 42 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.set $4 local.get $1 call $~lib/rt/pure/__release local.get $4 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -1765,7 +1765,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -1776,7 +1776,7 @@ i32.const 0 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -1787,7 +1787,7 @@ i32.const 0 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -1798,7 +1798,7 @@ i32.const 0 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -1806,20 +1806,20 @@ end i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor local.set $5 i32.const 16 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $0 i32.const 8 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 - i32.const 1376 + i32.const 1424 i32.const 8 call $~lib/memory/memory.copy local.get $0 @@ -1839,7 +1839,7 @@ call $~lib/rt/pure/__retain i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor @@ -1847,14 +1847,14 @@ local.get $5 i32.load local.tee $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $0 local.set $8 i32.const 12 i32.const 15 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $3 i32.const 0 @@ -1866,20 +1866,20 @@ i32.const 0 i32.store offset=8 local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u local.get $0 local.get $1 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.gt_u i32.or if - i32.const 1040 - i32.const 1408 + i32.const 1056 + i32.const 1456 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -1940,7 +1940,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1955,13 +1955,13 @@ block $switch$1$case$5 block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -1970,7 +1970,7 @@ br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end @@ -1981,7 +1981,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2002,7 +2002,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2021,13 +2021,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1440 + i32.const 1488 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index f92ad73c2a..9d138c1ecf 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -2,31 +2,28 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 352) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 384) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 124) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 252) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 316) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 380) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 412) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 432)) + (global $~lib/heap/__heap_base i32 (i32.const 464)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) @@ -35,7 +32,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -62,8 +59,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 277 + i32.const 272 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -77,11 +74,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -89,8 +86,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 279 + i32.const 272 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -143,29 +140,29 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 292 + i32.const 272 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -275,8 +272,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 205 + i32.const 272 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -292,8 +289,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 207 + i32.const 272 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -301,7 +298,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -323,7 +320,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -333,7 +330,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -350,7 +347,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -387,8 +384,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 228 + i32.const 272 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -398,7 +395,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -408,7 +405,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -440,11 +437,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -452,8 +449,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 243 + i32.const 272 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -461,7 +458,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -470,8 +467,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 244 + i32.const 272 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -529,8 +526,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 260 + i32.const 272 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -554,15 +551,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -631,31 +628,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 + i32.const 272 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -669,14 +668,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 396 + i32.const 272 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -708,8 +707,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 408 + i32.const 272 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -720,10 +719,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -731,9 +730,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -749,15 +748,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -776,7 +775,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -789,127 +788,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -917,49 +935,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 192 i32.const 144 + i32.const 272 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -982,7 +975,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1036,8 +1029,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 338 + i32.const 272 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1101,8 +1094,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 351 + i32.const 272 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1158,7 +1151,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1176,11 +1169,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1244,14 +1237,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 144 - i32.const 365 + i32.const 272 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1265,8 +1260,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1278,14 +1273,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1304,7 +1299,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1316,7 +1311,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1333,136 +1328,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 272 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 520 + i32.const 272 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 144 + i32.const 208 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1700,7 +1676,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1723,7 +1699,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1736,7 +1712,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1746,7 +1722,7 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if i32.const 32 @@ -1758,7 +1734,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 i32.const 0 @@ -1773,9 +1749,9 @@ ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3102,7 +3078,7 @@ local.set $6 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $0 @@ -3315,7 +3291,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3329,7 +3305,7 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u @@ -3346,7 +3322,7 @@ i32.shl local.tee $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -3383,7 +3359,7 @@ if i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3394,11 +3370,11 @@ local.set $0 local.get $0 ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $2 if @@ -3409,13 +3385,13 @@ end local.get $3 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 local.get $1 @@ -3424,7 +3400,7 @@ local.get $5 i32.const 0 local.get $3 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer local.set $6 local.get $4 local.get $6 @@ -3502,7 +3478,7 @@ if i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3549,7 +3525,7 @@ if i32.const 12 i32.const 15 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3566,7 +3542,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u local.get $2 local.get $3 @@ -3577,7 +3553,7 @@ i32.or if i32.const 32 - i32.const 400 + i32.const 432 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -3695,7 +3671,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -3703,7 +3679,7 @@ end local.get $0 i32.const 0 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.set $1 local.get $1 @@ -3713,7 +3689,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -3725,7 +3701,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -3733,7 +3709,7 @@ end local.get $0 i32.const 1 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.set $2 local.get $1 @@ -3747,7 +3723,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -3755,7 +3731,7 @@ end local.get $0 i32.const -1 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.set $2 local.get $1 @@ -3769,7 +3745,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -3791,7 +3767,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -3813,7 +3789,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -3835,7 +3811,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -3857,7 +3833,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3865,7 +3841,7 @@ end local.get $0 i32.const 42 - i32.const 1073741808 + i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.set $2 local.get $1 @@ -3879,7 +3855,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3891,7 +3867,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -3903,7 +3879,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -3915,7 +3891,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -3927,7 +3903,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3939,7 +3915,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3951,7 +3927,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3963,7 +3939,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3976,8 +3952,8 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 368 - call $~lib/rt/__allocArray + i32.const 400 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> @@ -3985,7 +3961,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -3996,7 +3972,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -4010,7 +3986,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -4029,7 +4005,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -4052,12 +4028,9 @@ call $start:std/arraybuffer ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -4096,7 +4069,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -4107,7 +4080,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -4122,7 +4095,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -4139,7 +4112,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -4160,11 +4133,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -4182,14 +4150,14 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 5076b6a957..ac5c557a22 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) @@ -11,32 +11,30 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) - (type $none_=>_i32 (func (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1360) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1424) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 1472) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1148) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1276) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1340) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1404) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1468) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 1532) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1520 + i32.const 1584 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -54,8 +52,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 277 + i32.const 1296 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -64,18 +62,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 279 + i32.const 1296 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -117,28 +115,28 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 292 + i32.const 1296 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -209,8 +207,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 205 + i32.const 1296 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -223,14 +221,14 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 207 + i32.const 1296 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -246,14 +244,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -268,7 +266,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -296,8 +294,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 228 + i32.const 1296 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -305,14 +303,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -341,33 +339,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 243 + i32.const 1296 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1152 - i32.const 244 + i32.const 1296 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -414,8 +412,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 260 + i32.const 1296 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -433,15 +431,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -479,54 +477,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 + i32.const 1296 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 396 + i32.const 1296 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -542,18 +538,17 @@ i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 408 + i32.const 1296 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -563,23 +558,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -590,93 +586,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1584 + i32.const 0 + i32.store + i32.const 3152 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1584 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1520 - local.set $1 - i32.const 1520 - i32.const 0 - i32.store - i32.const 3088 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1520 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1520 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1584 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1520 - i32.const 3104 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1520 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1584 + i32.const 3156 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1584 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -702,7 +689,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -733,8 +720,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 338 + i32.const 1296 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -785,8 +772,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 351 + i32.const 1296 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -814,12 +801,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1152 - i32.const 365 + i32.const 1296 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -830,7 +819,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -842,12 +831,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -862,7 +851,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -882,169 +871,179 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1200 - i32.const 1152 + i32.const 1168 + i32.const 1296 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 12 local.get $1 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u select - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 520 + i32.const 1296 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1052,11 +1051,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1520 + i32.const 1584 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1071,7 +1070,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1088,7 +1087,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1106,7 +1105,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1121,7 +1120,7 @@ i32.store offset=8 i32.const 8 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 i32.store8 @@ -1178,8 +1177,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1312 - i32.const 1376 + i32.const 1360 + i32.const 1424 i32.const 163 i32.const 45 call $~lib/builtins/abort @@ -1198,7 +1197,7 @@ (local $5 i32) i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $4 i32.const 0 @@ -1210,7 +1209,7 @@ i32.const 0 i32.store offset=8 local.get $2 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u local.get $1 local.get $2 @@ -1218,14 +1217,14 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.gt_u i32.or if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -1292,8 +1291,8 @@ i32.gt_s i32.or if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 35 i32.const 7 call $~lib/builtins/abort @@ -1348,8 +1347,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 44 i32.const 7 call $~lib/builtins/abort @@ -1374,8 +1373,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 51 i32.const 50 call $~lib/builtins/abort @@ -1412,8 +1411,8 @@ i32.gt_s i32.or if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -1445,8 +1444,8 @@ i32.gt_s i32.or if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 66 i32.const 7 call $~lib/builtins/abort @@ -1473,8 +1472,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 151 i32.const 7 call $~lib/builtins/abort @@ -1498,8 +1497,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 72 i32.const 50 call $~lib/builtins/abort @@ -1534,8 +1533,8 @@ i32.gt_s i32.or if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 79 i32.const 7 call $~lib/builtins/abort @@ -1567,8 +1566,8 @@ i32.gt_s i32.or if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 87 i32.const 7 call $~lib/builtins/abort @@ -1595,8 +1594,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 159 i32.const 7 call $~lib/builtins/abort @@ -1620,8 +1619,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 95 i32.const 7 call $~lib/builtins/abort @@ -1648,8 +1647,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 103 i32.const 7 call $~lib/builtins/abort @@ -1676,8 +1675,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 116 i32.const 7 call $~lib/builtins/abort @@ -1700,8 +1699,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 123 i32.const 7 call $~lib/builtins/abort @@ -1724,8 +1723,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 167 i32.const 7 call $~lib/builtins/abort @@ -1748,8 +1747,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 135 i32.const 7 call $~lib/builtins/abort @@ -1772,8 +1771,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 142 i32.const 7 call $~lib/builtins/abort @@ -1796,8 +1795,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 174 i32.const 7 call $~lib/builtins/abort @@ -1821,7 +1820,7 @@ (local $3 i32) i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $1 @@ -1871,7 +1870,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -1885,7 +1884,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -1899,7 +1898,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -1913,7 +1912,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -1927,7 +1926,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -1941,7 +1940,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -1955,7 +1954,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -1969,7 +1968,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -1983,7 +1982,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -1997,7 +1996,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -2010,7 +2009,7 @@ f64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -2023,7 +2022,7 @@ f64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -2036,7 +2035,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -2049,7 +2048,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -2062,7 +2061,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -2075,7 +2074,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -2088,7 +2087,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -2101,7 +2100,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -2114,7 +2113,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -2127,7 +2126,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -2143,7 +2142,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -2159,7 +2158,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -2175,7 +2174,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -2191,7 +2190,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -2207,7 +2206,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -2223,7 +2222,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -2239,7 +2238,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -2255,7 +2254,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -2271,7 +2270,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -2287,7 +2286,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -2303,7 +2302,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -2319,7 +2318,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -2335,7 +2334,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -2351,7 +2350,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -2365,7 +2364,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -2379,7 +2378,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -2393,7 +2392,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -2407,7 +2406,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -2421,7 +2420,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -2435,7 +2434,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -2449,7 +2448,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -2463,7 +2462,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -2477,7 +2476,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -2491,7 +2490,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -2504,7 +2503,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2517,7 +2516,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2530,7 +2529,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -2543,7 +2542,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -2556,7 +2555,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -2569,7 +2568,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -2582,7 +2581,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -2595,7 +2594,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 75 i32.const 3 call $~lib/builtins/abort @@ -2608,7 +2607,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -2621,7 +2620,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -2637,7 +2636,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -2653,7 +2652,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -2669,7 +2668,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -2685,7 +2684,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -2701,7 +2700,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2717,7 +2716,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2733,7 +2732,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -2749,7 +2748,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -2765,7 +2764,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -2781,7 +2780,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -2797,7 +2796,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -2813,7 +2812,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -2829,7 +2828,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -2845,7 +2844,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 93 i32.const 3 call $~lib/builtins/abort @@ -2859,7 +2858,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -2873,7 +2872,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -2887,7 +2886,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -2901,7 +2900,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -2915,7 +2914,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -2929,7 +2928,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -2943,7 +2942,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 102 i32.const 3 call $~lib/builtins/abort @@ -2957,7 +2956,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -2971,7 +2970,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -2985,7 +2984,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -2998,7 +2997,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 107 i32.const 3 call $~lib/builtins/abort @@ -3011,7 +3010,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -3029,7 +3028,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -3047,7 +3046,7 @@ f32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -3064,7 +3063,7 @@ f64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -3081,7 +3080,7 @@ f64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -3092,8 +3091,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 109 i32.const 50 call $~lib/builtins/abort @@ -3110,7 +3109,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -3130,7 +3129,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -3150,7 +3149,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -3168,7 +3167,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 132 i32.const 3 call $~lib/builtins/abort @@ -3186,7 +3185,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -3203,7 +3202,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -3220,7 +3219,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -3231,8 +3230,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1312 - i32.const 1440 + i32.const 1360 + i32.const 1488 i32.const 128 i32.const 50 call $~lib/builtins/abort @@ -3249,7 +3248,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 144 i32.const 3 call $~lib/builtins/abort @@ -3269,7 +3268,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -3289,7 +3288,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -3307,7 +3306,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -3325,7 +3324,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -3342,7 +3341,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -3359,7 +3358,7 @@ i64.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -3368,9 +3367,9 @@ local.get $1 i32.load local.tee $3 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.set $2 local.get $3 i32.const 0 @@ -3383,7 +3382,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -3395,7 +3394,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1552 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -3424,7 +3423,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3438,21 +3437,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1520 + i32.const 1584 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -3466,7 +3465,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3487,7 +3486,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index cf9f905ef2..2304085e6a 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i64_i32_=>_none (func (param i32 i32 i64 i32))) @@ -13,28 +13,25 @@ (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_f32_i32_=>_none (func (param i32 i32 f32 i32))) (type $i32_i32_f64_i32_=>_none (func (param i32 i32 f64 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_i32_i32_=>_f64 (func (param i32 i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 352) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 416) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (data (i32.const 464) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 124) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 252) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 316) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 380) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 444) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 508) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 512)) + (global $~lib/heap/__heap_base i32 (i32.const 560)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) @@ -43,7 +40,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -70,8 +67,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 277 + i32.const 272 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -85,11 +82,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -97,8 +94,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 279 + i32.const 272 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -151,29 +148,29 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 292 + i32.const 272 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -283,8 +280,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 205 + i32.const 272 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -300,8 +297,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 207 + i32.const 272 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -309,7 +306,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -331,7 +328,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -341,7 +338,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -358,7 +355,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -395,8 +392,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 228 + i32.const 272 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -406,7 +403,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -416,7 +413,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -448,11 +445,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -460,8 +457,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 243 + i32.const 272 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -469,7 +466,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -478,8 +475,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 244 + i32.const 272 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -537,8 +534,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 260 + i32.const 272 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -562,15 +559,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -639,31 +636,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 + i32.const 272 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -677,14 +676,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 396 + i32.const 272 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -716,8 +715,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 408 + i32.const 272 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -728,10 +727,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -739,9 +738,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -757,15 +756,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -784,7 +783,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -797,127 +796,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -925,49 +943,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 192 i32.const 144 + i32.const 272 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -990,7 +983,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1044,8 +1037,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 338 + i32.const 272 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1109,8 +1102,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 351 + i32.const 272 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1166,7 +1159,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1184,11 +1177,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1252,14 +1245,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 144 - i32.const 365 + i32.const 272 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1273,8 +1268,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1286,14 +1281,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1312,7 +1307,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1324,7 +1319,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1341,136 +1336,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 272 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 520 + i32.const 272 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 144 + i32.const 208 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 local.get $1 - call $~lib/rt/tlsf/allocateBlock + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1708,7 +1684,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1731,7 +1707,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1744,7 +1720,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1760,7 +1736,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1774,7 +1750,7 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u @@ -1791,7 +1767,7 @@ i32.shl local.tee $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -1828,7 +1804,7 @@ if i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1845,8 +1821,8 @@ i32.load offset=8 i32.ge_u if - i32.const 304 - i32.const 368 + i32.const 336 + i32.const 400 i32.const 163 i32.const 45 call $~lib/builtins/abort @@ -1861,9 +1837,9 @@ ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 ) (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -1875,7 +1851,7 @@ if i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1892,7 +1868,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u local.get $2 local.get $3 @@ -1903,7 +1879,7 @@ i32.or if i32.const 32 - i32.const 432 + i32.const 464 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -1983,8 +1959,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 35 i32.const 7 call $~lib/builtins/abort @@ -2072,8 +2048,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 44 i32.const 7 call $~lib/builtins/abort @@ -2102,8 +2078,8 @@ i32.load offset=8 i32.ge_u if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 51 i32.const 50 call $~lib/builtins/abort @@ -2150,8 +2126,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -2208,8 +2184,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 66 i32.const 7 call $~lib/builtins/abort @@ -2295,8 +2271,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 151 i32.const 7 call $~lib/builtins/abort @@ -2322,8 +2298,8 @@ i32.load offset=8 i32.ge_u if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 72 i32.const 50 call $~lib/builtins/abort @@ -2368,8 +2344,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 79 i32.const 7 call $~lib/builtins/abort @@ -2402,8 +2378,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 87 i32.const 7 call $~lib/builtins/abort @@ -2436,8 +2412,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 159 i32.const 7 call $~lib/builtins/abort @@ -2469,8 +2445,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 95 i32.const 7 call $~lib/builtins/abort @@ -2507,8 +2483,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 103 i32.const 7 call $~lib/builtins/abort @@ -2539,8 +2515,8 @@ i32.load offset=8 i32.ge_u if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 109 i32.const 50 call $~lib/builtins/abort @@ -2565,8 +2541,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 116 i32.const 7 call $~lib/builtins/abort @@ -2597,8 +2573,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 123 i32.const 7 call $~lib/builtins/abort @@ -2629,8 +2605,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 167 i32.const 7 call $~lib/builtins/abort @@ -2655,8 +2631,8 @@ i32.load offset=8 i32.ge_u if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 128 i32.const 50 call $~lib/builtins/abort @@ -2681,8 +2657,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 135 i32.const 7 call $~lib/builtins/abort @@ -2713,8 +2689,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 142 i32.const 7 call $~lib/builtins/abort @@ -2745,8 +2721,8 @@ i32.gt_s i32.or if - i32.const 304 - i32.const 432 + i32.const 336 + i32.const 464 i32.const 174 i32.const 7 call $~lib/builtins/abort @@ -2855,7 +2831,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -2870,7 +2846,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -2885,7 +2861,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -2900,7 +2876,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -2915,7 +2891,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -2930,7 +2906,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -2945,7 +2921,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -2960,7 +2936,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -2975,7 +2951,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -2990,7 +2966,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -3005,7 +2981,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3020,7 +2996,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -3034,7 +3010,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -3048,7 +3024,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -3062,7 +3038,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -3076,7 +3052,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3090,7 +3066,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -3104,7 +3080,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -3118,7 +3094,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -3132,7 +3108,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3151,7 +3127,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -3170,7 +3146,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -3189,7 +3165,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -3208,7 +3184,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3227,7 +3203,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3246,7 +3222,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3265,7 +3241,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3284,7 +3260,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -3303,7 +3279,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -3322,7 +3298,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3341,7 +3317,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -3360,7 +3336,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -3379,7 +3355,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -3398,7 +3374,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -3413,7 +3389,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -3428,7 +3404,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -3443,7 +3419,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -3458,7 +3434,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -3473,7 +3449,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -3488,7 +3464,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -3503,7 +3479,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -3518,7 +3494,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -3533,7 +3509,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -3548,7 +3524,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -3563,7 +3539,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -3578,7 +3554,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -3592,7 +3568,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -3606,7 +3582,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -3620,7 +3596,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -3634,7 +3610,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -3648,7 +3624,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -3662,7 +3638,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 75 i32.const 3 call $~lib/builtins/abort @@ -3676,7 +3652,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -3690,7 +3666,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -3707,7 +3683,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -3724,7 +3700,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -3741,7 +3717,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -3758,7 +3734,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -3775,7 +3751,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -3792,7 +3768,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -3809,7 +3785,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -3826,7 +3802,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -3843,7 +3819,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -3860,7 +3836,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -3877,7 +3853,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -3894,7 +3870,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -3911,7 +3887,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -3928,7 +3904,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 93 i32.const 3 call $~lib/builtins/abort @@ -3943,7 +3919,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -3958,7 +3934,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -3973,7 +3949,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -3988,7 +3964,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -4003,7 +3979,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -4018,7 +3994,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -4033,7 +4009,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 102 i32.const 3 call $~lib/builtins/abort @@ -4048,7 +4024,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -4063,7 +4039,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -4078,7 +4054,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -4093,7 +4069,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 107 i32.const 3 call $~lib/builtins/abort @@ -4108,7 +4084,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -4128,7 +4104,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -4148,7 +4124,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -4168,7 +4144,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -4188,7 +4164,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -4206,7 +4182,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -4230,7 +4206,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -4254,7 +4230,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -4274,7 +4250,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 132 i32.const 3 call $~lib/builtins/abort @@ -4294,7 +4270,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -4314,7 +4290,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -4334,7 +4310,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -4352,7 +4328,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 144 i32.const 3 call $~lib/builtins/abort @@ -4374,7 +4350,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -4396,7 +4372,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -4416,7 +4392,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -4436,7 +4412,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -4456,7 +4432,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -4476,7 +4452,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -4502,7 +4478,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -4515,7 +4491,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 528 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -4530,12 +4506,9 @@ call $start:std/dataview ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -4574,7 +4547,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -4585,7 +4558,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -4600,7 +4573,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -4617,7 +4590,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -4638,11 +4611,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -4660,14 +4628,14 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index fbe749fb7e..c8a63c49fb 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -7,7 +7,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") (global $std/date/creationTime (mut i64) (i64.const 0)) (global $std/date/date (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -29,7 +29,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48,7 +48,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -69,7 +69,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -81,7 +81,7 @@ i64.le_s if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -89,16 +89,22 @@ end global.get $std/date/creationTime local.set $2 - i32.const 1104 + i32.const 1116 memory.size local.tee $1 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $0 i32.gt_u if local.get $1 - i32.const 66639 + i32.const 66651 local.get $0 i32.sub i32.const -65536 @@ -123,33 +129,36 @@ end end end - i32.const 1072 - i32.const 16 + i32.const 1084 + i32.const 28 i32.store - i32.const 1076 - i32.const 1 + i32.const 1088 + i32.const 0 + i32.store + i32.const 1092 + i32.const 0 i32.store - i32.const 1080 + i32.const 1096 i32.const 3 i32.store - i32.const 1084 + i32.const 1100 i32.const 8 i32.store - i32.const 1088 + i32.const 1104 i64.const 0 i64.store - i32.const 1088 + i32.const 1104 local.get $2 i64.store - i32.const 1088 + i32.const 1104 global.set $std/date/date global.get $std/date/creationTime - i32.const 1088 + i32.const 1104 i64.load i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -168,7 +177,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 12 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 1455f2e847..42c127eb99 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -1,8 +1,8 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) @@ -13,7 +13,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00") (table $0 1 funcref) (global $std/date/creationTime (mut i64) (i64.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -22,6 +22,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 56)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -33,6 +46,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -76,60 +99,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -140,7 +170,7 @@ if i32.const 8 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -291,12 +321,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index fa88fcc653..e0f7a02167 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1072) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1040) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1100) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 1132) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") (export "memory" (memory $0)) (start $~start) (func $~lib/util/hash/hashStr (param $0 i32) @@ -17,9 +17,9 @@ local.get $0 if local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u i32.const 1 @@ -51,13 +51,13 @@ (func $~start i32.const 0 call $~lib/util/hash/hashStr - i32.const 1040 - call $~lib/util/hash/hashStr i32.const 1056 call $~lib/util/hash/hashStr i32.const 1088 call $~lib/util/hash/hashStr i32.const 1120 call $~lib/util/hash/hashStr + i32.const 1152 + call $~lib/util/hash/hashStr ) ) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 91e00d5a33..c1e7d41192 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -4,10 +4,10 @@ (type $i32_=>_none (func (param i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 64) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 96) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 76) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00") + (data (i32.const 108) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") (table $0 1 funcref) (export "memory" (memory $0)) (start $~start) @@ -16,9 +16,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -246,7 +246,7 @@ call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) - i32.const 48 + i32.const 64 local.set $0 i32.const 1 drop @@ -261,7 +261,7 @@ call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) - i32.const 80 + i32.const 96 local.set $1 i32.const 1 drop @@ -276,7 +276,7 @@ call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - i32.const 112 + i32.const 128 local.set $0 i32.const 1 drop diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 67c9dd1483..be3d7b8cfd 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1,12 +1,11 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) @@ -18,6 +17,7 @@ (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i64_=>_i32 (func (param i32 i64 i64) (result i32))) (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) @@ -25,18 +25,17 @@ (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1232) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1296) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1344) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data (i32.const 1408) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1456) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1504) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1276) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1340) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 1388) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data (i32.const 1452) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 1500) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1548) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -52,8 +51,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -62,18 +61,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -115,28 +114,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -207,8 +206,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -221,14 +220,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -244,14 +243,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -266,7 +265,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -294,8 +293,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -303,14 +302,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -339,33 +338,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -412,8 +411,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -431,15 +430,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -477,54 +476,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -540,18 +537,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -561,23 +557,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -588,116 +585,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1616 + i32.const 0 + i32.store + i32.const 3184 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1616 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1568 - local.set $1 - i32.const 1568 - i32.const 0 - i32.store - i32.const 3136 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1616 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1568 - i32.const 3152 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1568 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1616 + i32.const 3188 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1616 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1088 - i32.const 1040 + i32.const 1056 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -724,7 +713,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -755,8 +744,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 338 + i32.const 1184 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -807,8 +796,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -836,12 +825,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1040 - i32.const 365 + i32.const 1184 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -852,7 +843,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -864,12 +855,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -884,7 +875,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -904,149 +895,158 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1054,11 +1054,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1556 + i32.const 1604 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1073,7 +1073,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1090,7 +1090,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1101,11 +1101,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1556 + i32.const 1604 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1271,11 +1271,11 @@ (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1200 i32.const 1248 + i32.const 1296 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -1283,7 +1283,7 @@ end local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $0 call $~lib/memory/memory.fill @@ -1598,8 +1598,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -1608,6 +1608,39 @@ local.get $0 i32.load offset=4 ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1792,127 +1825,195 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 1604 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 i32.const 16 - i32.add + i32.sub + local.set $0 local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 16 i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1604 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $3 local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - return end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 + i32.const 4 i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $1 + i32.store offset=16 + local.get $2 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1556 - i32.ge_u - if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 ) (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $3 local.get $2 i32.shr_u i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -1920,63 +2021,21 @@ end local.get $0 i32.load - local.set $3 - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - i32.const 16 - i32.sub - local.set $4 - local.get $3 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $3 - select - if (result i32) - local.get $4 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 + local.tee $4 local.get $1 local.get $2 i32.shl local.tee $2 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add + call $~lib/rt/pure/__renew local.tee $1 - local.get $5 + local.get $3 i32.add local.get $2 - local.get $5 + local.get $3 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $3 + local.get $4 i32.ne if local.get $0 @@ -2002,8 +2061,8 @@ i32.const 0 i32.lt_s if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -2057,7 +2116,7 @@ local.set $4 i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -2072,11 +2131,11 @@ i32.const 0 i32.store offset=12 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -2084,7 +2143,7 @@ end local.get $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 call $~lib/memory/memory.fill @@ -2160,7 +2219,7 @@ (local $5 i32) i32.const 16 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $5 i32.const 0 @@ -2175,11 +2234,11 @@ i32.const 0 i32.store offset=12 local.get $0 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -2190,7 +2249,7 @@ i32.shl local.tee $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 call $~lib/memory/memory.fill @@ -2233,8 +2292,8 @@ i32.const 0 i32.lt_s if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -2328,7 +2387,7 @@ (local $0 i32) i32.const 24 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -2358,8 +2417,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3051,7 +3110,7 @@ (local $7 i32) i32.const 24 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -3087,7 +3146,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -3110,7 +3169,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -3129,7 +3188,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -3148,7 +3207,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -3171,7 +3230,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -3190,7 +3249,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -3213,7 +3272,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -3232,7 +3291,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3251,7 +3310,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -3265,7 +3324,7 @@ local.set $6 i32.const 24 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -3300,8 +3359,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3323,7 +3382,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -3337,7 +3396,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -3369,7 +3428,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -3381,7 +3440,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3404,7 +3463,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -3423,7 +3482,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -3437,7 +3496,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -3456,7 +3515,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -3478,7 +3537,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -3501,7 +3560,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -3515,7 +3574,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -3534,7 +3593,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -3546,7 +3605,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -3815,8 +3874,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -3843,7 +3902,7 @@ local.set $4 i32.const 16 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -3858,11 +3917,11 @@ i32.const 0 i32.store offset=12 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -3870,7 +3929,7 @@ end local.get $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 call $~lib/memory/memory.fill @@ -4279,7 +4338,7 @@ (local $7 i32) i32.const 24 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -4313,7 +4372,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -4334,7 +4393,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -4351,7 +4410,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -4370,7 +4429,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -4391,7 +4450,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -4408,7 +4467,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4429,7 +4488,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -4446,7 +4505,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -4465,7 +4524,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -4479,7 +4538,7 @@ local.set $6 i32.const 24 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -4514,8 +4573,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -4537,7 +4596,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -4551,7 +4610,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -4583,7 +4642,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -4595,7 +4654,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -4616,7 +4675,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -4633,7 +4692,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -4647,7 +4706,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -4666,7 +4725,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -4686,7 +4745,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -4707,7 +4766,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -4721,7 +4780,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -4740,7 +4799,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -4752,7 +4811,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -5085,8 +5144,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -5106,8 +5165,8 @@ i32.const 0 i32.lt_s if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -5164,7 +5223,7 @@ local.set $7 i32.const 16 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -5179,11 +5238,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 536870904 + i32.const 536870910 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -5194,7 +5253,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -5607,7 +5666,7 @@ (local $7 i32) i32.const 24 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -5643,7 +5702,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -5666,7 +5725,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -5685,7 +5744,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -5704,7 +5763,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -5727,7 +5786,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -5746,7 +5805,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -5769,7 +5828,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -5788,7 +5847,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -5807,7 +5866,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -5821,7 +5880,7 @@ local.set $6 i32.const 24 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $3 i32.const 16 @@ -5856,8 +5915,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5881,7 +5940,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -5895,7 +5954,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -5927,7 +5986,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -5939,7 +5998,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -5962,7 +6021,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -5981,7 +6040,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -5995,7 +6054,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -6014,7 +6073,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -6036,7 +6095,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -6059,7 +6118,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -6073,7 +6132,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -6092,7 +6151,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -6104,7 +6163,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -6373,8 +6432,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -6402,7 +6461,7 @@ local.set $7 i32.const 16 i32.const 15 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -6417,11 +6476,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 536870904 + i32.const 536870910 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -6432,7 +6491,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -6841,7 +6900,7 @@ (local $7 i32) i32.const 24 i32.const 14 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -6875,7 +6934,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -6896,7 +6955,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -6913,7 +6972,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -6932,7 +6991,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -6953,7 +7012,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -6970,7 +7029,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -6991,7 +7050,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -7008,7 +7067,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -7027,7 +7086,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -7041,7 +7100,7 @@ local.set $6 i32.const 24 i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $3 i32.const 16 @@ -7076,8 +7135,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -7101,7 +7160,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7115,7 +7174,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -7147,7 +7206,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -7159,7 +7218,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -7180,7 +7239,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7197,7 +7256,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -7211,7 +7270,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -7230,7 +7289,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7250,7 +7309,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -7271,7 +7330,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -7285,7 +7344,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -7304,7 +7363,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -7316,7 +7375,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -7351,8 +7410,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -7441,7 +7500,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -7460,7 +7519,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -7475,7 +7534,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -7494,7 +7553,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -7513,7 +7572,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -7528,7 +7587,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7547,7 +7606,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -7562,7 +7621,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -7581,7 +7640,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -7658,7 +7717,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7672,7 +7731,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -7704,7 +7763,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -7716,7 +7775,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -7735,7 +7794,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7750,7 +7809,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -7764,7 +7823,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -7783,7 +7842,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7801,7 +7860,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -7820,7 +7879,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -7834,7 +7893,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -7853,7 +7912,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -7865,7 +7924,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -7901,7 +7960,7 @@ local.set $7 i32.const 16 i32.const 18 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -7916,11 +7975,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -7931,7 +7990,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -8010,7 +8069,7 @@ (local $7 i32) i32.const 24 i32.const 17 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -8042,7 +8101,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8061,7 +8120,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8076,7 +8135,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -8095,7 +8154,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -8114,7 +8173,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -8129,7 +8188,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8148,7 +8207,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -8163,7 +8222,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -8182,7 +8241,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -8196,7 +8255,7 @@ local.set $6 i32.const 24 i32.const 19 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -8240,7 +8299,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -8254,7 +8313,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -8286,7 +8345,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -8298,7 +8357,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -8317,7 +8376,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -8332,7 +8391,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -8346,7 +8405,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -8365,7 +8424,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -8383,7 +8442,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -8402,7 +8461,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -8416,7 +8475,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -8435,7 +8494,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -8447,7 +8506,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -8817,8 +8876,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -8838,8 +8897,8 @@ i32.const 0 i32.lt_s if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -8896,7 +8955,7 @@ local.set $7 i32.const 16 i32.const 21 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -8911,11 +8970,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 134217726 + i32.const 134217727 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -8926,7 +8985,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -9052,8 +9111,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -9435,7 +9494,7 @@ (local $7 i32) i32.const 24 i32.const 20 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -9467,7 +9526,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -9487,7 +9546,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -9503,7 +9562,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -9522,7 +9581,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -9541,7 +9600,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -9557,7 +9616,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -9577,7 +9636,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -9593,7 +9652,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -9612,7 +9671,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -9626,7 +9685,7 @@ local.set $7 i32.const 24 i32.const 22 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 16 @@ -9670,7 +9729,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9685,7 +9744,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -9717,7 +9776,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -9729,7 +9788,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -9748,7 +9807,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9764,7 +9823,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -9778,7 +9837,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -9797,7 +9856,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -9815,7 +9874,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -9835,7 +9894,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -9849,7 +9908,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -9868,7 +9927,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -9880,7 +9939,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -9916,7 +9975,7 @@ local.set $7 i32.const 16 i32.const 24 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -9931,11 +9990,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 134217726 + i32.const 134217727 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -9946,7 +10005,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -10025,7 +10084,7 @@ (local $7 i32) i32.const 24 i32.const 23 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -10057,7 +10116,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -10077,7 +10136,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -10093,7 +10152,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -10112,7 +10171,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -10131,7 +10190,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -10147,7 +10206,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -10167,7 +10226,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -10183,7 +10242,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -10202,7 +10261,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -10216,7 +10275,7 @@ local.set $7 i32.const 24 i32.const 25 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 16 @@ -10260,7 +10319,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -10275,7 +10334,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -10307,7 +10366,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -10319,7 +10378,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -10338,7 +10397,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -10354,7 +10413,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -10368,7 +10427,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -10387,7 +10446,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -10405,7 +10464,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -10425,7 +10484,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -10439,7 +10498,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -10458,7 +10517,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -10470,7 +10529,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -10778,8 +10837,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -10808,7 +10867,7 @@ local.set $8 i32.const 16 i32.const 27 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -10823,11 +10882,11 @@ i32.const 0 i32.store offset=12 local.get $9 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -10838,7 +10897,7 @@ i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $7 call $~lib/memory/memory.fill @@ -10896,8 +10955,8 @@ i32.const 0 i32.lt_s if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -11241,7 +11300,7 @@ (local $7 i32) i32.const 24 i32.const 26 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -11273,7 +11332,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11293,7 +11352,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11309,7 +11368,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -11328,7 +11387,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -11347,7 +11406,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -11363,7 +11422,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11383,7 +11442,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -11399,7 +11458,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -11418,7 +11477,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -11432,7 +11491,7 @@ local.set $7 i32.const 24 i32.const 28 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 16 @@ -11467,8 +11526,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -11492,7 +11551,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11507,7 +11566,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -11539,7 +11598,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -11551,7 +11610,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -11570,7 +11629,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11586,7 +11645,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -11600,7 +11659,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -11619,7 +11678,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -11637,7 +11696,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -11657,7 +11716,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -11671,7 +11730,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -11690,7 +11749,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -11702,7 +11761,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -12010,8 +12069,8 @@ local.tee $0 i32.eqz if - i32.const 1360 - i32.const 1424 + i32.const 1408 + i32.const 1472 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -12040,7 +12099,7 @@ local.set $8 i32.const 16 i32.const 30 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -12055,11 +12114,11 @@ i32.const 0 i32.store offset=12 local.get $9 - i32.const 134217726 + i32.const 134217727 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1248 + i32.const 1520 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -12070,7 +12129,7 @@ i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $7 call $~lib/memory/memory.fill @@ -12128,8 +12187,8 @@ i32.const 0 i32.lt_s if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -12509,7 +12568,7 @@ (local $7 i32) i32.const 24 i32.const 29 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 i32.const 16 @@ -12541,7 +12600,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -12561,7 +12620,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -12577,7 +12636,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -12596,7 +12655,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -12615,7 +12674,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -12631,7 +12690,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -12651,7 +12710,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -12667,7 +12726,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -12686,7 +12745,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -12700,7 +12759,7 @@ local.set $7 i32.const 24 i32.const 31 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $2 i32.const 16 @@ -12735,8 +12794,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1568 i32.const 1520 - i32.const 1472 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -12760,7 +12819,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -12775,7 +12834,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -12807,7 +12866,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -12819,7 +12878,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -12838,7 +12897,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -12854,7 +12913,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -12868,7 +12927,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -12887,7 +12946,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -12905,7 +12964,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -12925,7 +12984,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -12939,7 +12998,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -12958,7 +13017,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -12970,7 +13029,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -13014,7 +13073,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -13030,13 +13089,13 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -13047,15 +13106,15 @@ unreachable end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit local.get $0 - i32.load offset=24 + i32.load offset=28 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit end local.get $2 @@ -13063,7 +13122,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -13078,7 +13137,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -13097,13 +13156,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1556 + i32.const 1604 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 556bda1fe6..57ebb7cf72 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -20,29 +20,26 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 224) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") - (data (i32.const 400) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 448) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 496) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 252) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 316) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 364) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") + (data (i32.const 428) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 476) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 524) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 548)) + (global $~lib/heap/__heap_base i32 (i32.const 580)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -67,8 +64,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -82,11 +79,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -94,8 +91,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -148,29 +145,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -280,8 +277,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -297,8 +294,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -306,7 +303,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -328,7 +325,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -338,7 +335,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -355,7 +352,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -392,8 +389,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -403,7 +400,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -413,7 +410,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -445,11 +442,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -457,8 +454,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -466,7 +463,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -475,8 +472,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -534,8 +531,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -559,15 +556,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -636,31 +633,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -674,14 +673,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -713,8 +712,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -725,10 +724,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -736,9 +735,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -754,15 +753,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -781,7 +780,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -794,127 +793,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -922,49 +940,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -987,7 +980,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1041,8 +1034,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1106,8 +1099,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1163,7 +1156,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1181,11 +1174,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1249,14 +1242,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1270,8 +1265,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1283,14 +1278,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1309,7 +1304,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1321,7 +1316,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1330,144 +1325,125 @@ i32.xor i32.and i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1492,7 +1468,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1515,7 +1491,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1528,7 +1504,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1540,7 +1516,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1762,11 +1738,11 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 272 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -1774,7 +1750,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 i32.const 0 @@ -1793,7 +1769,7 @@ if i32.const 24 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2234,8 +2210,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -2259,7 +2235,7 @@ if i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2276,13 +2252,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 0 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -2294,7 +2270,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -2331,7 +2307,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -2354,22 +2330,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 585 + i32.const 160 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3630,12 +3595,9 @@ end ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3645,6 +3607,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -3652,7 +3645,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -3673,9 +3665,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -3684,7 +3673,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -3702,7 +3691,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -3725,9 +3714,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -3739,41 +3725,86 @@ end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -3792,13 +3823,13 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -3813,7 +3844,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $6 local.get $6 local.get $3 @@ -3861,8 +3892,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -3976,7 +4007,7 @@ if i32.const 16 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -3993,13 +4024,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -4011,7 +4042,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -4067,8 +4098,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -4177,7 +4208,7 @@ if i32.const 24 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -4217,7 +4248,7 @@ if i32.const 24 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -4271,8 +4302,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -4302,8 +4333,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5224,7 +5255,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -5247,7 +5278,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -5267,7 +5298,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -5287,7 +5318,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -5312,7 +5343,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -5332,7 +5363,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -5355,7 +5386,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -5375,7 +5406,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -5395,7 +5426,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -5437,7 +5468,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -5451,7 +5482,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -5485,7 +5516,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -5498,7 +5529,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -5523,7 +5554,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -5543,7 +5574,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -5560,7 +5591,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -5580,7 +5611,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -5606,7 +5637,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -5629,7 +5660,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -5646,7 +5677,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -5666,7 +5697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -5681,7 +5712,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -5704,7 +5735,7 @@ if i32.const 24 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -6130,8 +6161,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -6155,7 +6186,7 @@ if i32.const 16 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -6172,13 +6203,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 0 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -6190,7 +6221,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -6246,8 +6277,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -6421,7 +6452,7 @@ if i32.const 24 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -6475,8 +6506,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -6995,7 +7026,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -7016,7 +7047,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -7034,7 +7065,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -7054,7 +7085,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -7077,7 +7108,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -7095,7 +7126,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7116,7 +7147,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -7134,7 +7165,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -7154,7 +7185,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -7196,7 +7227,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7210,7 +7241,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -7244,7 +7275,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -7257,7 +7288,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -7280,7 +7311,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7298,7 +7329,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -7315,7 +7346,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -7335,7 +7366,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7359,7 +7390,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -7380,7 +7411,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -7397,7 +7428,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -7417,7 +7448,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -7432,7 +7463,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -7455,7 +7486,7 @@ if i32.const 24 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -7927,8 +7958,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -7952,7 +7983,7 @@ if i32.const 16 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -7969,13 +8000,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 1 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -7987,7 +8018,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -8043,8 +8074,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -8218,7 +8249,7 @@ if i32.const 24 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -8272,8 +8303,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -8812,7 +8843,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8835,7 +8866,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8855,7 +8886,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -8875,7 +8906,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -8900,7 +8931,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -8920,7 +8951,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8943,7 +8974,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -8963,7 +8994,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -8983,7 +9014,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -9025,7 +9056,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9039,7 +9070,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -9073,7 +9104,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -9086,7 +9117,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -9111,7 +9142,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9131,7 +9162,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -9148,7 +9179,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -9168,7 +9199,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -9194,7 +9225,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -9217,7 +9248,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -9234,7 +9265,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -9254,7 +9285,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -9269,7 +9300,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -9292,7 +9323,7 @@ if i32.const 24 i32.const 14 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -9734,8 +9765,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -9759,7 +9790,7 @@ if i32.const 16 i32.const 15 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -9776,13 +9807,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 1 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -9794,7 +9825,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -9850,8 +9881,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -10025,7 +10056,7 @@ if i32.const 24 i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -10079,8 +10110,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -10611,7 +10642,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -10632,7 +10663,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -10650,7 +10681,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -10670,7 +10701,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -10693,7 +10724,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -10711,7 +10742,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -10732,7 +10763,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -10750,7 +10781,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -10770,7 +10801,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -10812,7 +10843,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -10826,7 +10857,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -10860,7 +10891,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -10873,7 +10904,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -10896,7 +10927,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -10914,7 +10945,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -10931,7 +10962,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -10951,7 +10982,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -10975,7 +11006,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -10996,7 +11027,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -11013,7 +11044,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -11033,7 +11064,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -11048,7 +11079,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -11133,8 +11164,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -11444,7 +11475,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11463,7 +11494,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11479,7 +11510,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -11499,7 +11530,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -11520,7 +11551,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -11536,7 +11567,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11555,7 +11586,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -11571,7 +11602,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -11591,7 +11622,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -11633,7 +11664,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11647,7 +11678,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -11681,7 +11712,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -11694,7 +11725,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -11715,7 +11746,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11731,7 +11762,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -11748,7 +11779,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -11768,7 +11799,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -11790,7 +11821,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -11809,7 +11840,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -11826,7 +11857,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -11846,7 +11877,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -11861,7 +11892,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -11884,7 +11915,7 @@ if i32.const 24 i32.const 17 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -12334,8 +12365,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -12359,7 +12390,7 @@ if i32.const 16 i32.const 18 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -12376,13 +12407,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -12394,7 +12425,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -12450,8 +12481,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -12625,7 +12656,7 @@ if i32.const 24 i32.const 19 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -12679,8 +12710,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -13213,7 +13244,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -13232,7 +13263,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -13248,7 +13279,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -13268,7 +13299,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -13289,7 +13320,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -13305,7 +13336,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -13324,7 +13355,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -13340,7 +13371,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -13360,7 +13391,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -13402,7 +13433,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -13416,7 +13447,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -13450,7 +13481,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -13463,7 +13494,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -13484,7 +13515,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -13500,7 +13531,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -13517,7 +13548,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -13537,7 +13568,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -13559,7 +13590,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -13578,7 +13609,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -13595,7 +13626,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -13615,7 +13646,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -13630,7 +13661,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -13653,7 +13684,7 @@ if i32.const 24 i32.const 20 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -14209,8 +14240,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -14234,7 +14265,7 @@ if i32.const 16 i32.const 21 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -14251,13 +14282,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 3 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -14269,7 +14300,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -14325,8 +14356,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -14500,7 +14531,7 @@ if i32.const 24 i32.const 22 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -14554,8 +14585,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -15103,7 +15134,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -15123,7 +15154,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -15140,7 +15171,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -15160,7 +15191,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -15181,7 +15212,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -15198,7 +15229,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -15218,7 +15249,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -15235,7 +15266,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -15255,7 +15286,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -15297,7 +15328,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -15312,7 +15343,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -15346,7 +15377,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -15359,7 +15390,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -15380,7 +15411,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -15397,7 +15428,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -15414,7 +15445,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -15434,7 +15465,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -15456,7 +15487,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -15476,7 +15507,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -15493,7 +15524,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -15513,7 +15544,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -15528,7 +15559,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -15551,7 +15582,7 @@ if i32.const 24 i32.const 23 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -16019,8 +16050,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -16044,7 +16075,7 @@ if i32.const 16 i32.const 24 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -16061,13 +16092,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 3 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -16079,7 +16110,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -16135,8 +16166,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -16310,7 +16341,7 @@ if i32.const 24 i32.const 25 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -16364,8 +16395,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -16913,7 +16944,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -16933,7 +16964,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -16950,7 +16981,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -16970,7 +17001,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -16991,7 +17022,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -17008,7 +17039,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -17028,7 +17059,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -17045,7 +17076,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -17065,7 +17096,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -17107,7 +17138,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -17122,7 +17153,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -17156,7 +17187,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -17169,7 +17200,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -17190,7 +17221,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -17207,7 +17238,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -17224,7 +17255,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -17244,7 +17275,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -17266,7 +17297,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -17286,7 +17317,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -17303,7 +17334,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -17323,7 +17354,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -17338,7 +17369,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -17361,7 +17392,7 @@ if i32.const 24 i32.const 26 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -17785,8 +17816,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -17810,7 +17841,7 @@ if i32.const 16 i32.const 27 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -17827,13 +17858,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -17845,7 +17876,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -17901,8 +17932,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -18076,7 +18107,7 @@ if i32.const 24 i32.const 28 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -18130,8 +18161,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -18646,7 +18677,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -18666,7 +18697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -18683,7 +18714,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -18703,7 +18734,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -18724,7 +18755,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -18741,7 +18772,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -18761,7 +18792,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -18778,7 +18809,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -18798,7 +18829,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -18840,7 +18871,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -18855,7 +18886,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -18889,7 +18920,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -18902,7 +18933,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -18923,7 +18954,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -18940,7 +18971,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -18957,7 +18988,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -18977,7 +19008,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -18999,7 +19030,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -19019,7 +19050,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -19036,7 +19067,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -19056,7 +19087,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -19071,7 +19102,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -19094,7 +19125,7 @@ if i32.const 24 i32.const 29 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -19534,8 +19565,8 @@ local.get $3 i32.eqz if - i32.const 352 - i32.const 416 + i32.const 384 + i32.const 448 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -19559,7 +19590,7 @@ if i32.const 16 i32.const 30 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -19576,13 +19607,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 3 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 464 + i32.const 224 + i32.const 496 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -19594,7 +19625,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -19650,8 +19681,8 @@ i32.const 0 i32.lt_s if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -19825,7 +19856,7 @@ if i32.const 24 i32.const 31 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -19879,8 +19910,8 @@ i32.load offset=12 i32.ge_u if - i32.const 512 - i32.const 464 + i32.const 544 + i32.const 496 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -20407,7 +20438,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -20427,7 +20458,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -20444,7 +20475,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -20464,7 +20495,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -20485,7 +20516,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -20502,7 +20533,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -20522,7 +20553,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -20539,7 +20570,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -20559,7 +20590,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -20601,7 +20632,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -20616,7 +20647,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -20650,7 +20681,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -20663,7 +20694,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -20684,7 +20715,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -20701,7 +20732,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -20718,7 +20749,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -20738,7 +20769,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -20760,7 +20791,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -20780,7 +20811,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -20797,7 +20828,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -20817,7 +20848,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -20832,7 +20863,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -20864,11 +20895,6 @@ (func $~start call $start:std/map ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -20898,7 +20924,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -20909,7 +20935,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -20924,7 +20950,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -20941,7 +20967,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -20979,14 +21005,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index b23e9028df..b1e2c5269b 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -69,12 +69,12 @@ (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 1064) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data (i32.const 1256) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 1302) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 3342) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data (i32.const 3600) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 1080) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") + (data (i32.const 1272) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data (i32.const 1318) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 3358) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (data (i32.const 3612) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) (global $~lib/math/res128_hi (mut i64) (i64.const 0)) @@ -3281,7 +3281,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 1064 + i32.const 1080 i32.add local.tee $7 i64.load @@ -4003,7 +4003,7 @@ i32.shr_s i32.const 3 i32.shl - i32.const 1256 + i32.const 1272 i32.add local.tee $9 i64.load @@ -5245,7 +5245,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 1288 + i32.const 1304 i32.add local.tee $6 i64.load offset=8 @@ -5459,7 +5459,7 @@ i32.and i32.const 3 i32.shl - i32.const 3336 + i32.const 3352 i32.add i64.load local.get $5 @@ -8415,7 +8415,7 @@ i32.eqz if i32.const 0 - i32.const 3616 + i32.const 3632 i32.const 1399 i32.const 5 call $~lib/builtins/abort @@ -9430,7 +9430,7 @@ i32.shr_s i32.const 3 i32.shl - i32.const 1256 + i32.const 1272 i32.add local.tee $10 i64.load @@ -10282,7 +10282,7 @@ i32.shr_s i32.const 3 i32.shl - i32.const 1256 + i32.const 1272 i32.add local.tee $10 i64.load @@ -11143,7 +11143,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -11156,7 +11156,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -11169,7 +11169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -11182,7 +11182,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -11195,7 +11195,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -11208,7 +11208,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -11221,7 +11221,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -11235,7 +11235,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -11249,7 +11249,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -11263,7 +11263,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -11277,7 +11277,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -11291,7 +11291,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 123 i32.const 1 call $~lib/builtins/abort @@ -11305,7 +11305,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 124 i32.const 1 call $~lib/builtins/abort @@ -11319,7 +11319,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -11332,7 +11332,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 136 i32.const 1 call $~lib/builtins/abort @@ -11345,7 +11345,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -11358,7 +11358,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -11371,7 +11371,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 139 i32.const 1 call $~lib/builtins/abort @@ -11384,7 +11384,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -11397,7 +11397,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 141 i32.const 1 call $~lib/builtins/abort @@ -11410,7 +11410,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 142 i32.const 1 call $~lib/builtins/abort @@ -11423,7 +11423,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -11436,7 +11436,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -11449,7 +11449,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -11462,7 +11462,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -11475,7 +11475,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 149 i32.const 1 call $~lib/builtins/abort @@ -11488,7 +11488,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 150 i32.const 1 call $~lib/builtins/abort @@ -11501,7 +11501,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -11514,7 +11514,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -11527,7 +11527,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 153 i32.const 1 call $~lib/builtins/abort @@ -11540,7 +11540,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 154 i32.const 1 call $~lib/builtins/abort @@ -11553,7 +11553,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -11566,7 +11566,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -11579,7 +11579,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -11592,7 +11592,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -11605,7 +11605,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -11618,7 +11618,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -11631,7 +11631,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -11644,7 +11644,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -11657,7 +11657,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -11670,7 +11670,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -11683,7 +11683,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -11696,7 +11696,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -11709,7 +11709,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -11722,7 +11722,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 176 i32.const 1 call $~lib/builtins/abort @@ -11735,7 +11735,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -11748,7 +11748,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 178 i32.const 1 call $~lib/builtins/abort @@ -11761,7 +11761,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 179 i32.const 1 call $~lib/builtins/abort @@ -11774,7 +11774,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 180 i32.const 1 call $~lib/builtins/abort @@ -11787,7 +11787,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -11800,7 +11800,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 182 i32.const 1 call $~lib/builtins/abort @@ -11813,7 +11813,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 183 i32.const 1 call $~lib/builtins/abort @@ -11826,7 +11826,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 184 i32.const 1 call $~lib/builtins/abort @@ -11839,7 +11839,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -11852,7 +11852,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 188 i32.const 1 call $~lib/builtins/abort @@ -11865,7 +11865,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 189 i32.const 1 call $~lib/builtins/abort @@ -11878,7 +11878,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 190 i32.const 1 call $~lib/builtins/abort @@ -11891,7 +11891,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 191 i32.const 1 call $~lib/builtins/abort @@ -11904,7 +11904,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 192 i32.const 1 call $~lib/builtins/abort @@ -11917,7 +11917,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -11930,7 +11930,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 194 i32.const 1 call $~lib/builtins/abort @@ -11943,7 +11943,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 195 i32.const 1 call $~lib/builtins/abort @@ -11956,7 +11956,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 196 i32.const 1 call $~lib/builtins/abort @@ -11969,7 +11969,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 197 i32.const 1 call $~lib/builtins/abort @@ -11982,7 +11982,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 198 i32.const 1 call $~lib/builtins/abort @@ -11995,7 +11995,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -12008,7 +12008,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 200 i32.const 1 call $~lib/builtins/abort @@ -12021,7 +12021,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 201 i32.const 1 call $~lib/builtins/abort @@ -12034,7 +12034,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 202 i32.const 1 call $~lib/builtins/abort @@ -12047,7 +12047,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 203 i32.const 1 call $~lib/builtins/abort @@ -12060,7 +12060,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 204 i32.const 1 call $~lib/builtins/abort @@ -12073,7 +12073,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 205 i32.const 1 call $~lib/builtins/abort @@ -12085,7 +12085,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 217 i32.const 1 call $~lib/builtins/abort @@ -12097,7 +12097,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 218 i32.const 1 call $~lib/builtins/abort @@ -12109,7 +12109,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -12121,7 +12121,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 220 i32.const 1 call $~lib/builtins/abort @@ -12133,7 +12133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 221 i32.const 1 call $~lib/builtins/abort @@ -12145,7 +12145,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 222 i32.const 1 call $~lib/builtins/abort @@ -12157,7 +12157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 223 i32.const 1 call $~lib/builtins/abort @@ -12169,7 +12169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 224 i32.const 1 call $~lib/builtins/abort @@ -12181,7 +12181,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 225 i32.const 1 call $~lib/builtins/abort @@ -12193,7 +12193,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 226 i32.const 1 call $~lib/builtins/abort @@ -12205,7 +12205,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 229 i32.const 1 call $~lib/builtins/abort @@ -12217,7 +12217,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 230 i32.const 1 call $~lib/builtins/abort @@ -12229,7 +12229,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -12241,7 +12241,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 232 i32.const 1 call $~lib/builtins/abort @@ -12253,7 +12253,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 233 i32.const 1 call $~lib/builtins/abort @@ -12265,7 +12265,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 234 i32.const 1 call $~lib/builtins/abort @@ -12277,7 +12277,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 235 i32.const 1 call $~lib/builtins/abort @@ -12289,7 +12289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 244 i32.const 1 call $~lib/builtins/abort @@ -12301,7 +12301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 245 i32.const 1 call $~lib/builtins/abort @@ -12313,7 +12313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 246 i32.const 1 call $~lib/builtins/abort @@ -12325,7 +12325,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 247 i32.const 1 call $~lib/builtins/abort @@ -12337,7 +12337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 248 i32.const 1 call $~lib/builtins/abort @@ -12349,7 +12349,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 249 i32.const 1 call $~lib/builtins/abort @@ -12361,7 +12361,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 250 i32.const 1 call $~lib/builtins/abort @@ -12373,7 +12373,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 251 i32.const 1 call $~lib/builtins/abort @@ -12385,7 +12385,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -12397,7 +12397,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 253 i32.const 1 call $~lib/builtins/abort @@ -12409,7 +12409,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 256 i32.const 1 call $~lib/builtins/abort @@ -12421,7 +12421,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 257 i32.const 1 call $~lib/builtins/abort @@ -12433,7 +12433,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 258 i32.const 1 call $~lib/builtins/abort @@ -12445,7 +12445,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 259 i32.const 1 call $~lib/builtins/abort @@ -12457,7 +12457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 260 i32.const 1 call $~lib/builtins/abort @@ -12469,7 +12469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 261 i32.const 1 call $~lib/builtins/abort @@ -12481,7 +12481,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 262 i32.const 1 call $~lib/builtins/abort @@ -12494,7 +12494,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 274 i32.const 1 call $~lib/builtins/abort @@ -12507,7 +12507,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 275 i32.const 1 call $~lib/builtins/abort @@ -12520,7 +12520,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 276 i32.const 1 call $~lib/builtins/abort @@ -12533,7 +12533,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 277 i32.const 1 call $~lib/builtins/abort @@ -12546,7 +12546,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 278 i32.const 1 call $~lib/builtins/abort @@ -12559,7 +12559,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 279 i32.const 1 call $~lib/builtins/abort @@ -12572,7 +12572,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 280 i32.const 1 call $~lib/builtins/abort @@ -12585,7 +12585,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 281 i32.const 1 call $~lib/builtins/abort @@ -12598,7 +12598,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 282 i32.const 1 call $~lib/builtins/abort @@ -12611,7 +12611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 283 i32.const 1 call $~lib/builtins/abort @@ -12624,7 +12624,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 286 i32.const 1 call $~lib/builtins/abort @@ -12637,7 +12637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 287 i32.const 1 call $~lib/builtins/abort @@ -12650,7 +12650,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 288 i32.const 1 call $~lib/builtins/abort @@ -12663,7 +12663,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 289 i32.const 1 call $~lib/builtins/abort @@ -12676,7 +12676,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 290 i32.const 1 call $~lib/builtins/abort @@ -12689,7 +12689,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 291 i32.const 1 call $~lib/builtins/abort @@ -12702,7 +12702,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 292 i32.const 1 call $~lib/builtins/abort @@ -12715,7 +12715,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 293 i32.const 1 call $~lib/builtins/abort @@ -12728,7 +12728,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -12741,7 +12741,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 295 i32.const 1 call $~lib/builtins/abort @@ -12754,7 +12754,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 304 i32.const 1 call $~lib/builtins/abort @@ -12767,7 +12767,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 305 i32.const 1 call $~lib/builtins/abort @@ -12780,7 +12780,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 306 i32.const 1 call $~lib/builtins/abort @@ -12793,7 +12793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 307 i32.const 1 call $~lib/builtins/abort @@ -12806,7 +12806,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 308 i32.const 1 call $~lib/builtins/abort @@ -12819,7 +12819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 309 i32.const 1 call $~lib/builtins/abort @@ -12832,7 +12832,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 310 i32.const 1 call $~lib/builtins/abort @@ -12845,7 +12845,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 311 i32.const 1 call $~lib/builtins/abort @@ -12858,7 +12858,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 312 i32.const 1 call $~lib/builtins/abort @@ -12871,7 +12871,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 313 i32.const 1 call $~lib/builtins/abort @@ -12884,7 +12884,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 316 i32.const 1 call $~lib/builtins/abort @@ -12897,7 +12897,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 317 i32.const 1 call $~lib/builtins/abort @@ -12910,7 +12910,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 318 i32.const 1 call $~lib/builtins/abort @@ -12923,7 +12923,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 319 i32.const 1 call $~lib/builtins/abort @@ -12936,7 +12936,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 320 i32.const 1 call $~lib/builtins/abort @@ -12949,7 +12949,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 321 i32.const 1 call $~lib/builtins/abort @@ -12962,7 +12962,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 322 i32.const 1 call $~lib/builtins/abort @@ -12975,7 +12975,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 323 i32.const 1 call $~lib/builtins/abort @@ -12988,7 +12988,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 324 i32.const 1 call $~lib/builtins/abort @@ -13001,7 +13001,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 325 i32.const 1 call $~lib/builtins/abort @@ -13014,7 +13014,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 326 i32.const 1 call $~lib/builtins/abort @@ -13027,7 +13027,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 338 i32.const 1 call $~lib/builtins/abort @@ -13040,7 +13040,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 339 i32.const 1 call $~lib/builtins/abort @@ -13053,7 +13053,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 340 i32.const 1 call $~lib/builtins/abort @@ -13066,7 +13066,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 341 i32.const 1 call $~lib/builtins/abort @@ -13079,7 +13079,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 342 i32.const 1 call $~lib/builtins/abort @@ -13092,7 +13092,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 343 i32.const 1 call $~lib/builtins/abort @@ -13105,7 +13105,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 344 i32.const 1 call $~lib/builtins/abort @@ -13118,7 +13118,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 345 i32.const 1 call $~lib/builtins/abort @@ -13131,7 +13131,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 346 i32.const 1 call $~lib/builtins/abort @@ -13144,7 +13144,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 347 i32.const 1 call $~lib/builtins/abort @@ -13157,7 +13157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 350 i32.const 1 call $~lib/builtins/abort @@ -13170,7 +13170,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 351 i32.const 1 call $~lib/builtins/abort @@ -13183,7 +13183,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 352 i32.const 1 call $~lib/builtins/abort @@ -13196,7 +13196,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 353 i32.const 1 call $~lib/builtins/abort @@ -13209,7 +13209,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 354 i32.const 1 call $~lib/builtins/abort @@ -13222,7 +13222,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 355 i32.const 1 call $~lib/builtins/abort @@ -13235,7 +13235,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 356 i32.const 1 call $~lib/builtins/abort @@ -13248,7 +13248,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 372 i32.const 1 call $~lib/builtins/abort @@ -13261,7 +13261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 374 i32.const 1 call $~lib/builtins/abort @@ -13274,7 +13274,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 375 i32.const 1 call $~lib/builtins/abort @@ -13287,7 +13287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 384 i32.const 1 call $~lib/builtins/abort @@ -13300,7 +13300,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 385 i32.const 1 call $~lib/builtins/abort @@ -13313,7 +13313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 386 i32.const 1 call $~lib/builtins/abort @@ -13326,7 +13326,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 387 i32.const 1 call $~lib/builtins/abort @@ -13339,7 +13339,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 388 i32.const 1 call $~lib/builtins/abort @@ -13352,7 +13352,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 389 i32.const 1 call $~lib/builtins/abort @@ -13365,7 +13365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 390 i32.const 1 call $~lib/builtins/abort @@ -13378,7 +13378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 391 i32.const 1 call $~lib/builtins/abort @@ -13391,7 +13391,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 392 i32.const 1 call $~lib/builtins/abort @@ -13404,7 +13404,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 393 i32.const 1 call $~lib/builtins/abort @@ -13417,7 +13417,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 396 i32.const 1 call $~lib/builtins/abort @@ -13430,7 +13430,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 397 i32.const 1 call $~lib/builtins/abort @@ -13443,7 +13443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 398 i32.const 1 call $~lib/builtins/abort @@ -13456,7 +13456,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 399 i32.const 1 call $~lib/builtins/abort @@ -13469,7 +13469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 400 i32.const 1 call $~lib/builtins/abort @@ -13482,7 +13482,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 401 i32.const 1 call $~lib/builtins/abort @@ -13495,7 +13495,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 402 i32.const 1 call $~lib/builtins/abort @@ -13508,7 +13508,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 403 i32.const 1 call $~lib/builtins/abort @@ -13521,7 +13521,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 415 i32.const 1 call $~lib/builtins/abort @@ -13534,7 +13534,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 416 i32.const 1 call $~lib/builtins/abort @@ -13547,7 +13547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 417 i32.const 1 call $~lib/builtins/abort @@ -13560,7 +13560,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 418 i32.const 1 call $~lib/builtins/abort @@ -13573,7 +13573,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 419 i32.const 1 call $~lib/builtins/abort @@ -13586,7 +13586,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 420 i32.const 1 call $~lib/builtins/abort @@ -13599,7 +13599,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 421 i32.const 1 call $~lib/builtins/abort @@ -13612,7 +13612,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 422 i32.const 1 call $~lib/builtins/abort @@ -13625,7 +13625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 423 i32.const 1 call $~lib/builtins/abort @@ -13638,7 +13638,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 424 i32.const 1 call $~lib/builtins/abort @@ -13651,7 +13651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 427 i32.const 1 call $~lib/builtins/abort @@ -13664,7 +13664,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 428 i32.const 1 call $~lib/builtins/abort @@ -13677,7 +13677,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 429 i32.const 1 call $~lib/builtins/abort @@ -13690,7 +13690,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 430 i32.const 1 call $~lib/builtins/abort @@ -13703,7 +13703,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 431 i32.const 1 call $~lib/builtins/abort @@ -13716,7 +13716,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 432 i32.const 1 call $~lib/builtins/abort @@ -13729,7 +13729,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 433 i32.const 1 call $~lib/builtins/abort @@ -13742,7 +13742,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 434 i32.const 1 call $~lib/builtins/abort @@ -13755,7 +13755,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 435 i32.const 1 call $~lib/builtins/abort @@ -13768,7 +13768,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 436 i32.const 1 call $~lib/builtins/abort @@ -13781,7 +13781,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 445 i32.const 1 call $~lib/builtins/abort @@ -13794,7 +13794,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 446 i32.const 1 call $~lib/builtins/abort @@ -13807,7 +13807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 447 i32.const 1 call $~lib/builtins/abort @@ -13820,7 +13820,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 448 i32.const 1 call $~lib/builtins/abort @@ -13833,7 +13833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 449 i32.const 1 call $~lib/builtins/abort @@ -13846,7 +13846,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 450 i32.const 1 call $~lib/builtins/abort @@ -13859,7 +13859,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 451 i32.const 1 call $~lib/builtins/abort @@ -13872,7 +13872,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 452 i32.const 1 call $~lib/builtins/abort @@ -13885,7 +13885,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 453 i32.const 1 call $~lib/builtins/abort @@ -13898,7 +13898,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 454 i32.const 1 call $~lib/builtins/abort @@ -13911,7 +13911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 457 i32.const 1 call $~lib/builtins/abort @@ -13924,7 +13924,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 458 i32.const 1 call $~lib/builtins/abort @@ -13937,7 +13937,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 459 i32.const 1 call $~lib/builtins/abort @@ -13950,7 +13950,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 460 i32.const 1 call $~lib/builtins/abort @@ -13963,7 +13963,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 461 i32.const 1 call $~lib/builtins/abort @@ -13976,7 +13976,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 462 i32.const 1 call $~lib/builtins/abort @@ -13989,7 +13989,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 463 i32.const 1 call $~lib/builtins/abort @@ -14002,7 +14002,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 464 i32.const 1 call $~lib/builtins/abort @@ -14015,7 +14015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 465 i32.const 1 call $~lib/builtins/abort @@ -14028,7 +14028,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 466 i32.const 1 call $~lib/builtins/abort @@ -14041,7 +14041,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 478 i32.const 1 call $~lib/builtins/abort @@ -14054,7 +14054,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 479 i32.const 1 call $~lib/builtins/abort @@ -14067,7 +14067,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 480 i32.const 1 call $~lib/builtins/abort @@ -14080,7 +14080,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 481 i32.const 1 call $~lib/builtins/abort @@ -14093,7 +14093,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 482 i32.const 1 call $~lib/builtins/abort @@ -14106,7 +14106,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 483 i32.const 1 call $~lib/builtins/abort @@ -14119,7 +14119,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 484 i32.const 1 call $~lib/builtins/abort @@ -14132,7 +14132,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 485 i32.const 1 call $~lib/builtins/abort @@ -14145,7 +14145,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 486 i32.const 1 call $~lib/builtins/abort @@ -14158,7 +14158,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 487 i32.const 1 call $~lib/builtins/abort @@ -14171,7 +14171,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 490 i32.const 1 call $~lib/builtins/abort @@ -14184,7 +14184,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 491 i32.const 1 call $~lib/builtins/abort @@ -14197,7 +14197,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 492 i32.const 1 call $~lib/builtins/abort @@ -14210,7 +14210,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 493 i32.const 1 call $~lib/builtins/abort @@ -14223,7 +14223,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 494 i32.const 1 call $~lib/builtins/abort @@ -14236,7 +14236,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 523 i32.const 1 call $~lib/builtins/abort @@ -14249,7 +14249,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 524 i32.const 1 call $~lib/builtins/abort @@ -14262,7 +14262,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 525 i32.const 1 call $~lib/builtins/abort @@ -14275,7 +14275,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 526 i32.const 1 call $~lib/builtins/abort @@ -14288,7 +14288,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 527 i32.const 1 call $~lib/builtins/abort @@ -14301,7 +14301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 528 i32.const 1 call $~lib/builtins/abort @@ -14314,7 +14314,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 529 i32.const 1 call $~lib/builtins/abort @@ -14327,7 +14327,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 530 i32.const 1 call $~lib/builtins/abort @@ -14340,7 +14340,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 531 i32.const 1 call $~lib/builtins/abort @@ -14353,7 +14353,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 532 i32.const 1 call $~lib/builtins/abort @@ -14366,7 +14366,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 535 i32.const 1 call $~lib/builtins/abort @@ -14379,7 +14379,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 536 i32.const 1 call $~lib/builtins/abort @@ -14392,7 +14392,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 537 i32.const 1 call $~lib/builtins/abort @@ -14405,7 +14405,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 538 i32.const 1 call $~lib/builtins/abort @@ -14418,7 +14418,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 539 i32.const 1 call $~lib/builtins/abort @@ -14431,7 +14431,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 551 i32.const 1 call $~lib/builtins/abort @@ -14444,7 +14444,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 552 i32.const 1 call $~lib/builtins/abort @@ -14457,7 +14457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 553 i32.const 1 call $~lib/builtins/abort @@ -14470,7 +14470,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 554 i32.const 1 call $~lib/builtins/abort @@ -14483,7 +14483,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 555 i32.const 1 call $~lib/builtins/abort @@ -14496,7 +14496,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 556 i32.const 1 call $~lib/builtins/abort @@ -14509,7 +14509,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 557 i32.const 1 call $~lib/builtins/abort @@ -14522,7 +14522,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 558 i32.const 1 call $~lib/builtins/abort @@ -14535,7 +14535,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 559 i32.const 1 call $~lib/builtins/abort @@ -14548,7 +14548,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 560 i32.const 1 call $~lib/builtins/abort @@ -14561,7 +14561,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 563 i32.const 1 call $~lib/builtins/abort @@ -14574,7 +14574,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 564 i32.const 1 call $~lib/builtins/abort @@ -14587,7 +14587,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -14600,7 +14600,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 566 i32.const 1 call $~lib/builtins/abort @@ -14613,7 +14613,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 567 i32.const 1 call $~lib/builtins/abort @@ -14626,7 +14626,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 568 i32.const 1 call $~lib/builtins/abort @@ -14639,7 +14639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -14652,7 +14652,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -14665,7 +14665,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 579 i32.const 1 call $~lib/builtins/abort @@ -14678,7 +14678,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 580 i32.const 1 call $~lib/builtins/abort @@ -14691,7 +14691,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 581 i32.const 1 call $~lib/builtins/abort @@ -14704,7 +14704,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 582 i32.const 1 call $~lib/builtins/abort @@ -14717,7 +14717,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 583 i32.const 1 call $~lib/builtins/abort @@ -14730,7 +14730,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -14743,7 +14743,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -14756,7 +14756,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -14769,7 +14769,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -14782,7 +14782,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -14795,7 +14795,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 591 i32.const 1 call $~lib/builtins/abort @@ -14808,7 +14808,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -14821,7 +14821,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -14834,7 +14834,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -14847,7 +14847,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -14860,7 +14860,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -14873,7 +14873,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -14886,7 +14886,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 609 i32.const 1 call $~lib/builtins/abort @@ -14899,7 +14899,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -14912,7 +14912,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -14925,7 +14925,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -14938,7 +14938,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -14951,7 +14951,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -14964,7 +14964,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -14977,7 +14977,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 616 i32.const 1 call $~lib/builtins/abort @@ -14990,7 +14990,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 617 i32.const 1 call $~lib/builtins/abort @@ -15003,7 +15003,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 618 i32.const 1 call $~lib/builtins/abort @@ -15016,7 +15016,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 621 i32.const 1 call $~lib/builtins/abort @@ -15029,7 +15029,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -15042,7 +15042,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -15055,7 +15055,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -15068,7 +15068,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -15081,7 +15081,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -15094,7 +15094,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -15107,7 +15107,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -15120,7 +15120,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -15133,7 +15133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -15146,7 +15146,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -15159,7 +15159,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 632 i32.const 1 call $~lib/builtins/abort @@ -15172,7 +15172,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -15185,7 +15185,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 634 i32.const 1 call $~lib/builtins/abort @@ -15198,7 +15198,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 643 i32.const 1 call $~lib/builtins/abort @@ -15211,7 +15211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -15224,7 +15224,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -15237,7 +15237,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -15250,7 +15250,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -15263,7 +15263,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 648 i32.const 1 call $~lib/builtins/abort @@ -15276,7 +15276,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 649 i32.const 1 call $~lib/builtins/abort @@ -15289,7 +15289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 650 i32.const 1 call $~lib/builtins/abort @@ -15302,7 +15302,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -15315,7 +15315,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 652 i32.const 1 call $~lib/builtins/abort @@ -15328,7 +15328,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 655 i32.const 1 call $~lib/builtins/abort @@ -15341,7 +15341,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -15354,7 +15354,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -15367,7 +15367,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -15380,7 +15380,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -15393,7 +15393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -15406,7 +15406,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -15419,7 +15419,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -15432,7 +15432,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -15445,7 +15445,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -15458,7 +15458,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -15471,7 +15471,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 666 i32.const 1 call $~lib/builtins/abort @@ -15484,7 +15484,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 667 i32.const 1 call $~lib/builtins/abort @@ -15497,7 +15497,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -15511,7 +15511,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 680 i32.const 1 call $~lib/builtins/abort @@ -15525,7 +15525,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -15539,7 +15539,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -15553,7 +15553,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -15567,7 +15567,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -15581,7 +15581,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 685 i32.const 1 call $~lib/builtins/abort @@ -15595,7 +15595,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 686 i32.const 1 call $~lib/builtins/abort @@ -15609,7 +15609,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 687 i32.const 1 call $~lib/builtins/abort @@ -15623,7 +15623,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 688 i32.const 1 call $~lib/builtins/abort @@ -15637,7 +15637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 689 i32.const 1 call $~lib/builtins/abort @@ -15651,7 +15651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 692 i32.const 1 call $~lib/builtins/abort @@ -15665,7 +15665,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -15679,7 +15679,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -15693,7 +15693,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 695 i32.const 1 call $~lib/builtins/abort @@ -15707,7 +15707,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -15721,7 +15721,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -15735,7 +15735,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -15749,7 +15749,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -15763,7 +15763,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -15777,7 +15777,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -15791,7 +15791,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 702 i32.const 1 call $~lib/builtins/abort @@ -15805,7 +15805,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -15819,7 +15819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -15833,7 +15833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -15847,7 +15847,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 706 i32.const 1 call $~lib/builtins/abort @@ -15861,7 +15861,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 707 i32.const 1 call $~lib/builtins/abort @@ -15875,7 +15875,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 708 i32.const 1 call $~lib/builtins/abort @@ -15889,7 +15889,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -15903,7 +15903,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -15917,7 +15917,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -15931,7 +15931,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 712 i32.const 1 call $~lib/builtins/abort @@ -15945,7 +15945,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -15959,7 +15959,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -15973,7 +15973,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 715 i32.const 1 call $~lib/builtins/abort @@ -15987,7 +15987,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -16001,7 +16001,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -16015,7 +16015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 718 i32.const 1 call $~lib/builtins/abort @@ -16029,7 +16029,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -16043,7 +16043,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 720 i32.const 1 call $~lib/builtins/abort @@ -16057,7 +16057,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 721 i32.const 1 call $~lib/builtins/abort @@ -16071,7 +16071,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 730 i32.const 1 call $~lib/builtins/abort @@ -16085,7 +16085,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 731 i32.const 1 call $~lib/builtins/abort @@ -16099,7 +16099,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 732 i32.const 1 call $~lib/builtins/abort @@ -16113,7 +16113,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 733 i32.const 1 call $~lib/builtins/abort @@ -16127,7 +16127,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 734 i32.const 1 call $~lib/builtins/abort @@ -16141,7 +16141,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 735 i32.const 1 call $~lib/builtins/abort @@ -16155,7 +16155,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 736 i32.const 1 call $~lib/builtins/abort @@ -16169,7 +16169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 737 i32.const 1 call $~lib/builtins/abort @@ -16183,7 +16183,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 738 i32.const 1 call $~lib/builtins/abort @@ -16197,7 +16197,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 739 i32.const 1 call $~lib/builtins/abort @@ -16211,7 +16211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 742 i32.const 1 call $~lib/builtins/abort @@ -16225,7 +16225,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 743 i32.const 1 call $~lib/builtins/abort @@ -16239,7 +16239,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 744 i32.const 1 call $~lib/builtins/abort @@ -16253,7 +16253,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 745 i32.const 1 call $~lib/builtins/abort @@ -16267,7 +16267,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 746 i32.const 1 call $~lib/builtins/abort @@ -16281,7 +16281,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 747 i32.const 1 call $~lib/builtins/abort @@ -16295,7 +16295,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 748 i32.const 1 call $~lib/builtins/abort @@ -16309,7 +16309,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 749 i32.const 1 call $~lib/builtins/abort @@ -16323,7 +16323,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 750 i32.const 1 call $~lib/builtins/abort @@ -16337,7 +16337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 751 i32.const 1 call $~lib/builtins/abort @@ -16351,7 +16351,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 752 i32.const 1 call $~lib/builtins/abort @@ -16365,7 +16365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 753 i32.const 1 call $~lib/builtins/abort @@ -16379,7 +16379,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 754 i32.const 1 call $~lib/builtins/abort @@ -16393,7 +16393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 755 i32.const 1 call $~lib/builtins/abort @@ -16407,7 +16407,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 756 i32.const 1 call $~lib/builtins/abort @@ -16421,7 +16421,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 757 i32.const 1 call $~lib/builtins/abort @@ -16435,7 +16435,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 758 i32.const 1 call $~lib/builtins/abort @@ -16449,7 +16449,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 759 i32.const 1 call $~lib/builtins/abort @@ -16463,7 +16463,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 760 i32.const 1 call $~lib/builtins/abort @@ -16477,7 +16477,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 761 i32.const 1 call $~lib/builtins/abort @@ -16491,7 +16491,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 762 i32.const 1 call $~lib/builtins/abort @@ -16505,7 +16505,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 763 i32.const 1 call $~lib/builtins/abort @@ -16519,7 +16519,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 764 i32.const 1 call $~lib/builtins/abort @@ -16533,7 +16533,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 765 i32.const 1 call $~lib/builtins/abort @@ -16547,7 +16547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 766 i32.const 1 call $~lib/builtins/abort @@ -16561,7 +16561,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 767 i32.const 1 call $~lib/builtins/abort @@ -16575,7 +16575,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 768 i32.const 1 call $~lib/builtins/abort @@ -16589,7 +16589,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 769 i32.const 1 call $~lib/builtins/abort @@ -16602,7 +16602,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 781 i32.const 1 call $~lib/builtins/abort @@ -16615,7 +16615,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 782 i32.const 1 call $~lib/builtins/abort @@ -16628,7 +16628,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 783 i32.const 1 call $~lib/builtins/abort @@ -16641,7 +16641,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 784 i32.const 1 call $~lib/builtins/abort @@ -16654,7 +16654,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 785 i32.const 1 call $~lib/builtins/abort @@ -16667,7 +16667,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 786 i32.const 1 call $~lib/builtins/abort @@ -16680,7 +16680,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 787 i32.const 1 call $~lib/builtins/abort @@ -16693,7 +16693,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 788 i32.const 1 call $~lib/builtins/abort @@ -16706,7 +16706,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 789 i32.const 1 call $~lib/builtins/abort @@ -16719,7 +16719,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 790 i32.const 1 call $~lib/builtins/abort @@ -16732,7 +16732,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 793 i32.const 1 call $~lib/builtins/abort @@ -16745,7 +16745,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 794 i32.const 1 call $~lib/builtins/abort @@ -16758,7 +16758,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 795 i32.const 1 call $~lib/builtins/abort @@ -16771,7 +16771,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 796 i32.const 1 call $~lib/builtins/abort @@ -16784,7 +16784,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 797 i32.const 1 call $~lib/builtins/abort @@ -16797,7 +16797,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 798 i32.const 1 call $~lib/builtins/abort @@ -16810,7 +16810,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 799 i32.const 1 call $~lib/builtins/abort @@ -16823,7 +16823,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 800 i32.const 1 call $~lib/builtins/abort @@ -16836,7 +16836,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 801 i32.const 1 call $~lib/builtins/abort @@ -16849,7 +16849,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 802 i32.const 1 call $~lib/builtins/abort @@ -16862,7 +16862,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 811 i32.const 1 call $~lib/builtins/abort @@ -16875,7 +16875,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 812 i32.const 1 call $~lib/builtins/abort @@ -16888,7 +16888,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 813 i32.const 1 call $~lib/builtins/abort @@ -16901,7 +16901,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 814 i32.const 1 call $~lib/builtins/abort @@ -16914,7 +16914,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 815 i32.const 1 call $~lib/builtins/abort @@ -16927,7 +16927,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 816 i32.const 1 call $~lib/builtins/abort @@ -16940,7 +16940,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 817 i32.const 1 call $~lib/builtins/abort @@ -16953,7 +16953,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 818 i32.const 1 call $~lib/builtins/abort @@ -16966,7 +16966,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 819 i32.const 1 call $~lib/builtins/abort @@ -16979,7 +16979,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 820 i32.const 1 call $~lib/builtins/abort @@ -16992,7 +16992,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 823 i32.const 1 call $~lib/builtins/abort @@ -17005,7 +17005,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 824 i32.const 1 call $~lib/builtins/abort @@ -17018,7 +17018,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 825 i32.const 1 call $~lib/builtins/abort @@ -17031,7 +17031,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 826 i32.const 1 call $~lib/builtins/abort @@ -17044,7 +17044,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 827 i32.const 1 call $~lib/builtins/abort @@ -17057,7 +17057,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 828 i32.const 1 call $~lib/builtins/abort @@ -17070,7 +17070,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 829 i32.const 1 call $~lib/builtins/abort @@ -17083,7 +17083,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 830 i32.const 1 call $~lib/builtins/abort @@ -17096,7 +17096,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 831 i32.const 1 call $~lib/builtins/abort @@ -17109,7 +17109,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 832 i32.const 1 call $~lib/builtins/abort @@ -17121,7 +17121,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 844 i32.const 1 call $~lib/builtins/abort @@ -17133,7 +17133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 845 i32.const 1 call $~lib/builtins/abort @@ -17145,7 +17145,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 846 i32.const 1 call $~lib/builtins/abort @@ -17157,7 +17157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 847 i32.const 1 call $~lib/builtins/abort @@ -17169,7 +17169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 848 i32.const 1 call $~lib/builtins/abort @@ -17181,7 +17181,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 849 i32.const 1 call $~lib/builtins/abort @@ -17193,7 +17193,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 850 i32.const 1 call $~lib/builtins/abort @@ -17205,7 +17205,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 851 i32.const 1 call $~lib/builtins/abort @@ -17217,7 +17217,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 852 i32.const 1 call $~lib/builtins/abort @@ -17229,7 +17229,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 853 i32.const 1 call $~lib/builtins/abort @@ -17241,7 +17241,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 856 i32.const 1 call $~lib/builtins/abort @@ -17253,7 +17253,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 857 i32.const 1 call $~lib/builtins/abort @@ -17265,7 +17265,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 858 i32.const 1 call $~lib/builtins/abort @@ -17277,7 +17277,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 859 i32.const 1 call $~lib/builtins/abort @@ -17289,7 +17289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 860 i32.const 1 call $~lib/builtins/abort @@ -17301,7 +17301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 861 i32.const 1 call $~lib/builtins/abort @@ -17313,7 +17313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 862 i32.const 1 call $~lib/builtins/abort @@ -17325,7 +17325,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 863 i32.const 1 call $~lib/builtins/abort @@ -17337,7 +17337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 864 i32.const 1 call $~lib/builtins/abort @@ -17349,7 +17349,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 865 i32.const 1 call $~lib/builtins/abort @@ -17361,7 +17361,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 866 i32.const 1 call $~lib/builtins/abort @@ -17373,7 +17373,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 867 i32.const 1 call $~lib/builtins/abort @@ -17385,7 +17385,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 868 i32.const 1 call $~lib/builtins/abort @@ -17397,7 +17397,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 869 i32.const 1 call $~lib/builtins/abort @@ -17409,7 +17409,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 870 i32.const 1 call $~lib/builtins/abort @@ -17421,7 +17421,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 871 i32.const 1 call $~lib/builtins/abort @@ -17433,7 +17433,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 872 i32.const 1 call $~lib/builtins/abort @@ -17445,7 +17445,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 873 i32.const 1 call $~lib/builtins/abort @@ -17457,7 +17457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 874 i32.const 1 call $~lib/builtins/abort @@ -17469,7 +17469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 875 i32.const 1 call $~lib/builtins/abort @@ -17481,7 +17481,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 876 i32.const 1 call $~lib/builtins/abort @@ -17493,7 +17493,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 877 i32.const 1 call $~lib/builtins/abort @@ -17505,7 +17505,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 878 i32.const 1 call $~lib/builtins/abort @@ -17517,7 +17517,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 879 i32.const 1 call $~lib/builtins/abort @@ -17529,7 +17529,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 880 i32.const 1 call $~lib/builtins/abort @@ -17541,7 +17541,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 881 i32.const 1 call $~lib/builtins/abort @@ -17553,7 +17553,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 882 i32.const 1 call $~lib/builtins/abort @@ -17565,7 +17565,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 883 i32.const 1 call $~lib/builtins/abort @@ -17577,7 +17577,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 884 i32.const 1 call $~lib/builtins/abort @@ -17589,7 +17589,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 885 i32.const 1 call $~lib/builtins/abort @@ -17601,7 +17601,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 886 i32.const 1 call $~lib/builtins/abort @@ -17613,7 +17613,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 887 i32.const 1 call $~lib/builtins/abort @@ -17625,7 +17625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 888 i32.const 1 call $~lib/builtins/abort @@ -17637,7 +17637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 889 i32.const 1 call $~lib/builtins/abort @@ -17649,7 +17649,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 890 i32.const 1 call $~lib/builtins/abort @@ -17661,7 +17661,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 891 i32.const 1 call $~lib/builtins/abort @@ -17673,7 +17673,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 892 i32.const 1 call $~lib/builtins/abort @@ -17685,7 +17685,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 893 i32.const 1 call $~lib/builtins/abort @@ -17697,7 +17697,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 894 i32.const 1 call $~lib/builtins/abort @@ -17709,7 +17709,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 895 i32.const 1 call $~lib/builtins/abort @@ -17721,7 +17721,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 896 i32.const 1 call $~lib/builtins/abort @@ -17733,7 +17733,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 897 i32.const 1 call $~lib/builtins/abort @@ -17745,7 +17745,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 898 i32.const 1 call $~lib/builtins/abort @@ -17757,7 +17757,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 899 i32.const 1 call $~lib/builtins/abort @@ -17769,7 +17769,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 900 i32.const 1 call $~lib/builtins/abort @@ -17781,7 +17781,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 909 i32.const 1 call $~lib/builtins/abort @@ -17793,7 +17793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 910 i32.const 1 call $~lib/builtins/abort @@ -17805,7 +17805,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 911 i32.const 1 call $~lib/builtins/abort @@ -17817,7 +17817,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 912 i32.const 1 call $~lib/builtins/abort @@ -17829,7 +17829,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 913 i32.const 1 call $~lib/builtins/abort @@ -17841,7 +17841,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 914 i32.const 1 call $~lib/builtins/abort @@ -17853,7 +17853,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 915 i32.const 1 call $~lib/builtins/abort @@ -17865,7 +17865,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 916 i32.const 1 call $~lib/builtins/abort @@ -17877,7 +17877,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 917 i32.const 1 call $~lib/builtins/abort @@ -17889,7 +17889,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 918 i32.const 1 call $~lib/builtins/abort @@ -17901,7 +17901,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 921 i32.const 1 call $~lib/builtins/abort @@ -17913,7 +17913,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 922 i32.const 1 call $~lib/builtins/abort @@ -17925,7 +17925,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 923 i32.const 1 call $~lib/builtins/abort @@ -17937,7 +17937,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 924 i32.const 1 call $~lib/builtins/abort @@ -17949,7 +17949,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 925 i32.const 1 call $~lib/builtins/abort @@ -17961,7 +17961,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 926 i32.const 1 call $~lib/builtins/abort @@ -17973,7 +17973,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 927 i32.const 1 call $~lib/builtins/abort @@ -17985,7 +17985,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 928 i32.const 1 call $~lib/builtins/abort @@ -17997,7 +17997,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 929 i32.const 1 call $~lib/builtins/abort @@ -18009,7 +18009,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 930 i32.const 1 call $~lib/builtins/abort @@ -18021,7 +18021,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 931 i32.const 1 call $~lib/builtins/abort @@ -18033,7 +18033,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 932 i32.const 1 call $~lib/builtins/abort @@ -18045,7 +18045,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 933 i32.const 1 call $~lib/builtins/abort @@ -18057,7 +18057,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 934 i32.const 1 call $~lib/builtins/abort @@ -18069,7 +18069,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 935 i32.const 1 call $~lib/builtins/abort @@ -18081,7 +18081,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 936 i32.const 1 call $~lib/builtins/abort @@ -18093,7 +18093,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 937 i32.const 1 call $~lib/builtins/abort @@ -18105,7 +18105,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 938 i32.const 1 call $~lib/builtins/abort @@ -18117,7 +18117,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 939 i32.const 1 call $~lib/builtins/abort @@ -18129,7 +18129,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 940 i32.const 1 call $~lib/builtins/abort @@ -18141,7 +18141,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 941 i32.const 1 call $~lib/builtins/abort @@ -18153,7 +18153,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 942 i32.const 1 call $~lib/builtins/abort @@ -18165,7 +18165,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 943 i32.const 1 call $~lib/builtins/abort @@ -18177,7 +18177,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 944 i32.const 1 call $~lib/builtins/abort @@ -18189,7 +18189,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 945 i32.const 1 call $~lib/builtins/abort @@ -18201,7 +18201,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 946 i32.const 1 call $~lib/builtins/abort @@ -18213,7 +18213,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 947 i32.const 1 call $~lib/builtins/abort @@ -18225,7 +18225,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 948 i32.const 1 call $~lib/builtins/abort @@ -18237,7 +18237,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 949 i32.const 1 call $~lib/builtins/abort @@ -18249,7 +18249,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 950 i32.const 1 call $~lib/builtins/abort @@ -18261,7 +18261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 951 i32.const 1 call $~lib/builtins/abort @@ -18273,7 +18273,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 952 i32.const 1 call $~lib/builtins/abort @@ -18285,7 +18285,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 953 i32.const 1 call $~lib/builtins/abort @@ -18297,7 +18297,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 954 i32.const 1 call $~lib/builtins/abort @@ -18309,7 +18309,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 955 i32.const 1 call $~lib/builtins/abort @@ -18321,7 +18321,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 956 i32.const 1 call $~lib/builtins/abort @@ -18333,7 +18333,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 957 i32.const 1 call $~lib/builtins/abort @@ -18345,7 +18345,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 958 i32.const 1 call $~lib/builtins/abort @@ -18357,7 +18357,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 959 i32.const 1 call $~lib/builtins/abort @@ -18369,7 +18369,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 960 i32.const 1 call $~lib/builtins/abort @@ -18381,7 +18381,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 961 i32.const 1 call $~lib/builtins/abort @@ -18393,7 +18393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 962 i32.const 1 call $~lib/builtins/abort @@ -18405,7 +18405,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 963 i32.const 1 call $~lib/builtins/abort @@ -18417,7 +18417,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 964 i32.const 1 call $~lib/builtins/abort @@ -18429,7 +18429,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 965 i32.const 1 call $~lib/builtins/abort @@ -18442,7 +18442,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 976 i32.const 1 call $~lib/builtins/abort @@ -18455,7 +18455,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 977 i32.const 1 call $~lib/builtins/abort @@ -18468,7 +18468,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 978 i32.const 1 call $~lib/builtins/abort @@ -18481,7 +18481,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 979 i32.const 1 call $~lib/builtins/abort @@ -18494,7 +18494,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 980 i32.const 1 call $~lib/builtins/abort @@ -18507,7 +18507,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 981 i32.const 1 call $~lib/builtins/abort @@ -18520,7 +18520,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 982 i32.const 1 call $~lib/builtins/abort @@ -18533,7 +18533,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 983 i32.const 1 call $~lib/builtins/abort @@ -18546,7 +18546,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 984 i32.const 1 call $~lib/builtins/abort @@ -18559,7 +18559,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 985 i32.const 1 call $~lib/builtins/abort @@ -18572,7 +18572,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 988 i32.const 1 call $~lib/builtins/abort @@ -18585,7 +18585,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 989 i32.const 1 call $~lib/builtins/abort @@ -18598,7 +18598,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 990 i32.const 1 call $~lib/builtins/abort @@ -18611,7 +18611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 991 i32.const 1 call $~lib/builtins/abort @@ -18624,7 +18624,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 992 i32.const 1 call $~lib/builtins/abort @@ -18637,7 +18637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 993 i32.const 1 call $~lib/builtins/abort @@ -18650,7 +18650,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 994 i32.const 1 call $~lib/builtins/abort @@ -18663,7 +18663,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 995 i32.const 1 call $~lib/builtins/abort @@ -18676,7 +18676,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 996 i32.const 1 call $~lib/builtins/abort @@ -18689,7 +18689,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 997 i32.const 1 call $~lib/builtins/abort @@ -18702,7 +18702,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 998 i32.const 1 call $~lib/builtins/abort @@ -18715,7 +18715,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 999 i32.const 1 call $~lib/builtins/abort @@ -18728,7 +18728,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1000 i32.const 1 call $~lib/builtins/abort @@ -18741,7 +18741,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1001 i32.const 1 call $~lib/builtins/abort @@ -18754,7 +18754,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1002 i32.const 1 call $~lib/builtins/abort @@ -18767,7 +18767,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1003 i32.const 1 call $~lib/builtins/abort @@ -18780,7 +18780,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1004 i32.const 1 call $~lib/builtins/abort @@ -18793,7 +18793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1005 i32.const 1 call $~lib/builtins/abort @@ -18806,7 +18806,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1006 i32.const 1 call $~lib/builtins/abort @@ -18819,7 +18819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1007 i32.const 1 call $~lib/builtins/abort @@ -18832,7 +18832,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1008 i32.const 1 call $~lib/builtins/abort @@ -18845,7 +18845,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1009 i32.const 1 call $~lib/builtins/abort @@ -18858,7 +18858,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1010 i32.const 1 call $~lib/builtins/abort @@ -18871,7 +18871,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1011 i32.const 1 call $~lib/builtins/abort @@ -18884,7 +18884,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1012 i32.const 1 call $~lib/builtins/abort @@ -18897,7 +18897,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1013 i32.const 1 call $~lib/builtins/abort @@ -18910,7 +18910,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1014 i32.const 1 call $~lib/builtins/abort @@ -18923,7 +18923,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1015 i32.const 1 call $~lib/builtins/abort @@ -18936,7 +18936,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1016 i32.const 1 call $~lib/builtins/abort @@ -18949,7 +18949,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1017 i32.const 1 call $~lib/builtins/abort @@ -18962,7 +18962,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1018 i32.const 1 call $~lib/builtins/abort @@ -18975,7 +18975,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1019 i32.const 1 call $~lib/builtins/abort @@ -18988,7 +18988,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1020 i32.const 1 call $~lib/builtins/abort @@ -19001,7 +19001,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1021 i32.const 1 call $~lib/builtins/abort @@ -19014,7 +19014,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1022 i32.const 1 call $~lib/builtins/abort @@ -19027,7 +19027,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1023 i32.const 1 call $~lib/builtins/abort @@ -19040,7 +19040,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1024 i32.const 1 call $~lib/builtins/abort @@ -19053,7 +19053,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1025 i32.const 1 call $~lib/builtins/abort @@ -19066,7 +19066,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1026 i32.const 1 call $~lib/builtins/abort @@ -19079,7 +19079,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1027 i32.const 1 call $~lib/builtins/abort @@ -19092,7 +19092,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1028 i32.const 1 call $~lib/builtins/abort @@ -19105,7 +19105,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1029 i32.const 1 call $~lib/builtins/abort @@ -19118,7 +19118,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1030 i32.const 1 call $~lib/builtins/abort @@ -19131,7 +19131,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1031 i32.const 1 call $~lib/builtins/abort @@ -19144,7 +19144,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1032 i32.const 1 call $~lib/builtins/abort @@ -19157,7 +19157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1033 i32.const 1 call $~lib/builtins/abort @@ -19170,7 +19170,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1034 i32.const 1 call $~lib/builtins/abort @@ -19183,7 +19183,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1035 i32.const 1 call $~lib/builtins/abort @@ -19196,7 +19196,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1036 i32.const 1 call $~lib/builtins/abort @@ -19209,7 +19209,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1037 i32.const 1 call $~lib/builtins/abort @@ -19222,7 +19222,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1038 i32.const 1 call $~lib/builtins/abort @@ -19235,7 +19235,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1039 i32.const 1 call $~lib/builtins/abort @@ -19248,7 +19248,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1040 i32.const 1 call $~lib/builtins/abort @@ -19261,7 +19261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1041 i32.const 1 call $~lib/builtins/abort @@ -19274,7 +19274,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1042 i32.const 1 call $~lib/builtins/abort @@ -19287,7 +19287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1043 i32.const 1 call $~lib/builtins/abort @@ -19300,7 +19300,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1044 i32.const 1 call $~lib/builtins/abort @@ -19313,7 +19313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1045 i32.const 1 call $~lib/builtins/abort @@ -19326,7 +19326,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1046 i32.const 1 call $~lib/builtins/abort @@ -19339,7 +19339,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1047 i32.const 1 call $~lib/builtins/abort @@ -19352,7 +19352,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1048 i32.const 1 call $~lib/builtins/abort @@ -19365,7 +19365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1049 i32.const 1 call $~lib/builtins/abort @@ -19378,7 +19378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1050 i32.const 1 call $~lib/builtins/abort @@ -19391,7 +19391,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1051 i32.const 1 call $~lib/builtins/abort @@ -19404,7 +19404,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1052 i32.const 1 call $~lib/builtins/abort @@ -19417,7 +19417,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1053 i32.const 1 call $~lib/builtins/abort @@ -19430,7 +19430,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1054 i32.const 1 call $~lib/builtins/abort @@ -19443,7 +19443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1055 i32.const 1 call $~lib/builtins/abort @@ -19456,7 +19456,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1056 i32.const 1 call $~lib/builtins/abort @@ -19469,7 +19469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1057 i32.const 1 call $~lib/builtins/abort @@ -19482,7 +19482,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1058 i32.const 1 call $~lib/builtins/abort @@ -19495,7 +19495,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1059 i32.const 1 call $~lib/builtins/abort @@ -19508,7 +19508,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1060 i32.const 1 call $~lib/builtins/abort @@ -19521,7 +19521,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1061 i32.const 1 call $~lib/builtins/abort @@ -19534,7 +19534,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1062 i32.const 1 call $~lib/builtins/abort @@ -19547,7 +19547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1063 i32.const 1 call $~lib/builtins/abort @@ -19560,7 +19560,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1064 i32.const 1 call $~lib/builtins/abort @@ -19573,7 +19573,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1065 i32.const 1 call $~lib/builtins/abort @@ -19586,7 +19586,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1068 i32.const 1 call $~lib/builtins/abort @@ -19599,7 +19599,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1069 i32.const 1 call $~lib/builtins/abort @@ -19612,7 +19612,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1070 i32.const 1 call $~lib/builtins/abort @@ -19625,7 +19625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1071 i32.const 1 call $~lib/builtins/abort @@ -19638,7 +19638,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1072 i32.const 1 call $~lib/builtins/abort @@ -19651,7 +19651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1073 i32.const 1 call $~lib/builtins/abort @@ -19664,7 +19664,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1074 i32.const 1 call $~lib/builtins/abort @@ -19677,7 +19677,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1075 i32.const 1 call $~lib/builtins/abort @@ -19690,7 +19690,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1076 i32.const 1 call $~lib/builtins/abort @@ -19703,7 +19703,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1077 i32.const 1 call $~lib/builtins/abort @@ -19716,7 +19716,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1078 i32.const 1 call $~lib/builtins/abort @@ -19729,7 +19729,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1079 i32.const 1 call $~lib/builtins/abort @@ -19742,7 +19742,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1080 i32.const 1 call $~lib/builtins/abort @@ -19755,7 +19755,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1081 i32.const 1 call $~lib/builtins/abort @@ -19768,7 +19768,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1082 i32.const 1 call $~lib/builtins/abort @@ -19781,7 +19781,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1083 i32.const 1 call $~lib/builtins/abort @@ -19794,7 +19794,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1084 i32.const 1 call $~lib/builtins/abort @@ -19807,7 +19807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1085 i32.const 1 call $~lib/builtins/abort @@ -19820,7 +19820,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1086 i32.const 1 call $~lib/builtins/abort @@ -19833,7 +19833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1087 i32.const 1 call $~lib/builtins/abort @@ -19846,7 +19846,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1088 i32.const 1 call $~lib/builtins/abort @@ -19859,7 +19859,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1089 i32.const 1 call $~lib/builtins/abort @@ -19872,7 +19872,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1090 i32.const 1 call $~lib/builtins/abort @@ -19885,7 +19885,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1091 i32.const 1 call $~lib/builtins/abort @@ -19898,7 +19898,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1092 i32.const 1 call $~lib/builtins/abort @@ -19911,7 +19911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1093 i32.const 1 call $~lib/builtins/abort @@ -19924,7 +19924,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1094 i32.const 1 call $~lib/builtins/abort @@ -19937,7 +19937,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1095 i32.const 1 call $~lib/builtins/abort @@ -19950,7 +19950,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1096 i32.const 1 call $~lib/builtins/abort @@ -19963,7 +19963,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1097 i32.const 1 call $~lib/builtins/abort @@ -19976,7 +19976,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1098 i32.const 1 call $~lib/builtins/abort @@ -19989,7 +19989,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1099 i32.const 1 call $~lib/builtins/abort @@ -20002,7 +20002,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1100 i32.const 1 call $~lib/builtins/abort @@ -20015,7 +20015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1101 i32.const 1 call $~lib/builtins/abort @@ -20028,7 +20028,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1102 i32.const 1 call $~lib/builtins/abort @@ -20041,7 +20041,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1103 i32.const 1 call $~lib/builtins/abort @@ -20054,7 +20054,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1104 i32.const 1 call $~lib/builtins/abort @@ -20067,7 +20067,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1105 i32.const 1 call $~lib/builtins/abort @@ -20080,7 +20080,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1107 i32.const 1 call $~lib/builtins/abort @@ -20093,7 +20093,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1108 i32.const 1 call $~lib/builtins/abort @@ -20106,7 +20106,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1109 i32.const 1 call $~lib/builtins/abort @@ -20118,7 +20118,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1113 i32.const 1 call $~lib/builtins/abort @@ -20130,7 +20130,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1114 i32.const 1 call $~lib/builtins/abort @@ -20142,7 +20142,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1117 i32.const 1 call $~lib/builtins/abort @@ -20154,7 +20154,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1119 i32.const 1 call $~lib/builtins/abort @@ -20166,7 +20166,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1120 i32.const 1 call $~lib/builtins/abort @@ -20178,7 +20178,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1123 i32.const 1 call $~lib/builtins/abort @@ -20190,7 +20190,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1125 i32.const 1 call $~lib/builtins/abort @@ -20202,7 +20202,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1128 i32.const 1 call $~lib/builtins/abort @@ -20214,7 +20214,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1130 i32.const 1 call $~lib/builtins/abort @@ -20226,7 +20226,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1131 i32.const 1 call $~lib/builtins/abort @@ -20238,7 +20238,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1132 i32.const 1 call $~lib/builtins/abort @@ -20250,7 +20250,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1134 i32.const 1 call $~lib/builtins/abort @@ -20262,7 +20262,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1136 i32.const 1 call $~lib/builtins/abort @@ -20274,7 +20274,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1137 i32.const 1 call $~lib/builtins/abort @@ -20286,7 +20286,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1138 i32.const 1 call $~lib/builtins/abort @@ -20298,7 +20298,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1139 i32.const 1 call $~lib/builtins/abort @@ -20310,7 +20310,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1140 i32.const 1 call $~lib/builtins/abort @@ -20322,7 +20322,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1141 i32.const 1 call $~lib/builtins/abort @@ -20335,7 +20335,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1150 i32.const 1 call $~lib/builtins/abort @@ -20348,7 +20348,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1151 i32.const 1 call $~lib/builtins/abort @@ -20361,7 +20361,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1152 i32.const 1 call $~lib/builtins/abort @@ -20374,7 +20374,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1153 i32.const 1 call $~lib/builtins/abort @@ -20387,7 +20387,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1154 i32.const 1 call $~lib/builtins/abort @@ -20400,7 +20400,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1155 i32.const 1 call $~lib/builtins/abort @@ -20413,7 +20413,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1156 i32.const 1 call $~lib/builtins/abort @@ -20426,7 +20426,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1157 i32.const 1 call $~lib/builtins/abort @@ -20439,7 +20439,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1158 i32.const 1 call $~lib/builtins/abort @@ -20452,7 +20452,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1159 i32.const 1 call $~lib/builtins/abort @@ -20465,7 +20465,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1162 i32.const 1 call $~lib/builtins/abort @@ -20478,7 +20478,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1163 i32.const 1 call $~lib/builtins/abort @@ -20491,7 +20491,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1164 i32.const 1 call $~lib/builtins/abort @@ -20504,7 +20504,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1165 i32.const 1 call $~lib/builtins/abort @@ -20517,7 +20517,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1166 i32.const 1 call $~lib/builtins/abort @@ -20530,7 +20530,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1169 i32.const 1 call $~lib/builtins/abort @@ -20543,7 +20543,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1170 i32.const 1 call $~lib/builtins/abort @@ -20556,7 +20556,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1171 i32.const 1 call $~lib/builtins/abort @@ -20569,7 +20569,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1172 i32.const 1 call $~lib/builtins/abort @@ -20582,7 +20582,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1173 i32.const 1 call $~lib/builtins/abort @@ -20595,7 +20595,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1174 i32.const 1 call $~lib/builtins/abort @@ -20608,7 +20608,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1175 i32.const 1 call $~lib/builtins/abort @@ -20621,7 +20621,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1176 i32.const 1 call $~lib/builtins/abort @@ -20634,7 +20634,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1177 i32.const 1 call $~lib/builtins/abort @@ -20647,7 +20647,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1178 i32.const 1 call $~lib/builtins/abort @@ -20660,7 +20660,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1179 i32.const 1 call $~lib/builtins/abort @@ -20673,7 +20673,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1180 i32.const 1 call $~lib/builtins/abort @@ -20686,7 +20686,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1181 i32.const 1 call $~lib/builtins/abort @@ -20699,7 +20699,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1182 i32.const 1 call $~lib/builtins/abort @@ -20712,7 +20712,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1183 i32.const 1 call $~lib/builtins/abort @@ -20725,7 +20725,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1184 i32.const 1 call $~lib/builtins/abort @@ -20738,7 +20738,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1185 i32.const 1 call $~lib/builtins/abort @@ -20751,7 +20751,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1186 i32.const 1 call $~lib/builtins/abort @@ -20764,7 +20764,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1187 i32.const 1 call $~lib/builtins/abort @@ -20777,7 +20777,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1188 i32.const 1 call $~lib/builtins/abort @@ -20790,7 +20790,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1189 i32.const 1 call $~lib/builtins/abort @@ -20803,7 +20803,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1190 i32.const 1 call $~lib/builtins/abort @@ -20816,7 +20816,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1191 i32.const 1 call $~lib/builtins/abort @@ -20829,7 +20829,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1192 i32.const 1 call $~lib/builtins/abort @@ -20842,7 +20842,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1193 i32.const 1 call $~lib/builtins/abort @@ -20855,7 +20855,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1194 i32.const 1 call $~lib/builtins/abort @@ -20868,7 +20868,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1195 i32.const 1 call $~lib/builtins/abort @@ -20881,7 +20881,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1196 i32.const 1 call $~lib/builtins/abort @@ -20894,7 +20894,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1197 i32.const 1 call $~lib/builtins/abort @@ -20907,7 +20907,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1198 i32.const 1 call $~lib/builtins/abort @@ -20920,7 +20920,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1199 i32.const 1 call $~lib/builtins/abort @@ -20933,7 +20933,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1200 i32.const 1 call $~lib/builtins/abort @@ -20946,7 +20946,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1201 i32.const 1 call $~lib/builtins/abort @@ -20959,7 +20959,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1202 i32.const 1 call $~lib/builtins/abort @@ -20972,7 +20972,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1203 i32.const 1 call $~lib/builtins/abort @@ -20985,7 +20985,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1204 i32.const 1 call $~lib/builtins/abort @@ -20998,7 +20998,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1205 i32.const 1 call $~lib/builtins/abort @@ -21011,7 +21011,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1206 i32.const 1 call $~lib/builtins/abort @@ -21024,7 +21024,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1209 i32.const 1 call $~lib/builtins/abort @@ -21037,7 +21037,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1210 i32.const 1 call $~lib/builtins/abort @@ -21050,7 +21050,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1211 i32.const 1 call $~lib/builtins/abort @@ -21063,7 +21063,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1212 i32.const 1 call $~lib/builtins/abort @@ -21076,7 +21076,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1213 i32.const 1 call $~lib/builtins/abort @@ -21089,7 +21089,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1214 i32.const 1 call $~lib/builtins/abort @@ -21102,7 +21102,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1215 i32.const 1 call $~lib/builtins/abort @@ -21115,7 +21115,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1216 i32.const 1 call $~lib/builtins/abort @@ -21128,7 +21128,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1217 i32.const 1 call $~lib/builtins/abort @@ -21141,7 +21141,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1218 i32.const 1 call $~lib/builtins/abort @@ -21154,7 +21154,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1219 i32.const 1 call $~lib/builtins/abort @@ -21167,7 +21167,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1220 i32.const 1 call $~lib/builtins/abort @@ -21180,7 +21180,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1221 i32.const 1 call $~lib/builtins/abort @@ -21193,7 +21193,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1222 i32.const 1 call $~lib/builtins/abort @@ -21206,7 +21206,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1233 i32.const 1 call $~lib/builtins/abort @@ -21219,7 +21219,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1234 i32.const 1 call $~lib/builtins/abort @@ -21232,7 +21232,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1235 i32.const 1 call $~lib/builtins/abort @@ -21245,7 +21245,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1236 i32.const 1 call $~lib/builtins/abort @@ -21258,7 +21258,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1237 i32.const 1 call $~lib/builtins/abort @@ -21271,7 +21271,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1238 i32.const 1 call $~lib/builtins/abort @@ -21284,7 +21284,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1239 i32.const 1 call $~lib/builtins/abort @@ -21297,7 +21297,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1240 i32.const 1 call $~lib/builtins/abort @@ -21310,7 +21310,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1241 i32.const 1 call $~lib/builtins/abort @@ -21323,7 +21323,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1242 i32.const 1 call $~lib/builtins/abort @@ -21336,7 +21336,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1245 i32.const 1 call $~lib/builtins/abort @@ -21349,7 +21349,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1246 i32.const 1 call $~lib/builtins/abort @@ -21362,7 +21362,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1247 i32.const 1 call $~lib/builtins/abort @@ -21375,7 +21375,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1248 i32.const 1 call $~lib/builtins/abort @@ -21388,7 +21388,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1249 i32.const 1 call $~lib/builtins/abort @@ -21401,7 +21401,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1258 i32.const 1 call $~lib/builtins/abort @@ -21414,7 +21414,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1259 i32.const 1 call $~lib/builtins/abort @@ -21427,7 +21427,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1260 i32.const 1 call $~lib/builtins/abort @@ -21440,7 +21440,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1261 i32.const 1 call $~lib/builtins/abort @@ -21453,7 +21453,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1262 i32.const 1 call $~lib/builtins/abort @@ -21466,7 +21466,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1263 i32.const 1 call $~lib/builtins/abort @@ -21479,7 +21479,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1264 i32.const 1 call $~lib/builtins/abort @@ -21492,7 +21492,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1265 i32.const 1 call $~lib/builtins/abort @@ -21505,7 +21505,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1266 i32.const 1 call $~lib/builtins/abort @@ -21518,7 +21518,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1267 i32.const 1 call $~lib/builtins/abort @@ -21531,7 +21531,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1270 i32.const 1 call $~lib/builtins/abort @@ -21544,7 +21544,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1271 i32.const 1 call $~lib/builtins/abort @@ -21557,7 +21557,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1272 i32.const 1 call $~lib/builtins/abort @@ -21570,7 +21570,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1273 i32.const 1 call $~lib/builtins/abort @@ -21583,7 +21583,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1274 i32.const 1 call $~lib/builtins/abort @@ -21596,7 +21596,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1286 i32.const 1 call $~lib/builtins/abort @@ -21609,7 +21609,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1287 i32.const 1 call $~lib/builtins/abort @@ -21622,7 +21622,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1288 i32.const 1 call $~lib/builtins/abort @@ -21635,7 +21635,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1289 i32.const 1 call $~lib/builtins/abort @@ -21648,7 +21648,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1290 i32.const 1 call $~lib/builtins/abort @@ -21661,7 +21661,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1291 i32.const 1 call $~lib/builtins/abort @@ -21674,7 +21674,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1292 i32.const 1 call $~lib/builtins/abort @@ -21687,7 +21687,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1293 i32.const 1 call $~lib/builtins/abort @@ -21700,7 +21700,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1294 i32.const 1 call $~lib/builtins/abort @@ -21713,7 +21713,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1295 i32.const 1 call $~lib/builtins/abort @@ -21726,7 +21726,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1298 i32.const 1 call $~lib/builtins/abort @@ -21739,7 +21739,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1299 i32.const 1 call $~lib/builtins/abort @@ -21752,7 +21752,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1300 i32.const 1 call $~lib/builtins/abort @@ -21765,7 +21765,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1301 i32.const 1 call $~lib/builtins/abort @@ -21778,7 +21778,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1302 i32.const 1 call $~lib/builtins/abort @@ -21791,7 +21791,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1303 i32.const 1 call $~lib/builtins/abort @@ -21804,7 +21804,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1304 i32.const 1 call $~lib/builtins/abort @@ -21817,7 +21817,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1305 i32.const 1 call $~lib/builtins/abort @@ -21830,7 +21830,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1306 i32.const 1 call $~lib/builtins/abort @@ -21843,7 +21843,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1307 i32.const 1 call $~lib/builtins/abort @@ -21856,7 +21856,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1308 i32.const 1 call $~lib/builtins/abort @@ -21869,7 +21869,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1311 i32.const 1 call $~lib/builtins/abort @@ -21882,7 +21882,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1312 i32.const 1 call $~lib/builtins/abort @@ -21895,7 +21895,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1314 i32.const 1 call $~lib/builtins/abort @@ -21908,7 +21908,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1321 i32.const 1 call $~lib/builtins/abort @@ -21921,7 +21921,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1322 i32.const 1 call $~lib/builtins/abort @@ -21934,7 +21934,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1329 i32.const 1 call $~lib/builtins/abort @@ -21947,7 +21947,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1336 i32.const 1 call $~lib/builtins/abort @@ -21960,7 +21960,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1343 i32.const 1 call $~lib/builtins/abort @@ -21973,7 +21973,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1350 i32.const 1 call $~lib/builtins/abort @@ -21986,7 +21986,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1357 i32.const 1 call $~lib/builtins/abort @@ -21999,7 +21999,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1364 i32.const 1 call $~lib/builtins/abort @@ -22012,7 +22012,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1370 i32.const 1 call $~lib/builtins/abort @@ -22025,7 +22025,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1376 i32.const 1 call $~lib/builtins/abort @@ -22038,7 +22038,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1382 i32.const 1 call $~lib/builtins/abort @@ -22051,7 +22051,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1389 i32.const 1 call $~lib/builtins/abort @@ -22064,7 +22064,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1396 i32.const 1 call $~lib/builtins/abort @@ -22077,7 +22077,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1403 i32.const 1 call $~lib/builtins/abort @@ -22090,7 +22090,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1410 i32.const 1 call $~lib/builtins/abort @@ -22103,7 +22103,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1417 i32.const 1 call $~lib/builtins/abort @@ -22116,7 +22116,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1424 i32.const 1 call $~lib/builtins/abort @@ -22129,7 +22129,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1431 i32.const 1 call $~lib/builtins/abort @@ -22142,7 +22142,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1438 i32.const 1 call $~lib/builtins/abort @@ -22155,7 +22155,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1452 i32.const 1 call $~lib/builtins/abort @@ -22168,7 +22168,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1453 i32.const 1 call $~lib/builtins/abort @@ -22181,7 +22181,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1454 i32.const 1 call $~lib/builtins/abort @@ -22194,7 +22194,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1455 i32.const 1 call $~lib/builtins/abort @@ -22207,7 +22207,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1456 i32.const 1 call $~lib/builtins/abort @@ -22220,7 +22220,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1457 i32.const 1 call $~lib/builtins/abort @@ -22233,7 +22233,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1458 i32.const 1 call $~lib/builtins/abort @@ -22246,7 +22246,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1459 i32.const 1 call $~lib/builtins/abort @@ -22259,7 +22259,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1460 i32.const 1 call $~lib/builtins/abort @@ -22272,7 +22272,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1461 i32.const 1 call $~lib/builtins/abort @@ -22285,7 +22285,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1464 i32.const 1 call $~lib/builtins/abort @@ -22298,7 +22298,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1465 i32.const 1 call $~lib/builtins/abort @@ -22311,7 +22311,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1466 i32.const 1 call $~lib/builtins/abort @@ -22324,7 +22324,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1467 i32.const 1 call $~lib/builtins/abort @@ -22337,7 +22337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1468 i32.const 1 call $~lib/builtins/abort @@ -22350,7 +22350,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1469 i32.const 1 call $~lib/builtins/abort @@ -22363,7 +22363,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1470 i32.const 1 call $~lib/builtins/abort @@ -22376,7 +22376,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1471 i32.const 1 call $~lib/builtins/abort @@ -22389,7 +22389,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1472 i32.const 1 call $~lib/builtins/abort @@ -22402,7 +22402,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1473 i32.const 1 call $~lib/builtins/abort @@ -22415,7 +22415,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1474 i32.const 1 call $~lib/builtins/abort @@ -22428,7 +22428,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1475 i32.const 1 call $~lib/builtins/abort @@ -22441,7 +22441,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1476 i32.const 1 call $~lib/builtins/abort @@ -22454,7 +22454,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1477 i32.const 1 call $~lib/builtins/abort @@ -22467,7 +22467,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1489 i32.const 1 call $~lib/builtins/abort @@ -22480,7 +22480,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1490 i32.const 1 call $~lib/builtins/abort @@ -22493,7 +22493,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1491 i32.const 1 call $~lib/builtins/abort @@ -22506,7 +22506,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1492 i32.const 1 call $~lib/builtins/abort @@ -22519,7 +22519,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1493 i32.const 1 call $~lib/builtins/abort @@ -22532,7 +22532,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1494 i32.const 1 call $~lib/builtins/abort @@ -22545,7 +22545,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1495 i32.const 1 call $~lib/builtins/abort @@ -22558,7 +22558,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1496 i32.const 1 call $~lib/builtins/abort @@ -22571,7 +22571,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1497 i32.const 1 call $~lib/builtins/abort @@ -22584,7 +22584,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1498 i32.const 1 call $~lib/builtins/abort @@ -22597,7 +22597,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1501 i32.const 1 call $~lib/builtins/abort @@ -22610,7 +22610,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1502 i32.const 1 call $~lib/builtins/abort @@ -22623,7 +22623,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1503 i32.const 1 call $~lib/builtins/abort @@ -22636,7 +22636,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1504 i32.const 1 call $~lib/builtins/abort @@ -22649,7 +22649,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1505 i32.const 1 call $~lib/builtins/abort @@ -22662,7 +22662,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1506 i32.const 1 call $~lib/builtins/abort @@ -22675,7 +22675,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1507 i32.const 1 call $~lib/builtins/abort @@ -22688,7 +22688,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1508 i32.const 1 call $~lib/builtins/abort @@ -22701,7 +22701,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1509 i32.const 1 call $~lib/builtins/abort @@ -22714,7 +22714,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1518 i32.const 1 call $~lib/builtins/abort @@ -22727,7 +22727,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1519 i32.const 1 call $~lib/builtins/abort @@ -22740,7 +22740,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1520 i32.const 1 call $~lib/builtins/abort @@ -22753,7 +22753,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1521 i32.const 1 call $~lib/builtins/abort @@ -22766,7 +22766,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1522 i32.const 1 call $~lib/builtins/abort @@ -22779,7 +22779,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1523 i32.const 1 call $~lib/builtins/abort @@ -22792,7 +22792,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1524 i32.const 1 call $~lib/builtins/abort @@ -22805,7 +22805,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1525 i32.const 1 call $~lib/builtins/abort @@ -22818,7 +22818,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1526 i32.const 1 call $~lib/builtins/abort @@ -22831,7 +22831,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1527 i32.const 1 call $~lib/builtins/abort @@ -22844,7 +22844,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1530 i32.const 1 call $~lib/builtins/abort @@ -22857,7 +22857,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1531 i32.const 1 call $~lib/builtins/abort @@ -22870,7 +22870,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1532 i32.const 1 call $~lib/builtins/abort @@ -22883,7 +22883,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1533 i32.const 1 call $~lib/builtins/abort @@ -22896,7 +22896,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1534 i32.const 1 call $~lib/builtins/abort @@ -22909,7 +22909,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1535 i32.const 1 call $~lib/builtins/abort @@ -22922,7 +22922,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1536 i32.const 1 call $~lib/builtins/abort @@ -22935,7 +22935,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1548 i32.const 1 call $~lib/builtins/abort @@ -22948,7 +22948,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1549 i32.const 1 call $~lib/builtins/abort @@ -22961,7 +22961,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1550 i32.const 1 call $~lib/builtins/abort @@ -22974,7 +22974,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1551 i32.const 1 call $~lib/builtins/abort @@ -22987,7 +22987,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1552 i32.const 1 call $~lib/builtins/abort @@ -23000,7 +23000,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1553 i32.const 1 call $~lib/builtins/abort @@ -23013,7 +23013,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1554 i32.const 1 call $~lib/builtins/abort @@ -23026,7 +23026,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1555 i32.const 1 call $~lib/builtins/abort @@ -23039,7 +23039,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1556 i32.const 1 call $~lib/builtins/abort @@ -23052,7 +23052,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1557 i32.const 1 call $~lib/builtins/abort @@ -23065,7 +23065,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1560 i32.const 1 call $~lib/builtins/abort @@ -23078,7 +23078,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1561 i32.const 1 call $~lib/builtins/abort @@ -23091,7 +23091,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1562 i32.const 1 call $~lib/builtins/abort @@ -23104,7 +23104,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1563 i32.const 1 call $~lib/builtins/abort @@ -23117,7 +23117,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1564 i32.const 1 call $~lib/builtins/abort @@ -23130,7 +23130,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1565 i32.const 1 call $~lib/builtins/abort @@ -23143,7 +23143,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1566 i32.const 1 call $~lib/builtins/abort @@ -23156,7 +23156,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1567 i32.const 1 call $~lib/builtins/abort @@ -23169,7 +23169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1568 i32.const 1 call $~lib/builtins/abort @@ -23182,7 +23182,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1569 i32.const 1 call $~lib/builtins/abort @@ -23195,7 +23195,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1570 i32.const 1 call $~lib/builtins/abort @@ -23208,7 +23208,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1571 i32.const 1 call $~lib/builtins/abort @@ -23221,7 +23221,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1572 i32.const 1 call $~lib/builtins/abort @@ -23234,7 +23234,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1573 i32.const 1 call $~lib/builtins/abort @@ -23247,7 +23247,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1574 i32.const 1 call $~lib/builtins/abort @@ -23260,7 +23260,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1575 i32.const 1 call $~lib/builtins/abort @@ -23273,7 +23273,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1576 i32.const 1 call $~lib/builtins/abort @@ -23286,7 +23286,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1577 i32.const 1 call $~lib/builtins/abort @@ -23299,7 +23299,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1578 i32.const 1 call $~lib/builtins/abort @@ -23312,7 +23312,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1579 i32.const 1 call $~lib/builtins/abort @@ -23325,7 +23325,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1580 i32.const 1 call $~lib/builtins/abort @@ -23338,7 +23338,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1581 i32.const 1 call $~lib/builtins/abort @@ -23351,7 +23351,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1582 i32.const 1 call $~lib/builtins/abort @@ -23364,7 +23364,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1583 i32.const 1 call $~lib/builtins/abort @@ -23377,7 +23377,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1584 i32.const 1 call $~lib/builtins/abort @@ -23390,7 +23390,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1595 i32.const 1 call $~lib/builtins/abort @@ -23403,7 +23403,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1596 i32.const 1 call $~lib/builtins/abort @@ -23416,7 +23416,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1597 i32.const 1 call $~lib/builtins/abort @@ -23429,7 +23429,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1598 i32.const 1 call $~lib/builtins/abort @@ -23442,7 +23442,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1599 i32.const 1 call $~lib/builtins/abort @@ -23455,7 +23455,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1600 i32.const 1 call $~lib/builtins/abort @@ -23468,7 +23468,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1601 i32.const 1 call $~lib/builtins/abort @@ -23481,7 +23481,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1602 i32.const 1 call $~lib/builtins/abort @@ -23494,7 +23494,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1603 i32.const 1 call $~lib/builtins/abort @@ -23507,7 +23507,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1604 i32.const 1 call $~lib/builtins/abort @@ -23519,7 +23519,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1616 i32.const 1 call $~lib/builtins/abort @@ -23531,7 +23531,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1617 i32.const 1 call $~lib/builtins/abort @@ -23543,7 +23543,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1618 i32.const 1 call $~lib/builtins/abort @@ -23555,7 +23555,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1619 i32.const 1 call $~lib/builtins/abort @@ -23567,7 +23567,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1620 i32.const 1 call $~lib/builtins/abort @@ -23579,7 +23579,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1621 i32.const 1 call $~lib/builtins/abort @@ -23591,7 +23591,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1622 i32.const 1 call $~lib/builtins/abort @@ -23603,7 +23603,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1623 i32.const 1 call $~lib/builtins/abort @@ -23615,7 +23615,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1624 i32.const 1 call $~lib/builtins/abort @@ -23627,7 +23627,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1625 i32.const 1 call $~lib/builtins/abort @@ -23639,7 +23639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1628 i32.const 1 call $~lib/builtins/abort @@ -23651,7 +23651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1629 i32.const 1 call $~lib/builtins/abort @@ -23663,7 +23663,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1630 i32.const 1 call $~lib/builtins/abort @@ -23675,7 +23675,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1631 i32.const 1 call $~lib/builtins/abort @@ -23687,7 +23687,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1632 i32.const 1 call $~lib/builtins/abort @@ -23699,7 +23699,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1633 i32.const 1 call $~lib/builtins/abort @@ -23711,7 +23711,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1634 i32.const 1 call $~lib/builtins/abort @@ -23723,7 +23723,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1635 i32.const 1 call $~lib/builtins/abort @@ -23735,7 +23735,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1636 i32.const 1 call $~lib/builtins/abort @@ -23747,7 +23747,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1637 i32.const 1 call $~lib/builtins/abort @@ -23759,7 +23759,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1638 i32.const 1 call $~lib/builtins/abort @@ -23771,7 +23771,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1639 i32.const 1 call $~lib/builtins/abort @@ -23783,7 +23783,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1640 i32.const 1 call $~lib/builtins/abort @@ -23795,7 +23795,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1641 i32.const 1 call $~lib/builtins/abort @@ -23807,7 +23807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1642 i32.const 1 call $~lib/builtins/abort @@ -23819,7 +23819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1651 i32.const 1 call $~lib/builtins/abort @@ -23831,7 +23831,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1652 i32.const 1 call $~lib/builtins/abort @@ -23843,7 +23843,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1653 i32.const 1 call $~lib/builtins/abort @@ -23855,7 +23855,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1654 i32.const 1 call $~lib/builtins/abort @@ -23867,7 +23867,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1655 i32.const 1 call $~lib/builtins/abort @@ -23879,7 +23879,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1656 i32.const 1 call $~lib/builtins/abort @@ -23891,7 +23891,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1657 i32.const 1 call $~lib/builtins/abort @@ -23903,7 +23903,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1658 i32.const 1 call $~lib/builtins/abort @@ -23915,7 +23915,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1659 i32.const 1 call $~lib/builtins/abort @@ -23927,7 +23927,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1660 i32.const 1 call $~lib/builtins/abort @@ -23939,7 +23939,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1663 i32.const 1 call $~lib/builtins/abort @@ -23951,7 +23951,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1664 i32.const 1 call $~lib/builtins/abort @@ -23963,7 +23963,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1665 i32.const 1 call $~lib/builtins/abort @@ -23975,7 +23975,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1666 i32.const 1 call $~lib/builtins/abort @@ -23987,7 +23987,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1667 i32.const 1 call $~lib/builtins/abort @@ -23999,7 +23999,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1668 i32.const 1 call $~lib/builtins/abort @@ -24011,7 +24011,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1669 i32.const 1 call $~lib/builtins/abort @@ -24023,7 +24023,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1670 i32.const 1 call $~lib/builtins/abort @@ -24035,7 +24035,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1671 i32.const 1 call $~lib/builtins/abort @@ -24047,7 +24047,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1672 i32.const 1 call $~lib/builtins/abort @@ -24059,7 +24059,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1673 i32.const 1 call $~lib/builtins/abort @@ -24071,7 +24071,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1674 i32.const 1 call $~lib/builtins/abort @@ -24083,7 +24083,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1675 i32.const 1 call $~lib/builtins/abort @@ -24095,7 +24095,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1676 i32.const 1 call $~lib/builtins/abort @@ -24107,7 +24107,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1677 i32.const 1 call $~lib/builtins/abort @@ -24121,7 +24121,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1691 i32.const 1 call $~lib/builtins/abort @@ -24135,7 +24135,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1692 i32.const 1 call $~lib/builtins/abort @@ -24149,7 +24149,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1693 i32.const 1 call $~lib/builtins/abort @@ -24163,7 +24163,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1694 i32.const 1 call $~lib/builtins/abort @@ -24177,7 +24177,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1695 i32.const 1 call $~lib/builtins/abort @@ -24191,7 +24191,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1696 i32.const 1 call $~lib/builtins/abort @@ -24205,7 +24205,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1697 i32.const 1 call $~lib/builtins/abort @@ -24219,7 +24219,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1698 i32.const 1 call $~lib/builtins/abort @@ -24233,7 +24233,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1699 i32.const 1 call $~lib/builtins/abort @@ -24247,7 +24247,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1700 i32.const 1 call $~lib/builtins/abort @@ -24261,7 +24261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1703 i32.const 1 call $~lib/builtins/abort @@ -24275,7 +24275,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1704 i32.const 1 call $~lib/builtins/abort @@ -24289,7 +24289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1705 i32.const 1 call $~lib/builtins/abort @@ -24303,7 +24303,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1706 i32.const 1 call $~lib/builtins/abort @@ -24317,7 +24317,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1707 i32.const 1 call $~lib/builtins/abort @@ -24331,7 +24331,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1708 i32.const 1 call $~lib/builtins/abort @@ -24345,7 +24345,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1709 i32.const 1 call $~lib/builtins/abort @@ -24359,7 +24359,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1710 i32.const 1 call $~lib/builtins/abort @@ -24373,7 +24373,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1711 i32.const 1 call $~lib/builtins/abort @@ -24387,7 +24387,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1712 i32.const 1 call $~lib/builtins/abort @@ -24401,7 +24401,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1713 i32.const 1 call $~lib/builtins/abort @@ -24415,7 +24415,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1714 i32.const 1 call $~lib/builtins/abort @@ -24429,7 +24429,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1715 i32.const 1 call $~lib/builtins/abort @@ -24443,7 +24443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1716 i32.const 1 call $~lib/builtins/abort @@ -24457,7 +24457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1717 i32.const 1 call $~lib/builtins/abort @@ -24471,7 +24471,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1718 i32.const 1 call $~lib/builtins/abort @@ -24485,7 +24485,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1719 i32.const 1 call $~lib/builtins/abort @@ -24499,7 +24499,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1720 i32.const 1 call $~lib/builtins/abort @@ -24513,7 +24513,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1721 i32.const 1 call $~lib/builtins/abort @@ -24527,7 +24527,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1722 i32.const 1 call $~lib/builtins/abort @@ -24541,7 +24541,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1723 i32.const 1 call $~lib/builtins/abort @@ -24555,7 +24555,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1732 i32.const 1 call $~lib/builtins/abort @@ -24569,7 +24569,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1733 i32.const 1 call $~lib/builtins/abort @@ -24583,7 +24583,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1734 i32.const 1 call $~lib/builtins/abort @@ -24597,7 +24597,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1735 i32.const 1 call $~lib/builtins/abort @@ -24611,7 +24611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1736 i32.const 1 call $~lib/builtins/abort @@ -24625,7 +24625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1737 i32.const 1 call $~lib/builtins/abort @@ -24639,7 +24639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1738 i32.const 1 call $~lib/builtins/abort @@ -24653,7 +24653,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1739 i32.const 1 call $~lib/builtins/abort @@ -24667,7 +24667,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1740 i32.const 1 call $~lib/builtins/abort @@ -24681,7 +24681,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1741 i32.const 1 call $~lib/builtins/abort @@ -24695,7 +24695,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1744 i32.const 1 call $~lib/builtins/abort @@ -24709,7 +24709,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1745 i32.const 1 call $~lib/builtins/abort @@ -24723,7 +24723,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1746 i32.const 1 call $~lib/builtins/abort @@ -24737,7 +24737,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1747 i32.const 1 call $~lib/builtins/abort @@ -24751,7 +24751,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1748 i32.const 1 call $~lib/builtins/abort @@ -24765,7 +24765,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1749 i32.const 1 call $~lib/builtins/abort @@ -24779,7 +24779,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1750 i32.const 1 call $~lib/builtins/abort @@ -24793,7 +24793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1751 i32.const 1 call $~lib/builtins/abort @@ -24807,7 +24807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1752 i32.const 1 call $~lib/builtins/abort @@ -24821,7 +24821,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1753 i32.const 1 call $~lib/builtins/abort @@ -24835,7 +24835,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1754 i32.const 1 call $~lib/builtins/abort @@ -24849,7 +24849,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1755 i32.const 1 call $~lib/builtins/abort @@ -24863,7 +24863,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1756 i32.const 1 call $~lib/builtins/abort @@ -24877,7 +24877,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1757 i32.const 1 call $~lib/builtins/abort @@ -24891,7 +24891,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1758 i32.const 1 call $~lib/builtins/abort @@ -24905,7 +24905,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1759 i32.const 1 call $~lib/builtins/abort @@ -24919,7 +24919,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1760 i32.const 1 call $~lib/builtins/abort @@ -24933,7 +24933,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1761 i32.const 1 call $~lib/builtins/abort @@ -24947,7 +24947,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1762 i32.const 1 call $~lib/builtins/abort @@ -24960,7 +24960,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1774 i32.const 1 call $~lib/builtins/abort @@ -24973,7 +24973,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1775 i32.const 1 call $~lib/builtins/abort @@ -24986,7 +24986,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1776 i32.const 1 call $~lib/builtins/abort @@ -24999,7 +24999,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1777 i32.const 1 call $~lib/builtins/abort @@ -25012,7 +25012,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1778 i32.const 1 call $~lib/builtins/abort @@ -25025,7 +25025,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1779 i32.const 1 call $~lib/builtins/abort @@ -25038,7 +25038,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1780 i32.const 1 call $~lib/builtins/abort @@ -25051,7 +25051,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1781 i32.const 1 call $~lib/builtins/abort @@ -25064,7 +25064,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1782 i32.const 1 call $~lib/builtins/abort @@ -25077,7 +25077,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1783 i32.const 1 call $~lib/builtins/abort @@ -25090,7 +25090,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1786 i32.const 1 call $~lib/builtins/abort @@ -25103,7 +25103,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1787 i32.const 1 call $~lib/builtins/abort @@ -25116,7 +25116,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1788 i32.const 1 call $~lib/builtins/abort @@ -25129,7 +25129,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1789 i32.const 1 call $~lib/builtins/abort @@ -25142,7 +25142,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1790 i32.const 1 call $~lib/builtins/abort @@ -25155,7 +25155,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1791 i32.const 1 call $~lib/builtins/abort @@ -25168,7 +25168,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1792 i32.const 1 call $~lib/builtins/abort @@ -25181,7 +25181,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1793 i32.const 1 call $~lib/builtins/abort @@ -25193,7 +25193,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1802 i32.const 1 call $~lib/builtins/abort @@ -25205,7 +25205,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1803 i32.const 1 call $~lib/builtins/abort @@ -25217,7 +25217,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1804 i32.const 1 call $~lib/builtins/abort @@ -25229,7 +25229,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1805 i32.const 1 call $~lib/builtins/abort @@ -25241,7 +25241,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1806 i32.const 1 call $~lib/builtins/abort @@ -25253,7 +25253,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1807 i32.const 1 call $~lib/builtins/abort @@ -25265,7 +25265,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1808 i32.const 1 call $~lib/builtins/abort @@ -25277,7 +25277,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1809 i32.const 1 call $~lib/builtins/abort @@ -25289,7 +25289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1812 i32.const 1 call $~lib/builtins/abort @@ -25301,7 +25301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1813 i32.const 1 call $~lib/builtins/abort @@ -25313,7 +25313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1814 i32.const 1 call $~lib/builtins/abort @@ -25325,7 +25325,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1815 i32.const 1 call $~lib/builtins/abort @@ -25337,7 +25337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1816 i32.const 1 call $~lib/builtins/abort @@ -25349,7 +25349,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1817 i32.const 1 call $~lib/builtins/abort @@ -25361,7 +25361,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1818 i32.const 1 call $~lib/builtins/abort @@ -25373,7 +25373,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1819 i32.const 1 call $~lib/builtins/abort @@ -25386,7 +25386,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1831 i32.const 1 call $~lib/builtins/abort @@ -25399,7 +25399,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1832 i32.const 1 call $~lib/builtins/abort @@ -25412,7 +25412,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1833 i32.const 1 call $~lib/builtins/abort @@ -25425,7 +25425,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1834 i32.const 1 call $~lib/builtins/abort @@ -25438,7 +25438,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1835 i32.const 1 call $~lib/builtins/abort @@ -25451,7 +25451,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1836 i32.const 1 call $~lib/builtins/abort @@ -25464,7 +25464,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1837 i32.const 1 call $~lib/builtins/abort @@ -25477,7 +25477,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1838 i32.const 1 call $~lib/builtins/abort @@ -25490,7 +25490,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1839 i32.const 1 call $~lib/builtins/abort @@ -25503,7 +25503,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1840 i32.const 1 call $~lib/builtins/abort @@ -25516,7 +25516,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1843 i32.const 1 call $~lib/builtins/abort @@ -25529,7 +25529,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1844 i32.const 1 call $~lib/builtins/abort @@ -25542,7 +25542,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1845 i32.const 1 call $~lib/builtins/abort @@ -25555,7 +25555,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1846 i32.const 1 call $~lib/builtins/abort @@ -25568,7 +25568,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1847 i32.const 1 call $~lib/builtins/abort @@ -25581,7 +25581,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1848 i32.const 1 call $~lib/builtins/abort @@ -25594,7 +25594,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1849 i32.const 1 call $~lib/builtins/abort @@ -25607,7 +25607,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1850 i32.const 1 call $~lib/builtins/abort @@ -25620,7 +25620,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1859 i32.const 1 call $~lib/builtins/abort @@ -25633,7 +25633,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1860 i32.const 1 call $~lib/builtins/abort @@ -25646,7 +25646,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1861 i32.const 1 call $~lib/builtins/abort @@ -25659,7 +25659,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1862 i32.const 1 call $~lib/builtins/abort @@ -25672,7 +25672,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1863 i32.const 1 call $~lib/builtins/abort @@ -25685,7 +25685,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1864 i32.const 1 call $~lib/builtins/abort @@ -25698,7 +25698,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1865 i32.const 1 call $~lib/builtins/abort @@ -25711,7 +25711,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1866 i32.const 1 call $~lib/builtins/abort @@ -25724,7 +25724,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1867 i32.const 1 call $~lib/builtins/abort @@ -25737,7 +25737,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1868 i32.const 1 call $~lib/builtins/abort @@ -25750,7 +25750,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1871 i32.const 1 call $~lib/builtins/abort @@ -25763,7 +25763,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1872 i32.const 1 call $~lib/builtins/abort @@ -25776,7 +25776,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1873 i32.const 1 call $~lib/builtins/abort @@ -25789,7 +25789,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1874 i32.const 1 call $~lib/builtins/abort @@ -25802,7 +25802,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1875 i32.const 1 call $~lib/builtins/abort @@ -25815,7 +25815,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1876 i32.const 1 call $~lib/builtins/abort @@ -25828,7 +25828,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1877 i32.const 1 call $~lib/builtins/abort @@ -25841,7 +25841,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1878 i32.const 1 call $~lib/builtins/abort @@ -25854,7 +25854,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1890 i32.const 1 call $~lib/builtins/abort @@ -25867,7 +25867,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1891 i32.const 1 call $~lib/builtins/abort @@ -25880,7 +25880,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1892 i32.const 1 call $~lib/builtins/abort @@ -25893,7 +25893,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1893 i32.const 1 call $~lib/builtins/abort @@ -25906,7 +25906,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1894 i32.const 1 call $~lib/builtins/abort @@ -25919,7 +25919,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1895 i32.const 1 call $~lib/builtins/abort @@ -25932,7 +25932,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1896 i32.const 1 call $~lib/builtins/abort @@ -25945,7 +25945,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1897 i32.const 1 call $~lib/builtins/abort @@ -25958,7 +25958,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1898 i32.const 1 call $~lib/builtins/abort @@ -25971,7 +25971,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1899 i32.const 1 call $~lib/builtins/abort @@ -25984,7 +25984,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1902 i32.const 1 call $~lib/builtins/abort @@ -25997,7 +25997,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1903 i32.const 1 call $~lib/builtins/abort @@ -26010,7 +26010,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1904 i32.const 1 call $~lib/builtins/abort @@ -26023,7 +26023,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1905 i32.const 1 call $~lib/builtins/abort @@ -26036,7 +26036,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1906 i32.const 1 call $~lib/builtins/abort @@ -26049,7 +26049,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1907 i32.const 1 call $~lib/builtins/abort @@ -26062,7 +26062,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1908 i32.const 1 call $~lib/builtins/abort @@ -26075,7 +26075,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1909 i32.const 1 call $~lib/builtins/abort @@ -26088,7 +26088,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1918 i32.const 1 call $~lib/builtins/abort @@ -26101,7 +26101,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1919 i32.const 1 call $~lib/builtins/abort @@ -26114,7 +26114,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1920 i32.const 1 call $~lib/builtins/abort @@ -26127,7 +26127,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1921 i32.const 1 call $~lib/builtins/abort @@ -26140,7 +26140,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1922 i32.const 1 call $~lib/builtins/abort @@ -26153,7 +26153,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1923 i32.const 1 call $~lib/builtins/abort @@ -26166,7 +26166,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1924 i32.const 1 call $~lib/builtins/abort @@ -26179,7 +26179,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1925 i32.const 1 call $~lib/builtins/abort @@ -26192,7 +26192,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1926 i32.const 1 call $~lib/builtins/abort @@ -26205,7 +26205,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1927 i32.const 1 call $~lib/builtins/abort @@ -26218,7 +26218,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1930 i32.const 1 call $~lib/builtins/abort @@ -26231,7 +26231,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1931 i32.const 1 call $~lib/builtins/abort @@ -26244,7 +26244,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1932 i32.const 1 call $~lib/builtins/abort @@ -26257,7 +26257,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1933 i32.const 1 call $~lib/builtins/abort @@ -26270,7 +26270,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1934 i32.const 1 call $~lib/builtins/abort @@ -26283,7 +26283,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1935 i32.const 1 call $~lib/builtins/abort @@ -26296,7 +26296,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1936 i32.const 1 call $~lib/builtins/abort @@ -26309,7 +26309,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1937 i32.const 1 call $~lib/builtins/abort @@ -26322,7 +26322,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1938 i32.const 1 call $~lib/builtins/abort @@ -26335,7 +26335,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1950 i32.const 1 call $~lib/builtins/abort @@ -26348,7 +26348,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1951 i32.const 1 call $~lib/builtins/abort @@ -26361,7 +26361,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1952 i32.const 1 call $~lib/builtins/abort @@ -26374,7 +26374,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1953 i32.const 1 call $~lib/builtins/abort @@ -26387,7 +26387,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1954 i32.const 1 call $~lib/builtins/abort @@ -26400,7 +26400,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1955 i32.const 1 call $~lib/builtins/abort @@ -26413,7 +26413,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1956 i32.const 1 call $~lib/builtins/abort @@ -26426,7 +26426,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1957 i32.const 1 call $~lib/builtins/abort @@ -26439,7 +26439,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1958 i32.const 1 call $~lib/builtins/abort @@ -26452,7 +26452,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1959 i32.const 1 call $~lib/builtins/abort @@ -26465,7 +26465,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1962 i32.const 1 call $~lib/builtins/abort @@ -26478,7 +26478,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1963 i32.const 1 call $~lib/builtins/abort @@ -26491,7 +26491,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1964 i32.const 1 call $~lib/builtins/abort @@ -26504,7 +26504,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1965 i32.const 1 call $~lib/builtins/abort @@ -26517,7 +26517,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1966 i32.const 1 call $~lib/builtins/abort @@ -26530,7 +26530,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1967 i32.const 1 call $~lib/builtins/abort @@ -26543,7 +26543,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1968 i32.const 1 call $~lib/builtins/abort @@ -26556,7 +26556,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1969 i32.const 1 call $~lib/builtins/abort @@ -26569,7 +26569,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1978 i32.const 1 call $~lib/builtins/abort @@ -26582,7 +26582,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1979 i32.const 1 call $~lib/builtins/abort @@ -26595,7 +26595,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1980 i32.const 1 call $~lib/builtins/abort @@ -26608,7 +26608,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1981 i32.const 1 call $~lib/builtins/abort @@ -26621,7 +26621,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1982 i32.const 1 call $~lib/builtins/abort @@ -26634,7 +26634,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1983 i32.const 1 call $~lib/builtins/abort @@ -26647,7 +26647,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1984 i32.const 1 call $~lib/builtins/abort @@ -26660,7 +26660,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1985 i32.const 1 call $~lib/builtins/abort @@ -26673,7 +26673,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1986 i32.const 1 call $~lib/builtins/abort @@ -26686,7 +26686,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1987 i32.const 1 call $~lib/builtins/abort @@ -26699,7 +26699,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1990 i32.const 1 call $~lib/builtins/abort @@ -26712,7 +26712,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1991 i32.const 1 call $~lib/builtins/abort @@ -26725,7 +26725,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1992 i32.const 1 call $~lib/builtins/abort @@ -26738,7 +26738,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1993 i32.const 1 call $~lib/builtins/abort @@ -26751,7 +26751,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1994 i32.const 1 call $~lib/builtins/abort @@ -26764,7 +26764,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1995 i32.const 1 call $~lib/builtins/abort @@ -26777,7 +26777,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1996 i32.const 1 call $~lib/builtins/abort @@ -26790,7 +26790,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 1997 i32.const 1 call $~lib/builtins/abort @@ -26803,7 +26803,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2009 i32.const 1 call $~lib/builtins/abort @@ -26816,7 +26816,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2010 i32.const 1 call $~lib/builtins/abort @@ -26829,7 +26829,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2011 i32.const 1 call $~lib/builtins/abort @@ -26842,7 +26842,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2012 i32.const 1 call $~lib/builtins/abort @@ -26855,7 +26855,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2013 i32.const 1 call $~lib/builtins/abort @@ -26868,7 +26868,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2014 i32.const 1 call $~lib/builtins/abort @@ -26881,7 +26881,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2015 i32.const 1 call $~lib/builtins/abort @@ -26894,7 +26894,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2016 i32.const 1 call $~lib/builtins/abort @@ -26907,7 +26907,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2017 i32.const 1 call $~lib/builtins/abort @@ -26920,7 +26920,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2018 i32.const 1 call $~lib/builtins/abort @@ -26933,7 +26933,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2021 i32.const 1 call $~lib/builtins/abort @@ -26946,7 +26946,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2022 i32.const 1 call $~lib/builtins/abort @@ -26959,7 +26959,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2023 i32.const 1 call $~lib/builtins/abort @@ -26972,7 +26972,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2024 i32.const 1 call $~lib/builtins/abort @@ -26985,7 +26985,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2025 i32.const 1 call $~lib/builtins/abort @@ -26998,7 +26998,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2026 i32.const 1 call $~lib/builtins/abort @@ -27011,7 +27011,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2027 i32.const 1 call $~lib/builtins/abort @@ -27024,7 +27024,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2028 i32.const 1 call $~lib/builtins/abort @@ -27037,7 +27037,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2029 i32.const 1 call $~lib/builtins/abort @@ -27050,7 +27050,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2030 i32.const 1 call $~lib/builtins/abort @@ -27063,7 +27063,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2031 i32.const 1 call $~lib/builtins/abort @@ -27076,7 +27076,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2032 i32.const 1 call $~lib/builtins/abort @@ -27089,7 +27089,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2033 i32.const 1 call $~lib/builtins/abort @@ -27102,7 +27102,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2034 i32.const 1 call $~lib/builtins/abort @@ -27115,7 +27115,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2035 i32.const 1 call $~lib/builtins/abort @@ -27128,7 +27128,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2036 i32.const 1 call $~lib/builtins/abort @@ -27141,7 +27141,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2037 i32.const 1 call $~lib/builtins/abort @@ -27154,7 +27154,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2038 i32.const 1 call $~lib/builtins/abort @@ -27167,7 +27167,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2039 i32.const 1 call $~lib/builtins/abort @@ -27180,7 +27180,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2040 i32.const 1 call $~lib/builtins/abort @@ -27193,7 +27193,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2041 i32.const 1 call $~lib/builtins/abort @@ -27206,7 +27206,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2042 i32.const 1 call $~lib/builtins/abort @@ -27219,7 +27219,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2043 i32.const 1 call $~lib/builtins/abort @@ -27232,7 +27232,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2044 i32.const 1 call $~lib/builtins/abort @@ -27245,7 +27245,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2045 i32.const 1 call $~lib/builtins/abort @@ -27258,7 +27258,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2046 i32.const 1 call $~lib/builtins/abort @@ -27271,7 +27271,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2047 i32.const 1 call $~lib/builtins/abort @@ -27284,7 +27284,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2048 i32.const 1 call $~lib/builtins/abort @@ -27297,7 +27297,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2049 i32.const 1 call $~lib/builtins/abort @@ -27310,7 +27310,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2050 i32.const 1 call $~lib/builtins/abort @@ -27323,7 +27323,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2051 i32.const 1 call $~lib/builtins/abort @@ -27336,7 +27336,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2052 i32.const 1 call $~lib/builtins/abort @@ -27349,7 +27349,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2053 i32.const 1 call $~lib/builtins/abort @@ -27362,7 +27362,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2054 i32.const 1 call $~lib/builtins/abort @@ -27375,7 +27375,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2055 i32.const 1 call $~lib/builtins/abort @@ -27388,7 +27388,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2056 i32.const 1 call $~lib/builtins/abort @@ -27401,7 +27401,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2057 i32.const 1 call $~lib/builtins/abort @@ -27414,7 +27414,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2058 i32.const 1 call $~lib/builtins/abort @@ -27427,7 +27427,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2059 i32.const 1 call $~lib/builtins/abort @@ -27440,7 +27440,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2060 i32.const 1 call $~lib/builtins/abort @@ -27453,7 +27453,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2061 i32.const 1 call $~lib/builtins/abort @@ -27466,7 +27466,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2062 i32.const 1 call $~lib/builtins/abort @@ -27479,7 +27479,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2063 i32.const 1 call $~lib/builtins/abort @@ -27492,7 +27492,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2064 i32.const 1 call $~lib/builtins/abort @@ -27505,7 +27505,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2065 i32.const 1 call $~lib/builtins/abort @@ -27518,7 +27518,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2066 i32.const 1 call $~lib/builtins/abort @@ -27531,7 +27531,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2067 i32.const 1 call $~lib/builtins/abort @@ -27544,7 +27544,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2068 i32.const 1 call $~lib/builtins/abort @@ -27557,7 +27557,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2069 i32.const 1 call $~lib/builtins/abort @@ -27570,7 +27570,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2070 i32.const 1 call $~lib/builtins/abort @@ -27583,7 +27583,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2071 i32.const 1 call $~lib/builtins/abort @@ -27596,7 +27596,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2072 i32.const 1 call $~lib/builtins/abort @@ -27609,7 +27609,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2073 i32.const 1 call $~lib/builtins/abort @@ -27622,7 +27622,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2074 i32.const 1 call $~lib/builtins/abort @@ -27635,7 +27635,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2075 i32.const 1 call $~lib/builtins/abort @@ -27648,7 +27648,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2076 i32.const 1 call $~lib/builtins/abort @@ -27661,7 +27661,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2077 i32.const 1 call $~lib/builtins/abort @@ -27674,7 +27674,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2078 i32.const 1 call $~lib/builtins/abort @@ -27687,7 +27687,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2087 i32.const 1 call $~lib/builtins/abort @@ -27700,7 +27700,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2088 i32.const 1 call $~lib/builtins/abort @@ -27713,7 +27713,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2089 i32.const 1 call $~lib/builtins/abort @@ -27726,7 +27726,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2090 i32.const 1 call $~lib/builtins/abort @@ -27739,7 +27739,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2091 i32.const 1 call $~lib/builtins/abort @@ -27752,7 +27752,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2092 i32.const 1 call $~lib/builtins/abort @@ -27765,7 +27765,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2093 i32.const 1 call $~lib/builtins/abort @@ -27778,7 +27778,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2094 i32.const 1 call $~lib/builtins/abort @@ -27791,7 +27791,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2095 i32.const 1 call $~lib/builtins/abort @@ -27804,7 +27804,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2096 i32.const 1 call $~lib/builtins/abort @@ -27817,7 +27817,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2099 i32.const 1 call $~lib/builtins/abort @@ -27830,7 +27830,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2100 i32.const 1 call $~lib/builtins/abort @@ -27843,7 +27843,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2101 i32.const 1 call $~lib/builtins/abort @@ -27856,7 +27856,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2102 i32.const 1 call $~lib/builtins/abort @@ -27869,7 +27869,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2103 i32.const 1 call $~lib/builtins/abort @@ -27882,7 +27882,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2104 i32.const 1 call $~lib/builtins/abort @@ -27895,7 +27895,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2105 i32.const 1 call $~lib/builtins/abort @@ -27908,7 +27908,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2106 i32.const 1 call $~lib/builtins/abort @@ -27921,7 +27921,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2107 i32.const 1 call $~lib/builtins/abort @@ -27934,7 +27934,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2108 i32.const 1 call $~lib/builtins/abort @@ -27947,7 +27947,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2109 i32.const 1 call $~lib/builtins/abort @@ -27960,7 +27960,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2110 i32.const 1 call $~lib/builtins/abort @@ -27973,7 +27973,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2111 i32.const 1 call $~lib/builtins/abort @@ -27986,7 +27986,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2112 i32.const 1 call $~lib/builtins/abort @@ -27999,7 +27999,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2113 i32.const 1 call $~lib/builtins/abort @@ -28012,7 +28012,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2114 i32.const 1 call $~lib/builtins/abort @@ -28025,7 +28025,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2115 i32.const 1 call $~lib/builtins/abort @@ -28038,7 +28038,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2116 i32.const 1 call $~lib/builtins/abort @@ -28051,7 +28051,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2117 i32.const 1 call $~lib/builtins/abort @@ -28064,7 +28064,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2118 i32.const 1 call $~lib/builtins/abort @@ -28077,7 +28077,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2119 i32.const 1 call $~lib/builtins/abort @@ -28090,7 +28090,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2120 i32.const 1 call $~lib/builtins/abort @@ -28103,7 +28103,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2121 i32.const 1 call $~lib/builtins/abort @@ -28116,7 +28116,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2122 i32.const 1 call $~lib/builtins/abort @@ -28129,7 +28129,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2123 i32.const 1 call $~lib/builtins/abort @@ -28142,7 +28142,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2124 i32.const 1 call $~lib/builtins/abort @@ -28155,7 +28155,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2125 i32.const 1 call $~lib/builtins/abort @@ -28168,7 +28168,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2126 i32.const 1 call $~lib/builtins/abort @@ -28181,7 +28181,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2127 i32.const 1 call $~lib/builtins/abort @@ -28194,7 +28194,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2128 i32.const 1 call $~lib/builtins/abort @@ -28207,7 +28207,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2129 i32.const 1 call $~lib/builtins/abort @@ -28220,7 +28220,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2130 i32.const 1 call $~lib/builtins/abort @@ -28233,7 +28233,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2131 i32.const 1 call $~lib/builtins/abort @@ -28246,7 +28246,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2132 i32.const 1 call $~lib/builtins/abort @@ -28259,7 +28259,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2133 i32.const 1 call $~lib/builtins/abort @@ -28272,7 +28272,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2134 i32.const 1 call $~lib/builtins/abort @@ -28285,7 +28285,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2135 i32.const 1 call $~lib/builtins/abort @@ -28298,7 +28298,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2136 i32.const 1 call $~lib/builtins/abort @@ -28311,7 +28311,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2137 i32.const 1 call $~lib/builtins/abort @@ -28324,7 +28324,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2138 i32.const 1 call $~lib/builtins/abort @@ -28337,7 +28337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2139 i32.const 1 call $~lib/builtins/abort @@ -28350,7 +28350,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2140 i32.const 1 call $~lib/builtins/abort @@ -28363,7 +28363,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2141 i32.const 1 call $~lib/builtins/abort @@ -28376,7 +28376,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2142 i32.const 1 call $~lib/builtins/abort @@ -28389,7 +28389,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2143 i32.const 1 call $~lib/builtins/abort @@ -28402,7 +28402,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2144 i32.const 1 call $~lib/builtins/abort @@ -28415,7 +28415,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2145 i32.const 1 call $~lib/builtins/abort @@ -28428,7 +28428,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2146 i32.const 1 call $~lib/builtins/abort @@ -28441,7 +28441,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2147 i32.const 1 call $~lib/builtins/abort @@ -28454,7 +28454,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2148 i32.const 1 call $~lib/builtins/abort @@ -28467,7 +28467,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2149 i32.const 1 call $~lib/builtins/abort @@ -28480,7 +28480,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2150 i32.const 1 call $~lib/builtins/abort @@ -28493,7 +28493,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2151 i32.const 1 call $~lib/builtins/abort @@ -28506,7 +28506,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2152 i32.const 1 call $~lib/builtins/abort @@ -28519,7 +28519,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2153 i32.const 1 call $~lib/builtins/abort @@ -28532,7 +28532,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2154 i32.const 1 call $~lib/builtins/abort @@ -28545,7 +28545,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2155 i32.const 1 call $~lib/builtins/abort @@ -28558,7 +28558,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2156 i32.const 1 call $~lib/builtins/abort @@ -28571,7 +28571,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2168 i32.const 1 call $~lib/builtins/abort @@ -28584,7 +28584,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2169 i32.const 1 call $~lib/builtins/abort @@ -28597,7 +28597,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2170 i32.const 1 call $~lib/builtins/abort @@ -28610,7 +28610,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2171 i32.const 1 call $~lib/builtins/abort @@ -28623,7 +28623,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2172 i32.const 1 call $~lib/builtins/abort @@ -28636,7 +28636,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2173 i32.const 1 call $~lib/builtins/abort @@ -28649,7 +28649,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2174 i32.const 1 call $~lib/builtins/abort @@ -28662,7 +28662,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2175 i32.const 1 call $~lib/builtins/abort @@ -28675,7 +28675,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2176 i32.const 1 call $~lib/builtins/abort @@ -28688,7 +28688,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2177 i32.const 1 call $~lib/builtins/abort @@ -28701,7 +28701,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2180 i32.const 1 call $~lib/builtins/abort @@ -28714,7 +28714,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2181 i32.const 1 call $~lib/builtins/abort @@ -28727,7 +28727,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2182 i32.const 1 call $~lib/builtins/abort @@ -28740,7 +28740,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2183 i32.const 1 call $~lib/builtins/abort @@ -28753,7 +28753,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2184 i32.const 1 call $~lib/builtins/abort @@ -28766,7 +28766,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2185 i32.const 1 call $~lib/builtins/abort @@ -28779,7 +28779,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2186 i32.const 1 call $~lib/builtins/abort @@ -28792,7 +28792,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2187 i32.const 1 call $~lib/builtins/abort @@ -28805,7 +28805,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2188 i32.const 1 call $~lib/builtins/abort @@ -28818,7 +28818,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2189 i32.const 1 call $~lib/builtins/abort @@ -28831,7 +28831,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2190 i32.const 1 call $~lib/builtins/abort @@ -28844,7 +28844,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2191 i32.const 1 call $~lib/builtins/abort @@ -28857,7 +28857,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2192 i32.const 1 call $~lib/builtins/abort @@ -28870,7 +28870,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2193 i32.const 1 call $~lib/builtins/abort @@ -28883,7 +28883,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2194 i32.const 1 call $~lib/builtins/abort @@ -28896,7 +28896,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2195 i32.const 1 call $~lib/builtins/abort @@ -28909,7 +28909,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2196 i32.const 1 call $~lib/builtins/abort @@ -28922,7 +28922,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2197 i32.const 1 call $~lib/builtins/abort @@ -28935,7 +28935,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2198 i32.const 1 call $~lib/builtins/abort @@ -28948,7 +28948,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2199 i32.const 1 call $~lib/builtins/abort @@ -28961,7 +28961,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2200 i32.const 1 call $~lib/builtins/abort @@ -28974,7 +28974,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2201 i32.const 1 call $~lib/builtins/abort @@ -28987,7 +28987,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2202 i32.const 1 call $~lib/builtins/abort @@ -29000,7 +29000,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2203 i32.const 1 call $~lib/builtins/abort @@ -29013,7 +29013,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2204 i32.const 1 call $~lib/builtins/abort @@ -29026,7 +29026,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2205 i32.const 1 call $~lib/builtins/abort @@ -29039,7 +29039,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2206 i32.const 1 call $~lib/builtins/abort @@ -29052,7 +29052,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2207 i32.const 1 call $~lib/builtins/abort @@ -29065,7 +29065,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2208 i32.const 1 call $~lib/builtins/abort @@ -29078,7 +29078,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2209 i32.const 1 call $~lib/builtins/abort @@ -29091,7 +29091,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2210 i32.const 1 call $~lib/builtins/abort @@ -29104,7 +29104,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2211 i32.const 1 call $~lib/builtins/abort @@ -29117,7 +29117,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2212 i32.const 1 call $~lib/builtins/abort @@ -29130,7 +29130,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2213 i32.const 1 call $~lib/builtins/abort @@ -29143,7 +29143,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2214 i32.const 1 call $~lib/builtins/abort @@ -29156,7 +29156,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2215 i32.const 1 call $~lib/builtins/abort @@ -29169,7 +29169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2216 i32.const 1 call $~lib/builtins/abort @@ -29182,7 +29182,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2217 i32.const 1 call $~lib/builtins/abort @@ -29195,7 +29195,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2218 i32.const 1 call $~lib/builtins/abort @@ -29208,7 +29208,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2219 i32.const 1 call $~lib/builtins/abort @@ -29221,7 +29221,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2220 i32.const 1 call $~lib/builtins/abort @@ -29234,7 +29234,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2221 i32.const 1 call $~lib/builtins/abort @@ -29247,7 +29247,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2222 i32.const 1 call $~lib/builtins/abort @@ -29260,7 +29260,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2223 i32.const 1 call $~lib/builtins/abort @@ -29273,7 +29273,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2224 i32.const 1 call $~lib/builtins/abort @@ -29286,7 +29286,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2225 i32.const 1 call $~lib/builtins/abort @@ -29299,7 +29299,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2226 i32.const 1 call $~lib/builtins/abort @@ -29312,7 +29312,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2227 i32.const 1 call $~lib/builtins/abort @@ -29325,7 +29325,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2228 i32.const 1 call $~lib/builtins/abort @@ -29338,7 +29338,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2229 i32.const 1 call $~lib/builtins/abort @@ -29351,7 +29351,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2230 i32.const 1 call $~lib/builtins/abort @@ -29364,7 +29364,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2231 i32.const 1 call $~lib/builtins/abort @@ -29377,7 +29377,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2232 i32.const 1 call $~lib/builtins/abort @@ -29390,7 +29390,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2233 i32.const 1 call $~lib/builtins/abort @@ -29403,7 +29403,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2234 i32.const 1 call $~lib/builtins/abort @@ -29416,7 +29416,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2235 i32.const 1 call $~lib/builtins/abort @@ -29429,7 +29429,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2236 i32.const 1 call $~lib/builtins/abort @@ -29442,7 +29442,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2237 i32.const 1 call $~lib/builtins/abort @@ -29455,7 +29455,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2246 i32.const 1 call $~lib/builtins/abort @@ -29468,7 +29468,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2247 i32.const 1 call $~lib/builtins/abort @@ -29481,7 +29481,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2248 i32.const 1 call $~lib/builtins/abort @@ -29494,7 +29494,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2249 i32.const 1 call $~lib/builtins/abort @@ -29507,7 +29507,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2250 i32.const 1 call $~lib/builtins/abort @@ -29520,7 +29520,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2251 i32.const 1 call $~lib/builtins/abort @@ -29533,7 +29533,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2252 i32.const 1 call $~lib/builtins/abort @@ -29546,7 +29546,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2253 i32.const 1 call $~lib/builtins/abort @@ -29559,7 +29559,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2254 i32.const 1 call $~lib/builtins/abort @@ -29572,7 +29572,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2255 i32.const 1 call $~lib/builtins/abort @@ -29585,7 +29585,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2258 i32.const 1 call $~lib/builtins/abort @@ -29598,7 +29598,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2259 i32.const 1 call $~lib/builtins/abort @@ -29611,7 +29611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2260 i32.const 1 call $~lib/builtins/abort @@ -29624,7 +29624,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2261 i32.const 1 call $~lib/builtins/abort @@ -29637,7 +29637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2262 i32.const 1 call $~lib/builtins/abort @@ -29650,7 +29650,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2263 i32.const 1 call $~lib/builtins/abort @@ -29663,7 +29663,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2264 i32.const 1 call $~lib/builtins/abort @@ -29676,7 +29676,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2265 i32.const 1 call $~lib/builtins/abort @@ -29689,7 +29689,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2266 i32.const 1 call $~lib/builtins/abort @@ -29702,7 +29702,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2267 i32.const 1 call $~lib/builtins/abort @@ -29715,7 +29715,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2268 i32.const 1 call $~lib/builtins/abort @@ -29728,7 +29728,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2269 i32.const 1 call $~lib/builtins/abort @@ -29741,7 +29741,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2270 i32.const 1 call $~lib/builtins/abort @@ -29754,7 +29754,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2271 i32.const 1 call $~lib/builtins/abort @@ -29767,7 +29767,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2272 i32.const 1 call $~lib/builtins/abort @@ -29780,7 +29780,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2273 i32.const 1 call $~lib/builtins/abort @@ -29793,7 +29793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2274 i32.const 1 call $~lib/builtins/abort @@ -29806,7 +29806,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2275 i32.const 1 call $~lib/builtins/abort @@ -29819,7 +29819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2276 i32.const 1 call $~lib/builtins/abort @@ -29832,7 +29832,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2277 i32.const 1 call $~lib/builtins/abort @@ -29845,7 +29845,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2278 i32.const 1 call $~lib/builtins/abort @@ -29858,7 +29858,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2279 i32.const 1 call $~lib/builtins/abort @@ -29871,7 +29871,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2280 i32.const 1 call $~lib/builtins/abort @@ -29884,7 +29884,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2281 i32.const 1 call $~lib/builtins/abort @@ -29897,7 +29897,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2282 i32.const 1 call $~lib/builtins/abort @@ -29910,7 +29910,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2283 i32.const 1 call $~lib/builtins/abort @@ -29923,7 +29923,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2284 i32.const 1 call $~lib/builtins/abort @@ -29936,7 +29936,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2285 i32.const 1 call $~lib/builtins/abort @@ -29949,7 +29949,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2286 i32.const 1 call $~lib/builtins/abort @@ -29962,7 +29962,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2287 i32.const 1 call $~lib/builtins/abort @@ -29975,7 +29975,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2288 i32.const 1 call $~lib/builtins/abort @@ -29988,7 +29988,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2289 i32.const 1 call $~lib/builtins/abort @@ -30001,7 +30001,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2290 i32.const 1 call $~lib/builtins/abort @@ -30014,7 +30014,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2291 i32.const 1 call $~lib/builtins/abort @@ -30027,7 +30027,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2292 i32.const 1 call $~lib/builtins/abort @@ -30040,7 +30040,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2293 i32.const 1 call $~lib/builtins/abort @@ -30053,7 +30053,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2294 i32.const 1 call $~lib/builtins/abort @@ -30066,7 +30066,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2295 i32.const 1 call $~lib/builtins/abort @@ -30079,7 +30079,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2296 i32.const 1 call $~lib/builtins/abort @@ -30092,7 +30092,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2297 i32.const 1 call $~lib/builtins/abort @@ -30105,7 +30105,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2298 i32.const 1 call $~lib/builtins/abort @@ -30118,7 +30118,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2299 i32.const 1 call $~lib/builtins/abort @@ -30131,7 +30131,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2300 i32.const 1 call $~lib/builtins/abort @@ -30144,7 +30144,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2301 i32.const 1 call $~lib/builtins/abort @@ -30157,7 +30157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2302 i32.const 1 call $~lib/builtins/abort @@ -30170,7 +30170,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2303 i32.const 1 call $~lib/builtins/abort @@ -30183,7 +30183,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2304 i32.const 1 call $~lib/builtins/abort @@ -30196,7 +30196,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2305 i32.const 1 call $~lib/builtins/abort @@ -30209,7 +30209,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2306 i32.const 1 call $~lib/builtins/abort @@ -30222,7 +30222,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2307 i32.const 1 call $~lib/builtins/abort @@ -30235,7 +30235,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2308 i32.const 1 call $~lib/builtins/abort @@ -30248,7 +30248,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2309 i32.const 1 call $~lib/builtins/abort @@ -30261,7 +30261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2310 i32.const 1 call $~lib/builtins/abort @@ -30274,7 +30274,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2311 i32.const 1 call $~lib/builtins/abort @@ -30287,7 +30287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2312 i32.const 1 call $~lib/builtins/abort @@ -30300,7 +30300,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2313 i32.const 1 call $~lib/builtins/abort @@ -30313,7 +30313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2314 i32.const 1 call $~lib/builtins/abort @@ -30326,7 +30326,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2315 i32.const 1 call $~lib/builtins/abort @@ -30339,7 +30339,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2329 i32.const 1 call $~lib/builtins/abort @@ -30352,7 +30352,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2330 i32.const 1 call $~lib/builtins/abort @@ -30365,7 +30365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2331 i32.const 1 call $~lib/builtins/abort @@ -30378,7 +30378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2332 i32.const 1 call $~lib/builtins/abort @@ -30391,7 +30391,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2333 i32.const 1 call $~lib/builtins/abort @@ -30404,7 +30404,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2334 i32.const 1 call $~lib/builtins/abort @@ -30417,7 +30417,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2335 i32.const 1 call $~lib/builtins/abort @@ -30430,7 +30430,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2336 i32.const 1 call $~lib/builtins/abort @@ -30443,7 +30443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2337 i32.const 1 call $~lib/builtins/abort @@ -30456,7 +30456,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2338 i32.const 1 call $~lib/builtins/abort @@ -30469,7 +30469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2341 i32.const 1 call $~lib/builtins/abort @@ -30482,7 +30482,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2342 i32.const 1 call $~lib/builtins/abort @@ -30495,7 +30495,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2343 i32.const 1 call $~lib/builtins/abort @@ -30508,7 +30508,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2344 i32.const 1 call $~lib/builtins/abort @@ -30521,7 +30521,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2345 i32.const 1 call $~lib/builtins/abort @@ -30534,7 +30534,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2346 i32.const 1 call $~lib/builtins/abort @@ -30547,7 +30547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2347 i32.const 1 call $~lib/builtins/abort @@ -30560,7 +30560,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2348 i32.const 1 call $~lib/builtins/abort @@ -30573,7 +30573,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2349 i32.const 1 call $~lib/builtins/abort @@ -30586,7 +30586,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2350 i32.const 1 call $~lib/builtins/abort @@ -30599,7 +30599,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2351 i32.const 1 call $~lib/builtins/abort @@ -30612,7 +30612,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2352 i32.const 1 call $~lib/builtins/abort @@ -30625,7 +30625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2353 i32.const 1 call $~lib/builtins/abort @@ -30638,7 +30638,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2354 i32.const 1 call $~lib/builtins/abort @@ -30651,7 +30651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2355 i32.const 1 call $~lib/builtins/abort @@ -30664,7 +30664,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2356 i32.const 1 call $~lib/builtins/abort @@ -30677,7 +30677,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2357 i32.const 1 call $~lib/builtins/abort @@ -30690,7 +30690,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2358 i32.const 1 call $~lib/builtins/abort @@ -30703,7 +30703,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2359 i32.const 1 call $~lib/builtins/abort @@ -30716,7 +30716,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2360 i32.const 1 call $~lib/builtins/abort @@ -30729,7 +30729,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2361 i32.const 1 call $~lib/builtins/abort @@ -30742,7 +30742,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2362 i32.const 1 call $~lib/builtins/abort @@ -30755,7 +30755,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2363 i32.const 1 call $~lib/builtins/abort @@ -30768,7 +30768,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2364 i32.const 1 call $~lib/builtins/abort @@ -30781,7 +30781,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2365 i32.const 1 call $~lib/builtins/abort @@ -30794,7 +30794,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2366 i32.const 1 call $~lib/builtins/abort @@ -30807,7 +30807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2367 i32.const 1 call $~lib/builtins/abort @@ -30820,7 +30820,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2368 i32.const 1 call $~lib/builtins/abort @@ -30833,7 +30833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2369 i32.const 1 call $~lib/builtins/abort @@ -30846,7 +30846,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2370 i32.const 1 call $~lib/builtins/abort @@ -30859,7 +30859,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2371 i32.const 1 call $~lib/builtins/abort @@ -30872,7 +30872,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2372 i32.const 1 call $~lib/builtins/abort @@ -30885,7 +30885,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2373 i32.const 1 call $~lib/builtins/abort @@ -30898,7 +30898,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2374 i32.const 1 call $~lib/builtins/abort @@ -30911,7 +30911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2375 i32.const 1 call $~lib/builtins/abort @@ -30924,7 +30924,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2376 i32.const 1 call $~lib/builtins/abort @@ -30937,7 +30937,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2377 i32.const 1 call $~lib/builtins/abort @@ -30950,7 +30950,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2378 i32.const 1 call $~lib/builtins/abort @@ -30963,7 +30963,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2379 i32.const 1 call $~lib/builtins/abort @@ -30976,7 +30976,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2380 i32.const 1 call $~lib/builtins/abort @@ -30989,7 +30989,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2381 i32.const 1 call $~lib/builtins/abort @@ -31002,7 +31002,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2382 i32.const 1 call $~lib/builtins/abort @@ -31015,7 +31015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2383 i32.const 1 call $~lib/builtins/abort @@ -31028,7 +31028,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2384 i32.const 1 call $~lib/builtins/abort @@ -31041,7 +31041,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2385 i32.const 1 call $~lib/builtins/abort @@ -31054,7 +31054,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2386 i32.const 1 call $~lib/builtins/abort @@ -31067,7 +31067,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2387 i32.const 1 call $~lib/builtins/abort @@ -31080,7 +31080,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2388 i32.const 1 call $~lib/builtins/abort @@ -31093,7 +31093,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2389 i32.const 1 call $~lib/builtins/abort @@ -31106,7 +31106,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2390 i32.const 1 call $~lib/builtins/abort @@ -31119,7 +31119,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2391 i32.const 1 call $~lib/builtins/abort @@ -31132,7 +31132,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2392 i32.const 1 call $~lib/builtins/abort @@ -31145,7 +31145,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2393 i32.const 1 call $~lib/builtins/abort @@ -31158,7 +31158,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2394 i32.const 1 call $~lib/builtins/abort @@ -31171,7 +31171,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2395 i32.const 1 call $~lib/builtins/abort @@ -31184,7 +31184,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2396 i32.const 1 call $~lib/builtins/abort @@ -31197,7 +31197,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2397 i32.const 1 call $~lib/builtins/abort @@ -31210,7 +31210,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2398 i32.const 1 call $~lib/builtins/abort @@ -31223,7 +31223,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2399 i32.const 1 call $~lib/builtins/abort @@ -31236,7 +31236,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2400 i32.const 1 call $~lib/builtins/abort @@ -31249,7 +31249,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2401 i32.const 1 call $~lib/builtins/abort @@ -31262,7 +31262,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2402 i32.const 1 call $~lib/builtins/abort @@ -31275,7 +31275,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2403 i32.const 1 call $~lib/builtins/abort @@ -31288,7 +31288,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2404 i32.const 1 call $~lib/builtins/abort @@ -31301,7 +31301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2405 i32.const 1 call $~lib/builtins/abort @@ -31314,7 +31314,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2406 i32.const 1 call $~lib/builtins/abort @@ -31327,7 +31327,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2409 i32.const 1 call $~lib/builtins/abort @@ -31340,7 +31340,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2410 i32.const 1 call $~lib/builtins/abort @@ -31353,7 +31353,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2411 i32.const 1 call $~lib/builtins/abort @@ -31366,7 +31366,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2412 i32.const 1 call $~lib/builtins/abort @@ -31379,7 +31379,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2413 i32.const 1 call $~lib/builtins/abort @@ -31392,7 +31392,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2414 i32.const 1 call $~lib/builtins/abort @@ -31405,7 +31405,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2415 i32.const 1 call $~lib/builtins/abort @@ -31418,7 +31418,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2416 i32.const 1 call $~lib/builtins/abort @@ -31431,7 +31431,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2419 i32.const 1 call $~lib/builtins/abort @@ -31444,7 +31444,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2420 i32.const 1 call $~lib/builtins/abort @@ -31457,7 +31457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2421 i32.const 1 call $~lib/builtins/abort @@ -31470,7 +31470,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2422 i32.const 1 call $~lib/builtins/abort @@ -31483,7 +31483,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2423 i32.const 1 call $~lib/builtins/abort @@ -31496,7 +31496,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2424 i32.const 1 call $~lib/builtins/abort @@ -31509,7 +31509,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2425 i32.const 1 call $~lib/builtins/abort @@ -31522,7 +31522,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2426 i32.const 1 call $~lib/builtins/abort @@ -31535,7 +31535,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2429 i32.const 1 call $~lib/builtins/abort @@ -31548,7 +31548,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2430 i32.const 1 call $~lib/builtins/abort @@ -31561,7 +31561,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2432 i32.const 1 call $~lib/builtins/abort @@ -31574,7 +31574,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2433 i32.const 1 call $~lib/builtins/abort @@ -31587,7 +31587,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2435 i32.const 1 call $~lib/builtins/abort @@ -31600,7 +31600,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2436 i32.const 1 call $~lib/builtins/abort @@ -31613,7 +31613,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2438 i32.const 1 call $~lib/builtins/abort @@ -31626,7 +31626,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2439 i32.const 1 call $~lib/builtins/abort @@ -31639,7 +31639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2441 i32.const 1 call $~lib/builtins/abort @@ -31652,7 +31652,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2442 i32.const 1 call $~lib/builtins/abort @@ -31665,7 +31665,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2444 i32.const 1 call $~lib/builtins/abort @@ -31678,7 +31678,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2445 i32.const 1 call $~lib/builtins/abort @@ -31691,7 +31691,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2447 i32.const 1 call $~lib/builtins/abort @@ -31704,7 +31704,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2448 i32.const 1 call $~lib/builtins/abort @@ -31717,7 +31717,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2450 i32.const 1 call $~lib/builtins/abort @@ -31730,7 +31730,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2451 i32.const 1 call $~lib/builtins/abort @@ -31743,7 +31743,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2453 i32.const 1 call $~lib/builtins/abort @@ -31756,7 +31756,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2454 i32.const 1 call $~lib/builtins/abort @@ -31769,7 +31769,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2456 i32.const 1 call $~lib/builtins/abort @@ -31782,7 +31782,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2457 i32.const 1 call $~lib/builtins/abort @@ -31795,7 +31795,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2458 i32.const 1 call $~lib/builtins/abort @@ -31808,7 +31808,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2459 i32.const 1 call $~lib/builtins/abort @@ -31821,7 +31821,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2460 i32.const 1 call $~lib/builtins/abort @@ -31834,7 +31834,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2461 i32.const 1 call $~lib/builtins/abort @@ -31847,7 +31847,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2462 i32.const 1 call $~lib/builtins/abort @@ -31860,7 +31860,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2463 i32.const 1 call $~lib/builtins/abort @@ -31873,7 +31873,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2465 i32.const 1 call $~lib/builtins/abort @@ -31886,7 +31886,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2466 i32.const 1 call $~lib/builtins/abort @@ -31899,7 +31899,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2467 i32.const 1 call $~lib/builtins/abort @@ -31912,7 +31912,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2468 i32.const 1 call $~lib/builtins/abort @@ -31925,7 +31925,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2469 i32.const 1 call $~lib/builtins/abort @@ -31938,7 +31938,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2470 i32.const 1 call $~lib/builtins/abort @@ -31951,7 +31951,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2471 i32.const 1 call $~lib/builtins/abort @@ -31964,7 +31964,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2472 i32.const 1 call $~lib/builtins/abort @@ -31977,7 +31977,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2473 i32.const 1 call $~lib/builtins/abort @@ -31990,7 +31990,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2474 i32.const 1 call $~lib/builtins/abort @@ -32003,7 +32003,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2475 i32.const 1 call $~lib/builtins/abort @@ -32016,7 +32016,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2476 i32.const 1 call $~lib/builtins/abort @@ -32029,7 +32029,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2477 i32.const 1 call $~lib/builtins/abort @@ -32042,7 +32042,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2478 i32.const 1 call $~lib/builtins/abort @@ -32055,7 +32055,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2479 i32.const 1 call $~lib/builtins/abort @@ -32068,7 +32068,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2480 i32.const 1 call $~lib/builtins/abort @@ -32081,7 +32081,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2481 i32.const 1 call $~lib/builtins/abort @@ -32094,7 +32094,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2482 i32.const 1 call $~lib/builtins/abort @@ -32107,7 +32107,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2483 i32.const 1 call $~lib/builtins/abort @@ -32120,7 +32120,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2484 i32.const 1 call $~lib/builtins/abort @@ -32133,7 +32133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2493 i32.const 1 call $~lib/builtins/abort @@ -32146,7 +32146,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2494 i32.const 1 call $~lib/builtins/abort @@ -32159,7 +32159,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2495 i32.const 1 call $~lib/builtins/abort @@ -32172,7 +32172,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2496 i32.const 1 call $~lib/builtins/abort @@ -32185,7 +32185,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2497 i32.const 1 call $~lib/builtins/abort @@ -32198,7 +32198,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2498 i32.const 1 call $~lib/builtins/abort @@ -32211,7 +32211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2499 i32.const 1 call $~lib/builtins/abort @@ -32224,7 +32224,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2500 i32.const 1 call $~lib/builtins/abort @@ -32237,7 +32237,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2501 i32.const 1 call $~lib/builtins/abort @@ -32250,7 +32250,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2502 i32.const 1 call $~lib/builtins/abort @@ -32263,7 +32263,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2505 i32.const 1 call $~lib/builtins/abort @@ -32276,7 +32276,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2506 i32.const 1 call $~lib/builtins/abort @@ -32289,7 +32289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2507 i32.const 1 call $~lib/builtins/abort @@ -32302,7 +32302,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2508 i32.const 1 call $~lib/builtins/abort @@ -32315,7 +32315,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2509 i32.const 1 call $~lib/builtins/abort @@ -32328,7 +32328,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2510 i32.const 1 call $~lib/builtins/abort @@ -32341,7 +32341,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2511 i32.const 1 call $~lib/builtins/abort @@ -32354,7 +32354,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2512 i32.const 1 call $~lib/builtins/abort @@ -32367,7 +32367,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2513 i32.const 1 call $~lib/builtins/abort @@ -32380,7 +32380,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2514 i32.const 1 call $~lib/builtins/abort @@ -32393,7 +32393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2515 i32.const 1 call $~lib/builtins/abort @@ -32406,7 +32406,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2516 i32.const 1 call $~lib/builtins/abort @@ -32419,7 +32419,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2517 i32.const 1 call $~lib/builtins/abort @@ -32432,7 +32432,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2518 i32.const 1 call $~lib/builtins/abort @@ -32445,7 +32445,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2519 i32.const 1 call $~lib/builtins/abort @@ -32458,7 +32458,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2520 i32.const 1 call $~lib/builtins/abort @@ -32471,7 +32471,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2521 i32.const 1 call $~lib/builtins/abort @@ -32484,7 +32484,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2522 i32.const 1 call $~lib/builtins/abort @@ -32497,7 +32497,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2523 i32.const 1 call $~lib/builtins/abort @@ -32510,7 +32510,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2524 i32.const 1 call $~lib/builtins/abort @@ -32523,7 +32523,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2525 i32.const 1 call $~lib/builtins/abort @@ -32536,7 +32536,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2526 i32.const 1 call $~lib/builtins/abort @@ -32549,7 +32549,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2527 i32.const 1 call $~lib/builtins/abort @@ -32562,7 +32562,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2528 i32.const 1 call $~lib/builtins/abort @@ -32575,7 +32575,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2529 i32.const 1 call $~lib/builtins/abort @@ -32588,7 +32588,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2530 i32.const 1 call $~lib/builtins/abort @@ -32601,7 +32601,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2531 i32.const 1 call $~lib/builtins/abort @@ -32614,7 +32614,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2532 i32.const 1 call $~lib/builtins/abort @@ -32627,7 +32627,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2533 i32.const 1 call $~lib/builtins/abort @@ -32640,7 +32640,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2534 i32.const 1 call $~lib/builtins/abort @@ -32653,7 +32653,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2535 i32.const 1 call $~lib/builtins/abort @@ -32666,7 +32666,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2536 i32.const 1 call $~lib/builtins/abort @@ -32679,7 +32679,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2537 i32.const 1 call $~lib/builtins/abort @@ -32692,7 +32692,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2538 i32.const 1 call $~lib/builtins/abort @@ -32705,7 +32705,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2539 i32.const 1 call $~lib/builtins/abort @@ -32718,7 +32718,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2540 i32.const 1 call $~lib/builtins/abort @@ -32731,7 +32731,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2541 i32.const 1 call $~lib/builtins/abort @@ -32744,7 +32744,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2542 i32.const 1 call $~lib/builtins/abort @@ -32757,7 +32757,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2543 i32.const 1 call $~lib/builtins/abort @@ -32770,7 +32770,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2544 i32.const 1 call $~lib/builtins/abort @@ -32783,7 +32783,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2545 i32.const 1 call $~lib/builtins/abort @@ -32796,7 +32796,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2546 i32.const 1 call $~lib/builtins/abort @@ -32809,7 +32809,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2547 i32.const 1 call $~lib/builtins/abort @@ -32822,7 +32822,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2548 i32.const 1 call $~lib/builtins/abort @@ -32835,7 +32835,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2549 i32.const 1 call $~lib/builtins/abort @@ -32848,7 +32848,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2550 i32.const 1 call $~lib/builtins/abort @@ -32861,7 +32861,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2551 i32.const 1 call $~lib/builtins/abort @@ -32874,7 +32874,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2552 i32.const 1 call $~lib/builtins/abort @@ -32887,7 +32887,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2553 i32.const 1 call $~lib/builtins/abort @@ -32900,7 +32900,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2554 i32.const 1 call $~lib/builtins/abort @@ -32913,7 +32913,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2555 i32.const 1 call $~lib/builtins/abort @@ -32926,7 +32926,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2556 i32.const 1 call $~lib/builtins/abort @@ -32939,7 +32939,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2557 i32.const 1 call $~lib/builtins/abort @@ -32952,7 +32952,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2558 i32.const 1 call $~lib/builtins/abort @@ -32965,7 +32965,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2559 i32.const 1 call $~lib/builtins/abort @@ -32978,7 +32978,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2560 i32.const 1 call $~lib/builtins/abort @@ -32991,7 +32991,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2561 i32.const 1 call $~lib/builtins/abort @@ -33004,7 +33004,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2562 i32.const 1 call $~lib/builtins/abort @@ -33017,7 +33017,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2563 i32.const 1 call $~lib/builtins/abort @@ -33030,7 +33030,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2564 i32.const 1 call $~lib/builtins/abort @@ -33043,7 +33043,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2565 i32.const 1 call $~lib/builtins/abort @@ -33056,7 +33056,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2566 i32.const 1 call $~lib/builtins/abort @@ -33069,7 +33069,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2567 i32.const 1 call $~lib/builtins/abort @@ -33082,7 +33082,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2568 i32.const 1 call $~lib/builtins/abort @@ -33095,7 +33095,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2569 i32.const 1 call $~lib/builtins/abort @@ -33108,7 +33108,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2570 i32.const 1 call $~lib/builtins/abort @@ -33122,7 +33122,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2582 i32.const 1 call $~lib/builtins/abort @@ -33136,7 +33136,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2583 i32.const 1 call $~lib/builtins/abort @@ -33150,7 +33150,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2584 i32.const 1 call $~lib/builtins/abort @@ -33164,7 +33164,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2585 i32.const 1 call $~lib/builtins/abort @@ -33178,7 +33178,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2586 i32.const 1 call $~lib/builtins/abort @@ -33192,7 +33192,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2587 i32.const 1 call $~lib/builtins/abort @@ -33206,7 +33206,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2588 i32.const 1 call $~lib/builtins/abort @@ -33220,7 +33220,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2589 i32.const 1 call $~lib/builtins/abort @@ -33234,7 +33234,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2590 i32.const 1 call $~lib/builtins/abort @@ -33248,7 +33248,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2591 i32.const 1 call $~lib/builtins/abort @@ -33262,7 +33262,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2594 i32.const 1 call $~lib/builtins/abort @@ -33276,7 +33276,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2595 i32.const 1 call $~lib/builtins/abort @@ -33290,7 +33290,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2596 i32.const 1 call $~lib/builtins/abort @@ -33304,7 +33304,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2597 i32.const 1 call $~lib/builtins/abort @@ -33318,7 +33318,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2598 i32.const 1 call $~lib/builtins/abort @@ -33332,7 +33332,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2599 i32.const 1 call $~lib/builtins/abort @@ -33346,7 +33346,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2600 i32.const 1 call $~lib/builtins/abort @@ -33360,7 +33360,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2601 i32.const 1 call $~lib/builtins/abort @@ -33374,7 +33374,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2602 i32.const 1 call $~lib/builtins/abort @@ -33388,7 +33388,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2603 i32.const 1 call $~lib/builtins/abort @@ -33402,7 +33402,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2604 i32.const 1 call $~lib/builtins/abort @@ -33416,7 +33416,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2605 i32.const 1 call $~lib/builtins/abort @@ -33430,7 +33430,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2606 i32.const 1 call $~lib/builtins/abort @@ -33444,7 +33444,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2607 i32.const 1 call $~lib/builtins/abort @@ -33458,7 +33458,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2608 i32.const 1 call $~lib/builtins/abort @@ -33472,7 +33472,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2609 i32.const 1 call $~lib/builtins/abort @@ -33486,7 +33486,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2610 i32.const 1 call $~lib/builtins/abort @@ -33500,7 +33500,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2611 i32.const 1 call $~lib/builtins/abort @@ -33514,7 +33514,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2612 i32.const 1 call $~lib/builtins/abort @@ -33528,7 +33528,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2613 i32.const 1 call $~lib/builtins/abort @@ -33542,7 +33542,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2614 i32.const 1 call $~lib/builtins/abort @@ -33556,7 +33556,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2615 i32.const 1 call $~lib/builtins/abort @@ -33570,7 +33570,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2616 i32.const 1 call $~lib/builtins/abort @@ -33584,7 +33584,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2617 i32.const 1 call $~lib/builtins/abort @@ -33598,7 +33598,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2618 i32.const 1 call $~lib/builtins/abort @@ -33612,7 +33612,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2619 i32.const 1 call $~lib/builtins/abort @@ -33626,7 +33626,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2620 i32.const 1 call $~lib/builtins/abort @@ -33640,7 +33640,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2621 i32.const 1 call $~lib/builtins/abort @@ -33654,7 +33654,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2622 i32.const 1 call $~lib/builtins/abort @@ -33668,7 +33668,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2623 i32.const 1 call $~lib/builtins/abort @@ -33682,7 +33682,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2624 i32.const 1 call $~lib/builtins/abort @@ -33696,7 +33696,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2625 i32.const 1 call $~lib/builtins/abort @@ -33710,7 +33710,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2626 i32.const 1 call $~lib/builtins/abort @@ -33724,7 +33724,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2627 i32.const 1 call $~lib/builtins/abort @@ -33738,7 +33738,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2628 i32.const 1 call $~lib/builtins/abort @@ -33752,7 +33752,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2629 i32.const 1 call $~lib/builtins/abort @@ -33766,7 +33766,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2630 i32.const 1 call $~lib/builtins/abort @@ -33780,7 +33780,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2631 i32.const 1 call $~lib/builtins/abort @@ -33794,7 +33794,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2632 i32.const 1 call $~lib/builtins/abort @@ -33808,7 +33808,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2633 i32.const 1 call $~lib/builtins/abort @@ -33822,7 +33822,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2634 i32.const 1 call $~lib/builtins/abort @@ -33836,7 +33836,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2635 i32.const 1 call $~lib/builtins/abort @@ -33850,7 +33850,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2636 i32.const 1 call $~lib/builtins/abort @@ -33864,7 +33864,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2637 i32.const 1 call $~lib/builtins/abort @@ -33878,7 +33878,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2638 i32.const 1 call $~lib/builtins/abort @@ -33892,7 +33892,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2639 i32.const 1 call $~lib/builtins/abort @@ -33906,7 +33906,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2640 i32.const 1 call $~lib/builtins/abort @@ -33920,7 +33920,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2641 i32.const 1 call $~lib/builtins/abort @@ -33934,7 +33934,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2642 i32.const 1 call $~lib/builtins/abort @@ -33948,7 +33948,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2643 i32.const 1 call $~lib/builtins/abort @@ -33962,7 +33962,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2644 i32.const 1 call $~lib/builtins/abort @@ -33976,7 +33976,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2645 i32.const 1 call $~lib/builtins/abort @@ -33990,7 +33990,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2646 i32.const 1 call $~lib/builtins/abort @@ -34004,7 +34004,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2647 i32.const 1 call $~lib/builtins/abort @@ -34018,7 +34018,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2648 i32.const 1 call $~lib/builtins/abort @@ -34032,7 +34032,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2649 i32.const 1 call $~lib/builtins/abort @@ -34046,7 +34046,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2650 i32.const 1 call $~lib/builtins/abort @@ -34060,7 +34060,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2651 i32.const 1 call $~lib/builtins/abort @@ -34074,7 +34074,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2652 i32.const 1 call $~lib/builtins/abort @@ -34088,7 +34088,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2653 i32.const 1 call $~lib/builtins/abort @@ -34102,7 +34102,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2654 i32.const 1 call $~lib/builtins/abort @@ -34116,7 +34116,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2655 i32.const 1 call $~lib/builtins/abort @@ -34130,7 +34130,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2656 i32.const 1 call $~lib/builtins/abort @@ -34144,7 +34144,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2657 i32.const 1 call $~lib/builtins/abort @@ -34158,7 +34158,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2658 i32.const 1 call $~lib/builtins/abort @@ -34172,7 +34172,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2659 i32.const 1 call $~lib/builtins/abort @@ -34186,7 +34186,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2660 i32.const 1 call $~lib/builtins/abort @@ -34200,7 +34200,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2661 i32.const 1 call $~lib/builtins/abort @@ -34214,7 +34214,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2662 i32.const 1 call $~lib/builtins/abort @@ -34228,7 +34228,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2663 i32.const 1 call $~lib/builtins/abort @@ -34242,7 +34242,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2664 i32.const 1 call $~lib/builtins/abort @@ -34256,7 +34256,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2665 i32.const 1 call $~lib/builtins/abort @@ -34270,7 +34270,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2666 i32.const 1 call $~lib/builtins/abort @@ -34284,7 +34284,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2667 i32.const 1 call $~lib/builtins/abort @@ -34298,7 +34298,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2668 i32.const 1 call $~lib/builtins/abort @@ -34312,7 +34312,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2669 i32.const 1 call $~lib/builtins/abort @@ -34326,7 +34326,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2670 i32.const 1 call $~lib/builtins/abort @@ -34340,7 +34340,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2671 i32.const 1 call $~lib/builtins/abort @@ -34354,7 +34354,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2672 i32.const 1 call $~lib/builtins/abort @@ -34368,7 +34368,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2673 i32.const 1 call $~lib/builtins/abort @@ -34382,7 +34382,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2674 i32.const 1 call $~lib/builtins/abort @@ -34396,7 +34396,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2675 i32.const 1 call $~lib/builtins/abort @@ -34410,7 +34410,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2676 i32.const 1 call $~lib/builtins/abort @@ -34424,7 +34424,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2677 i32.const 1 call $~lib/builtins/abort @@ -34438,7 +34438,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2678 i32.const 1 call $~lib/builtins/abort @@ -34452,7 +34452,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2679 i32.const 1 call $~lib/builtins/abort @@ -34466,7 +34466,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2680 i32.const 1 call $~lib/builtins/abort @@ -34480,7 +34480,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2681 i32.const 1 call $~lib/builtins/abort @@ -34494,7 +34494,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2682 i32.const 1 call $~lib/builtins/abort @@ -34508,7 +34508,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2683 i32.const 1 call $~lib/builtins/abort @@ -34522,7 +34522,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2684 i32.const 1 call $~lib/builtins/abort @@ -34536,7 +34536,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2685 i32.const 1 call $~lib/builtins/abort @@ -34549,7 +34549,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2688 i32.const 1 call $~lib/builtins/abort @@ -34562,7 +34562,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2689 i32.const 1 call $~lib/builtins/abort @@ -34575,7 +34575,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2690 i32.const 1 call $~lib/builtins/abort @@ -34588,7 +34588,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2691 i32.const 1 call $~lib/builtins/abort @@ -34601,7 +34601,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2692 i32.const 1 call $~lib/builtins/abort @@ -34614,7 +34614,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2693 i32.const 1 call $~lib/builtins/abort @@ -34627,7 +34627,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2694 i32.const 1 call $~lib/builtins/abort @@ -34640,7 +34640,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2695 i32.const 1 call $~lib/builtins/abort @@ -34653,7 +34653,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2697 i32.const 1 call $~lib/builtins/abort @@ -34666,7 +34666,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2698 i32.const 1 call $~lib/builtins/abort @@ -34679,7 +34679,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2699 i32.const 1 call $~lib/builtins/abort @@ -34692,7 +34692,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2700 i32.const 1 call $~lib/builtins/abort @@ -34705,7 +34705,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2701 i32.const 1 call $~lib/builtins/abort @@ -34719,7 +34719,7 @@ f64.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2702 i32.const 1 call $~lib/builtins/abort @@ -34732,7 +34732,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2704 i32.const 1 call $~lib/builtins/abort @@ -34745,7 +34745,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2705 i32.const 1 call $~lib/builtins/abort @@ -34758,7 +34758,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2706 i32.const 1 call $~lib/builtins/abort @@ -34771,7 +34771,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2707 i32.const 1 call $~lib/builtins/abort @@ -34784,7 +34784,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2708 i32.const 1 call $~lib/builtins/abort @@ -34797,7 +34797,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2709 i32.const 1 call $~lib/builtins/abort @@ -34810,7 +34810,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2710 i32.const 1 call $~lib/builtins/abort @@ -34824,7 +34824,7 @@ f64.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2711 i32.const 1 call $~lib/builtins/abort @@ -34837,7 +34837,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2713 i32.const 1 call $~lib/builtins/abort @@ -34850,7 +34850,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2714 i32.const 1 call $~lib/builtins/abort @@ -34863,7 +34863,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2715 i32.const 1 call $~lib/builtins/abort @@ -34876,7 +34876,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2716 i32.const 1 call $~lib/builtins/abort @@ -34889,7 +34889,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2717 i32.const 1 call $~lib/builtins/abort @@ -34902,7 +34902,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2718 i32.const 1 call $~lib/builtins/abort @@ -34915,7 +34915,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2719 i32.const 1 call $~lib/builtins/abort @@ -34929,7 +34929,7 @@ f64.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2720 i32.const 1 call $~lib/builtins/abort @@ -34942,7 +34942,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2722 i32.const 1 call $~lib/builtins/abort @@ -34955,7 +34955,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2723 i32.const 1 call $~lib/builtins/abort @@ -34969,7 +34969,7 @@ f64.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2724 i32.const 1 call $~lib/builtins/abort @@ -34982,7 +34982,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2725 i32.const 1 call $~lib/builtins/abort @@ -34995,7 +34995,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2726 i32.const 1 call $~lib/builtins/abort @@ -35008,7 +35008,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2727 i32.const 1 call $~lib/builtins/abort @@ -35021,7 +35021,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2728 i32.const 1 call $~lib/builtins/abort @@ -35035,7 +35035,7 @@ f64.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2729 i32.const 1 call $~lib/builtins/abort @@ -35049,7 +35049,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2738 i32.const 1 call $~lib/builtins/abort @@ -35063,7 +35063,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2739 i32.const 1 call $~lib/builtins/abort @@ -35077,7 +35077,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2740 i32.const 1 call $~lib/builtins/abort @@ -35091,7 +35091,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2741 i32.const 1 call $~lib/builtins/abort @@ -35105,7 +35105,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2742 i32.const 1 call $~lib/builtins/abort @@ -35119,7 +35119,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2743 i32.const 1 call $~lib/builtins/abort @@ -35133,7 +35133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2744 i32.const 1 call $~lib/builtins/abort @@ -35147,7 +35147,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2745 i32.const 1 call $~lib/builtins/abort @@ -35161,7 +35161,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2746 i32.const 1 call $~lib/builtins/abort @@ -35175,7 +35175,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2747 i32.const 1 call $~lib/builtins/abort @@ -35189,7 +35189,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2750 i32.const 1 call $~lib/builtins/abort @@ -35203,7 +35203,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2751 i32.const 1 call $~lib/builtins/abort @@ -35217,7 +35217,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2752 i32.const 1 call $~lib/builtins/abort @@ -35231,7 +35231,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2753 i32.const 1 call $~lib/builtins/abort @@ -35245,7 +35245,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2754 i32.const 1 call $~lib/builtins/abort @@ -35259,7 +35259,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2755 i32.const 1 call $~lib/builtins/abort @@ -35273,7 +35273,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2756 i32.const 1 call $~lib/builtins/abort @@ -35287,7 +35287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2757 i32.const 1 call $~lib/builtins/abort @@ -35301,7 +35301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2758 i32.const 1 call $~lib/builtins/abort @@ -35315,7 +35315,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2759 i32.const 1 call $~lib/builtins/abort @@ -35329,7 +35329,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2760 i32.const 1 call $~lib/builtins/abort @@ -35343,7 +35343,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2761 i32.const 1 call $~lib/builtins/abort @@ -35357,7 +35357,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2762 i32.const 1 call $~lib/builtins/abort @@ -35371,7 +35371,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2763 i32.const 1 call $~lib/builtins/abort @@ -35385,7 +35385,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2764 i32.const 1 call $~lib/builtins/abort @@ -35399,7 +35399,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2765 i32.const 1 call $~lib/builtins/abort @@ -35413,7 +35413,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2766 i32.const 1 call $~lib/builtins/abort @@ -35427,7 +35427,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2767 i32.const 1 call $~lib/builtins/abort @@ -35441,7 +35441,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2768 i32.const 1 call $~lib/builtins/abort @@ -35455,7 +35455,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2769 i32.const 1 call $~lib/builtins/abort @@ -35469,7 +35469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2770 i32.const 1 call $~lib/builtins/abort @@ -35483,7 +35483,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2771 i32.const 1 call $~lib/builtins/abort @@ -35497,7 +35497,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2772 i32.const 1 call $~lib/builtins/abort @@ -35511,7 +35511,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2773 i32.const 1 call $~lib/builtins/abort @@ -35525,7 +35525,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2774 i32.const 1 call $~lib/builtins/abort @@ -35539,7 +35539,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2775 i32.const 1 call $~lib/builtins/abort @@ -35553,7 +35553,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2776 i32.const 1 call $~lib/builtins/abort @@ -35567,7 +35567,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2777 i32.const 1 call $~lib/builtins/abort @@ -35581,7 +35581,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2778 i32.const 1 call $~lib/builtins/abort @@ -35595,7 +35595,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2779 i32.const 1 call $~lib/builtins/abort @@ -35609,7 +35609,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2780 i32.const 1 call $~lib/builtins/abort @@ -35623,7 +35623,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2781 i32.const 1 call $~lib/builtins/abort @@ -35637,7 +35637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2782 i32.const 1 call $~lib/builtins/abort @@ -35651,7 +35651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2783 i32.const 1 call $~lib/builtins/abort @@ -35665,7 +35665,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2784 i32.const 1 call $~lib/builtins/abort @@ -35679,7 +35679,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2785 i32.const 1 call $~lib/builtins/abort @@ -35693,7 +35693,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2786 i32.const 1 call $~lib/builtins/abort @@ -35707,7 +35707,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2787 i32.const 1 call $~lib/builtins/abort @@ -35721,7 +35721,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2788 i32.const 1 call $~lib/builtins/abort @@ -35735,7 +35735,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2789 i32.const 1 call $~lib/builtins/abort @@ -35749,7 +35749,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2790 i32.const 1 call $~lib/builtins/abort @@ -35763,7 +35763,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2791 i32.const 1 call $~lib/builtins/abort @@ -35777,7 +35777,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2792 i32.const 1 call $~lib/builtins/abort @@ -35791,7 +35791,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2793 i32.const 1 call $~lib/builtins/abort @@ -35805,7 +35805,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2794 i32.const 1 call $~lib/builtins/abort @@ -35819,7 +35819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2795 i32.const 1 call $~lib/builtins/abort @@ -35833,7 +35833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2796 i32.const 1 call $~lib/builtins/abort @@ -35847,7 +35847,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2797 i32.const 1 call $~lib/builtins/abort @@ -35861,7 +35861,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2798 i32.const 1 call $~lib/builtins/abort @@ -35875,7 +35875,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2799 i32.const 1 call $~lib/builtins/abort @@ -35889,7 +35889,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2800 i32.const 1 call $~lib/builtins/abort @@ -35903,7 +35903,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2801 i32.const 1 call $~lib/builtins/abort @@ -35917,7 +35917,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2802 i32.const 1 call $~lib/builtins/abort @@ -35931,7 +35931,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2803 i32.const 1 call $~lib/builtins/abort @@ -35945,7 +35945,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2804 i32.const 1 call $~lib/builtins/abort @@ -35959,7 +35959,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2805 i32.const 1 call $~lib/builtins/abort @@ -35973,7 +35973,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2806 i32.const 1 call $~lib/builtins/abort @@ -35987,7 +35987,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2807 i32.const 1 call $~lib/builtins/abort @@ -36001,7 +36001,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2808 i32.const 1 call $~lib/builtins/abort @@ -36015,7 +36015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2809 i32.const 1 call $~lib/builtins/abort @@ -36029,7 +36029,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2810 i32.const 1 call $~lib/builtins/abort @@ -36043,7 +36043,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2811 i32.const 1 call $~lib/builtins/abort @@ -36057,7 +36057,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2812 i32.const 1 call $~lib/builtins/abort @@ -36071,7 +36071,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2813 i32.const 1 call $~lib/builtins/abort @@ -36085,7 +36085,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2814 i32.const 1 call $~lib/builtins/abort @@ -36099,7 +36099,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2815 i32.const 1 call $~lib/builtins/abort @@ -36113,7 +36113,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2816 i32.const 1 call $~lib/builtins/abort @@ -36127,7 +36127,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2817 i32.const 1 call $~lib/builtins/abort @@ -36141,7 +36141,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2818 i32.const 1 call $~lib/builtins/abort @@ -36155,7 +36155,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2819 i32.const 1 call $~lib/builtins/abort @@ -36169,7 +36169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2820 i32.const 1 call $~lib/builtins/abort @@ -36183,7 +36183,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2821 i32.const 1 call $~lib/builtins/abort @@ -36197,7 +36197,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2822 i32.const 1 call $~lib/builtins/abort @@ -36211,7 +36211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2823 i32.const 1 call $~lib/builtins/abort @@ -36225,7 +36225,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2824 i32.const 1 call $~lib/builtins/abort @@ -36239,7 +36239,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2825 i32.const 1 call $~lib/builtins/abort @@ -36253,7 +36253,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2826 i32.const 1 call $~lib/builtins/abort @@ -36267,7 +36267,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2827 i32.const 1 call $~lib/builtins/abort @@ -36281,7 +36281,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2828 i32.const 1 call $~lib/builtins/abort @@ -36295,7 +36295,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2829 i32.const 1 call $~lib/builtins/abort @@ -36309,7 +36309,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2830 i32.const 1 call $~lib/builtins/abort @@ -36323,7 +36323,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2831 i32.const 1 call $~lib/builtins/abort @@ -36337,7 +36337,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2832 i32.const 1 call $~lib/builtins/abort @@ -36351,7 +36351,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2833 i32.const 1 call $~lib/builtins/abort @@ -36365,7 +36365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2834 i32.const 1 call $~lib/builtins/abort @@ -36379,7 +36379,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2835 i32.const 1 call $~lib/builtins/abort @@ -36393,7 +36393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2836 i32.const 1 call $~lib/builtins/abort @@ -36407,7 +36407,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2837 i32.const 1 call $~lib/builtins/abort @@ -36421,7 +36421,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2838 i32.const 1 call $~lib/builtins/abort @@ -36435,7 +36435,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2839 i32.const 1 call $~lib/builtins/abort @@ -36449,7 +36449,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2840 i32.const 1 call $~lib/builtins/abort @@ -36463,7 +36463,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2841 i32.const 1 call $~lib/builtins/abort @@ -36477,7 +36477,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2844 i32.const 1 call $~lib/builtins/abort @@ -36491,7 +36491,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2845 i32.const 1 call $~lib/builtins/abort @@ -36505,7 +36505,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2846 i32.const 1 call $~lib/builtins/abort @@ -36519,7 +36519,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2847 i32.const 1 call $~lib/builtins/abort @@ -36533,7 +36533,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2848 i32.const 1 call $~lib/builtins/abort @@ -36547,7 +36547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2849 i32.const 1 call $~lib/builtins/abort @@ -36561,7 +36561,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2851 i32.const 1 call $~lib/builtins/abort @@ -36575,7 +36575,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2852 i32.const 1 call $~lib/builtins/abort @@ -36589,7 +36589,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2853 i32.const 1 call $~lib/builtins/abort @@ -36603,7 +36603,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2854 i32.const 1 call $~lib/builtins/abort @@ -36617,7 +36617,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2855 i32.const 1 call $~lib/builtins/abort @@ -36631,7 +36631,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2856 i32.const 1 call $~lib/builtins/abort @@ -36645,7 +36645,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2858 i32.const 1 call $~lib/builtins/abort @@ -36659,7 +36659,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2860 i32.const 1 call $~lib/builtins/abort @@ -36673,7 +36673,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2861 i32.const 1 call $~lib/builtins/abort @@ -36687,7 +36687,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2862 i32.const 1 call $~lib/builtins/abort @@ -36701,7 +36701,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2863 i32.const 1 call $~lib/builtins/abort @@ -36715,7 +36715,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2865 i32.const 1 call $~lib/builtins/abort @@ -36729,7 +36729,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2866 i32.const 1 call $~lib/builtins/abort @@ -36743,7 +36743,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2867 i32.const 1 call $~lib/builtins/abort @@ -36757,7 +36757,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2868 i32.const 1 call $~lib/builtins/abort @@ -36771,7 +36771,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2869 i32.const 1 call $~lib/builtins/abort @@ -36785,7 +36785,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2870 i32.const 1 call $~lib/builtins/abort @@ -36799,7 +36799,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2871 i32.const 1 call $~lib/builtins/abort @@ -36813,7 +36813,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2872 i32.const 1 call $~lib/builtins/abort @@ -36827,7 +36827,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2873 i32.const 1 call $~lib/builtins/abort @@ -36841,7 +36841,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2874 i32.const 1 call $~lib/builtins/abort @@ -36855,7 +36855,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2876 i32.const 1 call $~lib/builtins/abort @@ -36869,7 +36869,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2877 i32.const 1 call $~lib/builtins/abort @@ -36883,7 +36883,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2878 i32.const 1 call $~lib/builtins/abort @@ -36897,7 +36897,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2879 i32.const 1 call $~lib/builtins/abort @@ -36911,7 +36911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2880 i32.const 1 call $~lib/builtins/abort @@ -36925,7 +36925,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2881 i32.const 1 call $~lib/builtins/abort @@ -36939,7 +36939,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2883 i32.const 1 call $~lib/builtins/abort @@ -36953,7 +36953,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2884 i32.const 1 call $~lib/builtins/abort @@ -36967,7 +36967,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2885 i32.const 1 call $~lib/builtins/abort @@ -36981,7 +36981,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2886 i32.const 1 call $~lib/builtins/abort @@ -36995,7 +36995,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2888 i32.const 1 call $~lib/builtins/abort @@ -37009,7 +37009,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2889 i32.const 1 call $~lib/builtins/abort @@ -37023,7 +37023,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2890 i32.const 1 call $~lib/builtins/abort @@ -37037,7 +37037,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2891 i32.const 1 call $~lib/builtins/abort @@ -37051,7 +37051,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2892 i32.const 1 call $~lib/builtins/abort @@ -37065,7 +37065,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2893 i32.const 1 call $~lib/builtins/abort @@ -37079,7 +37079,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2894 i32.const 1 call $~lib/builtins/abort @@ -37093,7 +37093,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2896 i32.const 1 call $~lib/builtins/abort @@ -37107,7 +37107,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2897 i32.const 1 call $~lib/builtins/abort @@ -37121,7 +37121,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2898 i32.const 1 call $~lib/builtins/abort @@ -37135,7 +37135,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2899 i32.const 1 call $~lib/builtins/abort @@ -37149,7 +37149,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2901 i32.const 1 call $~lib/builtins/abort @@ -37163,7 +37163,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2902 i32.const 1 call $~lib/builtins/abort @@ -37177,7 +37177,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2903 i32.const 1 call $~lib/builtins/abort @@ -37191,7 +37191,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2904 i32.const 1 call $~lib/builtins/abort @@ -37205,7 +37205,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2906 i32.const 1 call $~lib/builtins/abort @@ -37219,7 +37219,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2907 i32.const 1 call $~lib/builtins/abort @@ -37233,7 +37233,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2908 i32.const 1 call $~lib/builtins/abort @@ -37247,7 +37247,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2909 i32.const 1 call $~lib/builtins/abort @@ -37261,7 +37261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2910 i32.const 1 call $~lib/builtins/abort @@ -37275,7 +37275,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2911 i32.const 1 call $~lib/builtins/abort @@ -37289,7 +37289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2913 i32.const 1 call $~lib/builtins/abort @@ -37303,7 +37303,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2914 i32.const 1 call $~lib/builtins/abort @@ -37317,7 +37317,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2916 i32.const 1 call $~lib/builtins/abort @@ -37331,7 +37331,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2917 i32.const 1 call $~lib/builtins/abort @@ -37345,7 +37345,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2918 i32.const 1 call $~lib/builtins/abort @@ -37359,7 +37359,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2919 i32.const 1 call $~lib/builtins/abort @@ -37373,7 +37373,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2920 i32.const 1 call $~lib/builtins/abort @@ -37387,7 +37387,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2921 i32.const 1 call $~lib/builtins/abort @@ -37401,7 +37401,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2922 i32.const 1 call $~lib/builtins/abort @@ -37415,7 +37415,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2924 i32.const 1 call $~lib/builtins/abort @@ -37429,7 +37429,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2925 i32.const 1 call $~lib/builtins/abort @@ -37443,7 +37443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2927 i32.const 1 call $~lib/builtins/abort @@ -37457,7 +37457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2928 i32.const 1 call $~lib/builtins/abort @@ -37471,7 +37471,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2929 i32.const 1 call $~lib/builtins/abort @@ -37485,7 +37485,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2930 i32.const 1 call $~lib/builtins/abort @@ -37499,7 +37499,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2931 i32.const 1 call $~lib/builtins/abort @@ -37513,7 +37513,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2932 i32.const 1 call $~lib/builtins/abort @@ -37527,7 +37527,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2933 i32.const 1 call $~lib/builtins/abort @@ -37541,7 +37541,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2934 i32.const 1 call $~lib/builtins/abort @@ -37555,7 +37555,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2936 i32.const 1 call $~lib/builtins/abort @@ -37569,7 +37569,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2937 i32.const 1 call $~lib/builtins/abort @@ -37583,7 +37583,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2938 i32.const 1 call $~lib/builtins/abort @@ -37597,7 +37597,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2940 i32.const 1 call $~lib/builtins/abort @@ -37611,7 +37611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2941 i32.const 1 call $~lib/builtins/abort @@ -37625,7 +37625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2943 i32.const 1 call $~lib/builtins/abort @@ -37639,7 +37639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2944 i32.const 1 call $~lib/builtins/abort @@ -37653,7 +37653,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2945 i32.const 1 call $~lib/builtins/abort @@ -37667,7 +37667,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2946 i32.const 1 call $~lib/builtins/abort @@ -37681,7 +37681,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2947 i32.const 1 call $~lib/builtins/abort @@ -37695,7 +37695,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2948 i32.const 1 call $~lib/builtins/abort @@ -37709,7 +37709,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2949 i32.const 1 call $~lib/builtins/abort @@ -37723,7 +37723,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2950 i32.const 1 call $~lib/builtins/abort @@ -37737,7 +37737,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2951 i32.const 1 call $~lib/builtins/abort @@ -37751,7 +37751,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2952 i32.const 1 call $~lib/builtins/abort @@ -37765,7 +37765,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2953 i32.const 1 call $~lib/builtins/abort @@ -37779,7 +37779,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2954 i32.const 1 call $~lib/builtins/abort @@ -37793,7 +37793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2955 i32.const 1 call $~lib/builtins/abort @@ -37807,7 +37807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2956 i32.const 1 call $~lib/builtins/abort @@ -37821,7 +37821,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2957 i32.const 1 call $~lib/builtins/abort @@ -37835,7 +37835,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2958 i32.const 1 call $~lib/builtins/abort @@ -37849,7 +37849,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2959 i32.const 1 call $~lib/builtins/abort @@ -37863,7 +37863,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2960 i32.const 1 call $~lib/builtins/abort @@ -37877,7 +37877,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2961 i32.const 1 call $~lib/builtins/abort @@ -37891,7 +37891,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2962 i32.const 1 call $~lib/builtins/abort @@ -37905,7 +37905,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2964 i32.const 1 call $~lib/builtins/abort @@ -37919,7 +37919,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2965 i32.const 1 call $~lib/builtins/abort @@ -37933,7 +37933,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2966 i32.const 1 call $~lib/builtins/abort @@ -37947,7 +37947,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2967 i32.const 1 call $~lib/builtins/abort @@ -37961,7 +37961,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2968 i32.const 1 call $~lib/builtins/abort @@ -37975,7 +37975,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2969 i32.const 1 call $~lib/builtins/abort @@ -37989,7 +37989,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2970 i32.const 1 call $~lib/builtins/abort @@ -38003,7 +38003,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2972 i32.const 1 call $~lib/builtins/abort @@ -38017,7 +38017,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2973 i32.const 1 call $~lib/builtins/abort @@ -38031,7 +38031,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2975 i32.const 1 call $~lib/builtins/abort @@ -38045,7 +38045,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2976 i32.const 1 call $~lib/builtins/abort @@ -38059,7 +38059,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2977 i32.const 1 call $~lib/builtins/abort @@ -38073,7 +38073,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2978 i32.const 1 call $~lib/builtins/abort @@ -38087,7 +38087,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2979 i32.const 1 call $~lib/builtins/abort @@ -38101,7 +38101,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2980 i32.const 1 call $~lib/builtins/abort @@ -38115,7 +38115,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2981 i32.const 1 call $~lib/builtins/abort @@ -38129,7 +38129,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2982 i32.const 1 call $~lib/builtins/abort @@ -38143,7 +38143,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2983 i32.const 1 call $~lib/builtins/abort @@ -38157,7 +38157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2984 i32.const 1 call $~lib/builtins/abort @@ -38171,7 +38171,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2985 i32.const 1 call $~lib/builtins/abort @@ -38185,7 +38185,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2987 i32.const 1 call $~lib/builtins/abort @@ -38199,7 +38199,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2988 i32.const 1 call $~lib/builtins/abort @@ -38213,7 +38213,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2989 i32.const 1 call $~lib/builtins/abort @@ -38227,7 +38227,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2990 i32.const 1 call $~lib/builtins/abort @@ -38290,7 +38290,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 2999 i32.const 3 call $~lib/builtins/abort @@ -38364,7 +38364,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3007 i32.const 3 call $~lib/builtins/abort @@ -38383,7 +38383,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3021 i32.const 1 call $~lib/builtins/abort @@ -38395,7 +38395,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3022 i32.const 1 call $~lib/builtins/abort @@ -38407,7 +38407,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3023 i32.const 1 call $~lib/builtins/abort @@ -38419,7 +38419,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3024 i32.const 1 call $~lib/builtins/abort @@ -38431,7 +38431,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3025 i32.const 1 call $~lib/builtins/abort @@ -38443,7 +38443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3026 i32.const 1 call $~lib/builtins/abort @@ -38455,7 +38455,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3027 i32.const 1 call $~lib/builtins/abort @@ -38467,7 +38467,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3028 i32.const 1 call $~lib/builtins/abort @@ -38479,7 +38479,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3029 i32.const 1 call $~lib/builtins/abort @@ -38491,7 +38491,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3030 i32.const 1 call $~lib/builtins/abort @@ -38503,7 +38503,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3033 i32.const 1 call $~lib/builtins/abort @@ -38515,7 +38515,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3034 i32.const 1 call $~lib/builtins/abort @@ -38527,7 +38527,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3035 i32.const 1 call $~lib/builtins/abort @@ -38539,7 +38539,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3036 i32.const 1 call $~lib/builtins/abort @@ -38551,7 +38551,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3037 i32.const 1 call $~lib/builtins/abort @@ -38563,7 +38563,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3038 i32.const 1 call $~lib/builtins/abort @@ -38575,7 +38575,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3039 i32.const 1 call $~lib/builtins/abort @@ -38587,7 +38587,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3040 i32.const 1 call $~lib/builtins/abort @@ -38599,7 +38599,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3041 i32.const 1 call $~lib/builtins/abort @@ -38611,7 +38611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3042 i32.const 1 call $~lib/builtins/abort @@ -38623,7 +38623,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3043 i32.const 1 call $~lib/builtins/abort @@ -38635,7 +38635,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3044 i32.const 1 call $~lib/builtins/abort @@ -38647,7 +38647,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3045 i32.const 1 call $~lib/builtins/abort @@ -38659,7 +38659,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3046 i32.const 1 call $~lib/builtins/abort @@ -38671,7 +38671,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3047 i32.const 1 call $~lib/builtins/abort @@ -38683,7 +38683,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3048 i32.const 1 call $~lib/builtins/abort @@ -38695,7 +38695,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3049 i32.const 1 call $~lib/builtins/abort @@ -38707,7 +38707,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3058 i32.const 1 call $~lib/builtins/abort @@ -38719,7 +38719,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3059 i32.const 1 call $~lib/builtins/abort @@ -38731,7 +38731,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3060 i32.const 1 call $~lib/builtins/abort @@ -38743,7 +38743,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3061 i32.const 1 call $~lib/builtins/abort @@ -38755,7 +38755,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3062 i32.const 1 call $~lib/builtins/abort @@ -38767,7 +38767,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3063 i32.const 1 call $~lib/builtins/abort @@ -38779,7 +38779,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3064 i32.const 1 call $~lib/builtins/abort @@ -38791,7 +38791,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3065 i32.const 1 call $~lib/builtins/abort @@ -38803,7 +38803,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3066 i32.const 1 call $~lib/builtins/abort @@ -38815,7 +38815,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3067 i32.const 1 call $~lib/builtins/abort @@ -38827,7 +38827,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3070 i32.const 1 call $~lib/builtins/abort @@ -38839,7 +38839,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3071 i32.const 1 call $~lib/builtins/abort @@ -38851,7 +38851,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3072 i32.const 1 call $~lib/builtins/abort @@ -38863,7 +38863,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3073 i32.const 1 call $~lib/builtins/abort @@ -38875,7 +38875,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3074 i32.const 1 call $~lib/builtins/abort @@ -38887,7 +38887,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3075 i32.const 1 call $~lib/builtins/abort @@ -38899,7 +38899,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3076 i32.const 1 call $~lib/builtins/abort @@ -38911,7 +38911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3077 i32.const 1 call $~lib/builtins/abort @@ -38923,7 +38923,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3078 i32.const 1 call $~lib/builtins/abort @@ -38935,7 +38935,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3079 i32.const 1 call $~lib/builtins/abort @@ -38947,7 +38947,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3080 i32.const 1 call $~lib/builtins/abort @@ -38959,7 +38959,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3081 i32.const 1 call $~lib/builtins/abort @@ -38971,7 +38971,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3082 i32.const 1 call $~lib/builtins/abort @@ -38983,7 +38983,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3083 i32.const 1 call $~lib/builtins/abort @@ -38995,7 +38995,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3084 i32.const 1 call $~lib/builtins/abort @@ -39007,7 +39007,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3085 i32.const 1 call $~lib/builtins/abort @@ -39019,7 +39019,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3086 i32.const 1 call $~lib/builtins/abort @@ -39031,7 +39031,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3097 i32.const 1 call $~lib/builtins/abort @@ -39043,7 +39043,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3098 i32.const 1 call $~lib/builtins/abort @@ -39055,7 +39055,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3099 i32.const 1 call $~lib/builtins/abort @@ -39067,7 +39067,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3100 i32.const 1 call $~lib/builtins/abort @@ -39079,7 +39079,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3101 i32.const 1 call $~lib/builtins/abort @@ -39091,7 +39091,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3102 i32.const 1 call $~lib/builtins/abort @@ -39103,7 +39103,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3103 i32.const 1 call $~lib/builtins/abort @@ -39115,7 +39115,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3104 i32.const 1 call $~lib/builtins/abort @@ -39127,7 +39127,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3105 i32.const 1 call $~lib/builtins/abort @@ -39139,7 +39139,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3113 i32.const 1 call $~lib/builtins/abort @@ -39151,7 +39151,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3114 i32.const 1 call $~lib/builtins/abort @@ -39163,7 +39163,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3115 i32.const 1 call $~lib/builtins/abort @@ -39175,7 +39175,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3116 i32.const 1 call $~lib/builtins/abort @@ -39187,7 +39187,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3117 i32.const 1 call $~lib/builtins/abort @@ -39199,7 +39199,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3118 i32.const 1 call $~lib/builtins/abort @@ -39211,7 +39211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3119 i32.const 1 call $~lib/builtins/abort @@ -39223,7 +39223,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3120 i32.const 1 call $~lib/builtins/abort @@ -39235,7 +39235,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3121 i32.const 1 call $~lib/builtins/abort @@ -39248,7 +39248,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3158 i32.const 1 call $~lib/builtins/abort @@ -39261,7 +39261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3159 i32.const 1 call $~lib/builtins/abort @@ -39274,7 +39274,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3160 i32.const 1 call $~lib/builtins/abort @@ -39287,7 +39287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3161 i32.const 1 call $~lib/builtins/abort @@ -39300,7 +39300,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3162 i32.const 1 call $~lib/builtins/abort @@ -39313,7 +39313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3163 i32.const 1 call $~lib/builtins/abort @@ -39326,7 +39326,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3164 i32.const 1 call $~lib/builtins/abort @@ -39339,7 +39339,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3165 i32.const 1 call $~lib/builtins/abort @@ -39352,7 +39352,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3166 i32.const 1 call $~lib/builtins/abort @@ -39365,7 +39365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3167 i32.const 1 call $~lib/builtins/abort @@ -39378,7 +39378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3170 i32.const 1 call $~lib/builtins/abort @@ -39391,7 +39391,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3171 i32.const 1 call $~lib/builtins/abort @@ -39404,7 +39404,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3172 i32.const 1 call $~lib/builtins/abort @@ -39417,7 +39417,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3173 i32.const 1 call $~lib/builtins/abort @@ -39430,7 +39430,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3174 i32.const 1 call $~lib/builtins/abort @@ -39443,7 +39443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3175 i32.const 1 call $~lib/builtins/abort @@ -39456,7 +39456,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3176 i32.const 1 call $~lib/builtins/abort @@ -39469,7 +39469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3177 i32.const 1 call $~lib/builtins/abort @@ -39482,7 +39482,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3178 i32.const 1 call $~lib/builtins/abort @@ -39495,7 +39495,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3179 i32.const 1 call $~lib/builtins/abort @@ -39508,7 +39508,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3180 i32.const 1 call $~lib/builtins/abort @@ -39521,7 +39521,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3181 i32.const 1 call $~lib/builtins/abort @@ -39534,7 +39534,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3182 i32.const 1 call $~lib/builtins/abort @@ -39547,7 +39547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3183 i32.const 1 call $~lib/builtins/abort @@ -39560,7 +39560,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3184 i32.const 1 call $~lib/builtins/abort @@ -39573,7 +39573,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3185 i32.const 1 call $~lib/builtins/abort @@ -39586,7 +39586,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3186 i32.const 1 call $~lib/builtins/abort @@ -39599,7 +39599,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3187 i32.const 1 call $~lib/builtins/abort @@ -39612,7 +39612,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3188 i32.const 1 call $~lib/builtins/abort @@ -39625,7 +39625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3189 i32.const 1 call $~lib/builtins/abort @@ -39638,7 +39638,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3190 i32.const 1 call $~lib/builtins/abort @@ -39651,7 +39651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3191 i32.const 1 call $~lib/builtins/abort @@ -39664,7 +39664,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3192 i32.const 1 call $~lib/builtins/abort @@ -39677,7 +39677,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3193 i32.const 1 call $~lib/builtins/abort @@ -39690,7 +39690,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3194 i32.const 1 call $~lib/builtins/abort @@ -39703,7 +39703,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3195 i32.const 1 call $~lib/builtins/abort @@ -39716,7 +39716,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3196 i32.const 1 call $~lib/builtins/abort @@ -39729,7 +39729,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3197 i32.const 1 call $~lib/builtins/abort @@ -39742,7 +39742,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3198 i32.const 1 call $~lib/builtins/abort @@ -39755,7 +39755,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3199 i32.const 1 call $~lib/builtins/abort @@ -39768,7 +39768,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3200 i32.const 1 call $~lib/builtins/abort @@ -39781,7 +39781,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3201 i32.const 1 call $~lib/builtins/abort @@ -39794,7 +39794,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3202 i32.const 1 call $~lib/builtins/abort @@ -39807,7 +39807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3203 i32.const 1 call $~lib/builtins/abort @@ -39820,7 +39820,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3204 i32.const 1 call $~lib/builtins/abort @@ -39833,7 +39833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3205 i32.const 1 call $~lib/builtins/abort @@ -39846,7 +39846,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3206 i32.const 1 call $~lib/builtins/abort @@ -39859,7 +39859,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3207 i32.const 1 call $~lib/builtins/abort @@ -39872,7 +39872,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3208 i32.const 1 call $~lib/builtins/abort @@ -39885,7 +39885,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3209 i32.const 1 call $~lib/builtins/abort @@ -39898,7 +39898,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3210 i32.const 1 call $~lib/builtins/abort @@ -39911,7 +39911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3211 i32.const 1 call $~lib/builtins/abort @@ -39924,7 +39924,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3212 i32.const 1 call $~lib/builtins/abort @@ -39937,7 +39937,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3213 i32.const 1 call $~lib/builtins/abort @@ -39950,7 +39950,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3214 i32.const 1 call $~lib/builtins/abort @@ -39963,7 +39963,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3215 i32.const 1 call $~lib/builtins/abort @@ -39976,7 +39976,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3216 i32.const 1 call $~lib/builtins/abort @@ -39989,7 +39989,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3217 i32.const 1 call $~lib/builtins/abort @@ -40002,7 +40002,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3218 i32.const 1 call $~lib/builtins/abort @@ -40015,7 +40015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3219 i32.const 1 call $~lib/builtins/abort @@ -40028,7 +40028,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3220 i32.const 1 call $~lib/builtins/abort @@ -40041,7 +40041,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3221 i32.const 1 call $~lib/builtins/abort @@ -40054,7 +40054,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3222 i32.const 1 call $~lib/builtins/abort @@ -40067,7 +40067,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3223 i32.const 1 call $~lib/builtins/abort @@ -40080,7 +40080,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3224 i32.const 1 call $~lib/builtins/abort @@ -40093,7 +40093,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3225 i32.const 1 call $~lib/builtins/abort @@ -40106,7 +40106,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3226 i32.const 1 call $~lib/builtins/abort @@ -40119,7 +40119,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3227 i32.const 1 call $~lib/builtins/abort @@ -40132,7 +40132,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3228 i32.const 1 call $~lib/builtins/abort @@ -40145,7 +40145,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3229 i32.const 1 call $~lib/builtins/abort @@ -40158,7 +40158,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3230 i32.const 1 call $~lib/builtins/abort @@ -40171,7 +40171,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3231 i32.const 1 call $~lib/builtins/abort @@ -40184,7 +40184,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3232 i32.const 1 call $~lib/builtins/abort @@ -40197,7 +40197,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3233 i32.const 1 call $~lib/builtins/abort @@ -40210,7 +40210,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3234 i32.const 1 call $~lib/builtins/abort @@ -40223,7 +40223,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3235 i32.const 1 call $~lib/builtins/abort @@ -40236,7 +40236,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3236 i32.const 1 call $~lib/builtins/abort @@ -40249,7 +40249,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3245 i32.const 1 call $~lib/builtins/abort @@ -40262,7 +40262,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3246 i32.const 1 call $~lib/builtins/abort @@ -40275,7 +40275,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3247 i32.const 1 call $~lib/builtins/abort @@ -40288,7 +40288,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3248 i32.const 1 call $~lib/builtins/abort @@ -40301,7 +40301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3249 i32.const 1 call $~lib/builtins/abort @@ -40314,7 +40314,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3250 i32.const 1 call $~lib/builtins/abort @@ -40327,7 +40327,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3251 i32.const 1 call $~lib/builtins/abort @@ -40340,7 +40340,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3252 i32.const 1 call $~lib/builtins/abort @@ -40353,7 +40353,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3253 i32.const 1 call $~lib/builtins/abort @@ -40366,7 +40366,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3254 i32.const 1 call $~lib/builtins/abort @@ -40379,7 +40379,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3257 i32.const 1 call $~lib/builtins/abort @@ -40392,7 +40392,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3258 i32.const 1 call $~lib/builtins/abort @@ -40405,7 +40405,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3259 i32.const 1 call $~lib/builtins/abort @@ -40418,7 +40418,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3260 i32.const 1 call $~lib/builtins/abort @@ -40431,7 +40431,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3261 i32.const 1 call $~lib/builtins/abort @@ -40444,7 +40444,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3262 i32.const 1 call $~lib/builtins/abort @@ -40457,7 +40457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3263 i32.const 1 call $~lib/builtins/abort @@ -40470,7 +40470,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3264 i32.const 1 call $~lib/builtins/abort @@ -40483,7 +40483,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3265 i32.const 1 call $~lib/builtins/abort @@ -40496,7 +40496,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3266 i32.const 1 call $~lib/builtins/abort @@ -40509,7 +40509,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3267 i32.const 1 call $~lib/builtins/abort @@ -40522,7 +40522,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3268 i32.const 1 call $~lib/builtins/abort @@ -40535,7 +40535,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3269 i32.const 1 call $~lib/builtins/abort @@ -40548,7 +40548,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3270 i32.const 1 call $~lib/builtins/abort @@ -40561,7 +40561,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3271 i32.const 1 call $~lib/builtins/abort @@ -40574,7 +40574,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3272 i32.const 1 call $~lib/builtins/abort @@ -40587,7 +40587,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3273 i32.const 1 call $~lib/builtins/abort @@ -40600,7 +40600,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3274 i32.const 1 call $~lib/builtins/abort @@ -40613,7 +40613,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3275 i32.const 1 call $~lib/builtins/abort @@ -40626,7 +40626,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3276 i32.const 1 call $~lib/builtins/abort @@ -40639,7 +40639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3277 i32.const 1 call $~lib/builtins/abort @@ -40652,7 +40652,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3278 i32.const 1 call $~lib/builtins/abort @@ -40665,7 +40665,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3279 i32.const 1 call $~lib/builtins/abort @@ -40678,7 +40678,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3280 i32.const 1 call $~lib/builtins/abort @@ -40691,7 +40691,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3281 i32.const 1 call $~lib/builtins/abort @@ -40704,7 +40704,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3282 i32.const 1 call $~lib/builtins/abort @@ -40717,7 +40717,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3283 i32.const 1 call $~lib/builtins/abort @@ -40730,7 +40730,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3284 i32.const 1 call $~lib/builtins/abort @@ -40743,7 +40743,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3285 i32.const 1 call $~lib/builtins/abort @@ -40756,7 +40756,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3286 i32.const 1 call $~lib/builtins/abort @@ -40769,7 +40769,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3287 i32.const 1 call $~lib/builtins/abort @@ -40782,7 +40782,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3288 i32.const 1 call $~lib/builtins/abort @@ -40795,7 +40795,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3289 i32.const 1 call $~lib/builtins/abort @@ -40808,7 +40808,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3290 i32.const 1 call $~lib/builtins/abort @@ -40821,7 +40821,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3291 i32.const 1 call $~lib/builtins/abort @@ -40834,7 +40834,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3292 i32.const 1 call $~lib/builtins/abort @@ -40847,7 +40847,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3293 i32.const 1 call $~lib/builtins/abort @@ -40860,7 +40860,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3294 i32.const 1 call $~lib/builtins/abort @@ -40873,7 +40873,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3295 i32.const 1 call $~lib/builtins/abort @@ -40886,7 +40886,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3296 i32.const 1 call $~lib/builtins/abort @@ -40899,7 +40899,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3297 i32.const 1 call $~lib/builtins/abort @@ -40912,7 +40912,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3298 i32.const 1 call $~lib/builtins/abort @@ -40925,7 +40925,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3299 i32.const 1 call $~lib/builtins/abort @@ -40938,7 +40938,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3300 i32.const 1 call $~lib/builtins/abort @@ -40951,7 +40951,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3301 i32.const 1 call $~lib/builtins/abort @@ -40964,7 +40964,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3302 i32.const 1 call $~lib/builtins/abort @@ -40977,7 +40977,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3303 i32.const 1 call $~lib/builtins/abort @@ -40990,7 +40990,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3304 i32.const 1 call $~lib/builtins/abort @@ -41003,7 +41003,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3305 i32.const 1 call $~lib/builtins/abort @@ -41016,7 +41016,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3306 i32.const 1 call $~lib/builtins/abort @@ -41029,7 +41029,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3307 i32.const 1 call $~lib/builtins/abort @@ -41042,7 +41042,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3308 i32.const 1 call $~lib/builtins/abort @@ -41055,7 +41055,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3309 i32.const 1 call $~lib/builtins/abort @@ -41068,7 +41068,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3310 i32.const 1 call $~lib/builtins/abort @@ -41081,7 +41081,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3311 i32.const 1 call $~lib/builtins/abort @@ -41094,7 +41094,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3312 i32.const 1 call $~lib/builtins/abort @@ -41107,7 +41107,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3313 i32.const 1 call $~lib/builtins/abort @@ -41120,7 +41120,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3314 i32.const 1 call $~lib/builtins/abort @@ -41133,7 +41133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3315 i32.const 1 call $~lib/builtins/abort @@ -41146,7 +41146,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3316 i32.const 1 call $~lib/builtins/abort @@ -41159,7 +41159,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3317 i32.const 1 call $~lib/builtins/abort @@ -41172,7 +41172,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3318 i32.const 1 call $~lib/builtins/abort @@ -41185,7 +41185,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3319 i32.const 1 call $~lib/builtins/abort @@ -41198,7 +41198,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3320 i32.const 1 call $~lib/builtins/abort @@ -41211,7 +41211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3321 i32.const 1 call $~lib/builtins/abort @@ -41224,7 +41224,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3322 i32.const 1 call $~lib/builtins/abort @@ -41237,7 +41237,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3323 i32.const 1 call $~lib/builtins/abort @@ -41250,7 +41250,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3335 i32.const 1 call $~lib/builtins/abort @@ -41263,7 +41263,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3336 i32.const 1 call $~lib/builtins/abort @@ -41276,7 +41276,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3337 i32.const 1 call $~lib/builtins/abort @@ -41289,7 +41289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3338 i32.const 1 call $~lib/builtins/abort @@ -41302,7 +41302,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3339 i32.const 1 call $~lib/builtins/abort @@ -41315,7 +41315,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3340 i32.const 1 call $~lib/builtins/abort @@ -41328,7 +41328,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3341 i32.const 1 call $~lib/builtins/abort @@ -41341,7 +41341,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3342 i32.const 1 call $~lib/builtins/abort @@ -41354,7 +41354,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3343 i32.const 1 call $~lib/builtins/abort @@ -41367,7 +41367,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3344 i32.const 1 call $~lib/builtins/abort @@ -41380,7 +41380,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3347 i32.const 1 call $~lib/builtins/abort @@ -41393,7 +41393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3348 i32.const 1 call $~lib/builtins/abort @@ -41406,7 +41406,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3349 i32.const 1 call $~lib/builtins/abort @@ -41419,7 +41419,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3350 i32.const 1 call $~lib/builtins/abort @@ -41432,7 +41432,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3351 i32.const 1 call $~lib/builtins/abort @@ -41445,7 +41445,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3352 i32.const 1 call $~lib/builtins/abort @@ -41458,7 +41458,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3353 i32.const 1 call $~lib/builtins/abort @@ -41471,7 +41471,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3354 i32.const 1 call $~lib/builtins/abort @@ -41484,7 +41484,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3355 i32.const 1 call $~lib/builtins/abort @@ -41497,7 +41497,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3356 i32.const 1 call $~lib/builtins/abort @@ -41510,7 +41510,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3357 i32.const 1 call $~lib/builtins/abort @@ -41523,7 +41523,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3358 i32.const 1 call $~lib/builtins/abort @@ -41536,7 +41536,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3359 i32.const 1 call $~lib/builtins/abort @@ -41549,7 +41549,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3360 i32.const 1 call $~lib/builtins/abort @@ -41562,7 +41562,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3361 i32.const 1 call $~lib/builtins/abort @@ -41575,7 +41575,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3362 i32.const 1 call $~lib/builtins/abort @@ -41588,7 +41588,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3363 i32.const 1 call $~lib/builtins/abort @@ -41601,7 +41601,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3364 i32.const 1 call $~lib/builtins/abort @@ -41614,7 +41614,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3365 i32.const 1 call $~lib/builtins/abort @@ -41627,7 +41627,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3366 i32.const 1 call $~lib/builtins/abort @@ -41640,7 +41640,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3367 i32.const 1 call $~lib/builtins/abort @@ -41653,7 +41653,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3368 i32.const 1 call $~lib/builtins/abort @@ -41666,7 +41666,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3369 i32.const 1 call $~lib/builtins/abort @@ -41679,7 +41679,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3370 i32.const 1 call $~lib/builtins/abort @@ -41692,7 +41692,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3371 i32.const 1 call $~lib/builtins/abort @@ -41705,7 +41705,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3372 i32.const 1 call $~lib/builtins/abort @@ -41718,7 +41718,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3373 i32.const 1 call $~lib/builtins/abort @@ -41731,7 +41731,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3374 i32.const 1 call $~lib/builtins/abort @@ -41744,7 +41744,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3375 i32.const 1 call $~lib/builtins/abort @@ -41757,7 +41757,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3376 i32.const 1 call $~lib/builtins/abort @@ -41770,7 +41770,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3377 i32.const 1 call $~lib/builtins/abort @@ -41783,7 +41783,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3378 i32.const 1 call $~lib/builtins/abort @@ -41796,7 +41796,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3379 i32.const 1 call $~lib/builtins/abort @@ -41809,7 +41809,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3380 i32.const 1 call $~lib/builtins/abort @@ -41822,7 +41822,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3381 i32.const 1 call $~lib/builtins/abort @@ -41835,7 +41835,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3382 i32.const 1 call $~lib/builtins/abort @@ -41848,7 +41848,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3383 i32.const 1 call $~lib/builtins/abort @@ -41861,7 +41861,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3386 i32.const 1 call $~lib/builtins/abort @@ -41874,7 +41874,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3387 i32.const 1 call $~lib/builtins/abort @@ -41887,7 +41887,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3388 i32.const 1 call $~lib/builtins/abort @@ -41900,7 +41900,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3389 i32.const 1 call $~lib/builtins/abort @@ -41913,7 +41913,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3390 i32.const 1 call $~lib/builtins/abort @@ -41926,7 +41926,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3393 i32.const 1 call $~lib/builtins/abort @@ -41939,7 +41939,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3394 i32.const 1 call $~lib/builtins/abort @@ -41951,7 +41951,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3397 i32.const 1 call $~lib/builtins/abort @@ -41963,7 +41963,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3398 i32.const 1 call $~lib/builtins/abort @@ -41975,7 +41975,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3400 i32.const 1 call $~lib/builtins/abort @@ -41987,7 +41987,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3401 i32.const 1 call $~lib/builtins/abort @@ -41999,7 +41999,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3404 i32.const 1 call $~lib/builtins/abort @@ -42011,7 +42011,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3405 i32.const 1 call $~lib/builtins/abort @@ -42023,7 +42023,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3406 i32.const 1 call $~lib/builtins/abort @@ -42035,7 +42035,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3407 i32.const 1 call $~lib/builtins/abort @@ -42047,7 +42047,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3409 i32.const 1 call $~lib/builtins/abort @@ -42059,7 +42059,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3410 i32.const 1 call $~lib/builtins/abort @@ -42071,7 +42071,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3412 i32.const 1 call $~lib/builtins/abort @@ -42083,7 +42083,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3413 i32.const 1 call $~lib/builtins/abort @@ -42095,7 +42095,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3414 i32.const 1 call $~lib/builtins/abort @@ -42107,7 +42107,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3415 i32.const 1 call $~lib/builtins/abort @@ -42119,7 +42119,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3416 i32.const 1 call $~lib/builtins/abort @@ -42131,7 +42131,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3419 i32.const 1 call $~lib/builtins/abort @@ -42143,7 +42143,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3420 i32.const 1 call $~lib/builtins/abort @@ -42156,7 +42156,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3429 i32.const 1 call $~lib/builtins/abort @@ -42169,7 +42169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3430 i32.const 1 call $~lib/builtins/abort @@ -42182,7 +42182,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3431 i32.const 1 call $~lib/builtins/abort @@ -42195,7 +42195,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3432 i32.const 1 call $~lib/builtins/abort @@ -42208,7 +42208,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3433 i32.const 1 call $~lib/builtins/abort @@ -42221,7 +42221,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3434 i32.const 1 call $~lib/builtins/abort @@ -42234,7 +42234,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3435 i32.const 1 call $~lib/builtins/abort @@ -42247,7 +42247,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3436 i32.const 1 call $~lib/builtins/abort @@ -42260,7 +42260,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3437 i32.const 1 call $~lib/builtins/abort @@ -42273,7 +42273,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3438 i32.const 1 call $~lib/builtins/abort @@ -42286,7 +42286,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3441 i32.const 1 call $~lib/builtins/abort @@ -42299,7 +42299,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3442 i32.const 1 call $~lib/builtins/abort @@ -42312,7 +42312,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3443 i32.const 1 call $~lib/builtins/abort @@ -42325,7 +42325,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3444 i32.const 1 call $~lib/builtins/abort @@ -42338,7 +42338,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3445 i32.const 1 call $~lib/builtins/abort @@ -42351,7 +42351,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3448 i32.const 1 call $~lib/builtins/abort @@ -42364,7 +42364,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3449 i32.const 1 call $~lib/builtins/abort @@ -42377,7 +42377,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3450 i32.const 1 call $~lib/builtins/abort @@ -42390,7 +42390,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3451 i32.const 1 call $~lib/builtins/abort @@ -42403,7 +42403,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3452 i32.const 1 call $~lib/builtins/abort @@ -42416,7 +42416,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3453 i32.const 1 call $~lib/builtins/abort @@ -42429,7 +42429,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3454 i32.const 1 call $~lib/builtins/abort @@ -42442,7 +42442,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3455 i32.const 1 call $~lib/builtins/abort @@ -42455,7 +42455,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3456 i32.const 1 call $~lib/builtins/abort @@ -42468,7 +42468,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3457 i32.const 1 call $~lib/builtins/abort @@ -42481,7 +42481,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3458 i32.const 1 call $~lib/builtins/abort @@ -42494,7 +42494,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3459 i32.const 1 call $~lib/builtins/abort @@ -42507,7 +42507,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3460 i32.const 1 call $~lib/builtins/abort @@ -42520,7 +42520,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3461 i32.const 1 call $~lib/builtins/abort @@ -42533,7 +42533,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3462 i32.const 1 call $~lib/builtins/abort @@ -42546,7 +42546,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3463 i32.const 1 call $~lib/builtins/abort @@ -42559,7 +42559,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3464 i32.const 1 call $~lib/builtins/abort @@ -42572,7 +42572,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3465 i32.const 1 call $~lib/builtins/abort @@ -42585,7 +42585,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3466 i32.const 1 call $~lib/builtins/abort @@ -42598,7 +42598,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3467 i32.const 1 call $~lib/builtins/abort @@ -42611,7 +42611,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3468 i32.const 1 call $~lib/builtins/abort @@ -42624,7 +42624,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3469 i32.const 1 call $~lib/builtins/abort @@ -42637,7 +42637,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3470 i32.const 1 call $~lib/builtins/abort @@ -42650,7 +42650,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3471 i32.const 1 call $~lib/builtins/abort @@ -42663,7 +42663,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3472 i32.const 1 call $~lib/builtins/abort @@ -42676,7 +42676,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3473 i32.const 1 call $~lib/builtins/abort @@ -42689,7 +42689,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3474 i32.const 1 call $~lib/builtins/abort @@ -42702,7 +42702,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3475 i32.const 1 call $~lib/builtins/abort @@ -42715,7 +42715,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3476 i32.const 1 call $~lib/builtins/abort @@ -42728,7 +42728,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3477 i32.const 1 call $~lib/builtins/abort @@ -42741,7 +42741,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3478 i32.const 1 call $~lib/builtins/abort @@ -42754,7 +42754,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3479 i32.const 1 call $~lib/builtins/abort @@ -42767,7 +42767,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3480 i32.const 1 call $~lib/builtins/abort @@ -42780,7 +42780,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3481 i32.const 1 call $~lib/builtins/abort @@ -42793,7 +42793,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3482 i32.const 1 call $~lib/builtins/abort @@ -42806,7 +42806,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3483 i32.const 1 call $~lib/builtins/abort @@ -42819,7 +42819,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3484 i32.const 1 call $~lib/builtins/abort @@ -42832,7 +42832,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3485 i32.const 1 call $~lib/builtins/abort @@ -42845,7 +42845,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3488 i32.const 1 call $~lib/builtins/abort @@ -42858,7 +42858,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3489 i32.const 1 call $~lib/builtins/abort @@ -42871,7 +42871,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3490 i32.const 1 call $~lib/builtins/abort @@ -42884,7 +42884,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3491 i32.const 1 call $~lib/builtins/abort @@ -42897,7 +42897,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3492 i32.const 1 call $~lib/builtins/abort @@ -42910,7 +42910,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3493 i32.const 1 call $~lib/builtins/abort @@ -42923,7 +42923,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3494 i32.const 1 call $~lib/builtins/abort @@ -42936,7 +42936,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3495 i32.const 1 call $~lib/builtins/abort @@ -42949,7 +42949,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3496 i32.const 1 call $~lib/builtins/abort @@ -42962,7 +42962,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3497 i32.const 1 call $~lib/builtins/abort @@ -42975,7 +42975,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3498 i32.const 1 call $~lib/builtins/abort @@ -42988,7 +42988,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3499 i32.const 1 call $~lib/builtins/abort @@ -43001,7 +43001,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3500 i32.const 1 call $~lib/builtins/abort @@ -43014,7 +43014,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3501 i32.const 1 call $~lib/builtins/abort @@ -43027,7 +43027,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3513 i32.const 1 call $~lib/builtins/abort @@ -43040,7 +43040,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3514 i32.const 1 call $~lib/builtins/abort @@ -43053,7 +43053,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3515 i32.const 1 call $~lib/builtins/abort @@ -43066,7 +43066,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3516 i32.const 1 call $~lib/builtins/abort @@ -43079,7 +43079,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3517 i32.const 1 call $~lib/builtins/abort @@ -43092,7 +43092,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3518 i32.const 1 call $~lib/builtins/abort @@ -43105,7 +43105,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3519 i32.const 1 call $~lib/builtins/abort @@ -43118,7 +43118,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3520 i32.const 1 call $~lib/builtins/abort @@ -43131,7 +43131,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3521 i32.const 1 call $~lib/builtins/abort @@ -43144,7 +43144,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3522 i32.const 1 call $~lib/builtins/abort @@ -43157,7 +43157,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3525 i32.const 1 call $~lib/builtins/abort @@ -43170,7 +43170,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3526 i32.const 1 call $~lib/builtins/abort @@ -43183,7 +43183,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3527 i32.const 1 call $~lib/builtins/abort @@ -43196,7 +43196,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3528 i32.const 1 call $~lib/builtins/abort @@ -43209,7 +43209,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3529 i32.const 1 call $~lib/builtins/abort @@ -43222,7 +43222,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3538 i32.const 1 call $~lib/builtins/abort @@ -43235,7 +43235,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3539 i32.const 1 call $~lib/builtins/abort @@ -43248,7 +43248,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3540 i32.const 1 call $~lib/builtins/abort @@ -43261,7 +43261,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3541 i32.const 1 call $~lib/builtins/abort @@ -43274,7 +43274,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3542 i32.const 1 call $~lib/builtins/abort @@ -43287,7 +43287,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3543 i32.const 1 call $~lib/builtins/abort @@ -43300,7 +43300,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3544 i32.const 1 call $~lib/builtins/abort @@ -43313,7 +43313,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3545 i32.const 1 call $~lib/builtins/abort @@ -43326,7 +43326,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3546 i32.const 1 call $~lib/builtins/abort @@ -43339,7 +43339,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3547 i32.const 1 call $~lib/builtins/abort @@ -43352,7 +43352,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3550 i32.const 1 call $~lib/builtins/abort @@ -43365,7 +43365,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3551 i32.const 1 call $~lib/builtins/abort @@ -43378,7 +43378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3552 i32.const 1 call $~lib/builtins/abort @@ -43391,7 +43391,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3553 i32.const 1 call $~lib/builtins/abort @@ -43404,7 +43404,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3554 i32.const 1 call $~lib/builtins/abort @@ -43417,7 +43417,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3566 i32.const 1 call $~lib/builtins/abort @@ -43430,7 +43430,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3567 i32.const 1 call $~lib/builtins/abort @@ -43443,7 +43443,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3568 i32.const 1 call $~lib/builtins/abort @@ -43456,7 +43456,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3569 i32.const 1 call $~lib/builtins/abort @@ -43469,7 +43469,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3570 i32.const 1 call $~lib/builtins/abort @@ -43482,7 +43482,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3571 i32.const 1 call $~lib/builtins/abort @@ -43495,7 +43495,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3572 i32.const 1 call $~lib/builtins/abort @@ -43508,7 +43508,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3573 i32.const 1 call $~lib/builtins/abort @@ -43521,7 +43521,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3574 i32.const 1 call $~lib/builtins/abort @@ -43534,7 +43534,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3575 i32.const 1 call $~lib/builtins/abort @@ -43547,7 +43547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3578 i32.const 1 call $~lib/builtins/abort @@ -43560,7 +43560,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3579 i32.const 1 call $~lib/builtins/abort @@ -43573,7 +43573,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3580 i32.const 1 call $~lib/builtins/abort @@ -43586,7 +43586,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3581 i32.const 1 call $~lib/builtins/abort @@ -43599,7 +43599,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3582 i32.const 1 call $~lib/builtins/abort @@ -43612,7 +43612,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3583 i32.const 1 call $~lib/builtins/abort @@ -43625,7 +43625,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3584 i32.const 1 call $~lib/builtins/abort @@ -43638,7 +43638,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3585 i32.const 1 call $~lib/builtins/abort @@ -43651,7 +43651,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3586 i32.const 1 call $~lib/builtins/abort @@ -43664,7 +43664,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3587 i32.const 1 call $~lib/builtins/abort @@ -43677,7 +43677,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3588 i32.const 1 call $~lib/builtins/abort @@ -43690,7 +43690,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3589 i32.const 1 call $~lib/builtins/abort @@ -43703,7 +43703,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3590 i32.const 1 call $~lib/builtins/abort @@ -43716,7 +43716,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3591 i32.const 1 call $~lib/builtins/abort @@ -43729,7 +43729,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3592 i32.const 1 call $~lib/builtins/abort @@ -43742,7 +43742,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3593 i32.const 1 call $~lib/builtins/abort @@ -43755,7 +43755,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3594 i32.const 1 call $~lib/builtins/abort @@ -43768,7 +43768,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3595 i32.const 1 call $~lib/builtins/abort @@ -43781,7 +43781,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3596 i32.const 1 call $~lib/builtins/abort @@ -43794,7 +43794,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3597 i32.const 1 call $~lib/builtins/abort @@ -43807,7 +43807,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3598 i32.const 1 call $~lib/builtins/abort @@ -43820,7 +43820,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3599 i32.const 1 call $~lib/builtins/abort @@ -43833,7 +43833,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3600 i32.const 1 call $~lib/builtins/abort @@ -43846,7 +43846,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3601 i32.const 1 call $~lib/builtins/abort @@ -43859,7 +43859,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3602 i32.const 1 call $~lib/builtins/abort @@ -43872,7 +43872,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3603 i32.const 1 call $~lib/builtins/abort @@ -43885,7 +43885,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3604 i32.const 1 call $~lib/builtins/abort @@ -43898,7 +43898,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3605 i32.const 1 call $~lib/builtins/abort @@ -43911,7 +43911,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3606 i32.const 1 call $~lib/builtins/abort @@ -43924,7 +43924,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3607 i32.const 1 call $~lib/builtins/abort @@ -43937,7 +43937,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3608 i32.const 1 call $~lib/builtins/abort @@ -43950,7 +43950,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3609 i32.const 1 call $~lib/builtins/abort @@ -43963,7 +43963,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3610 i32.const 1 call $~lib/builtins/abort @@ -43976,7 +43976,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3611 i32.const 1 call $~lib/builtins/abort @@ -43989,7 +43989,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3612 i32.const 1 call $~lib/builtins/abort @@ -44002,7 +44002,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3613 i32.const 1 call $~lib/builtins/abort @@ -44015,7 +44015,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3614 i32.const 1 call $~lib/builtins/abort @@ -44028,7 +44028,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3615 i32.const 1 call $~lib/builtins/abort @@ -44041,7 +44041,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3616 i32.const 1 call $~lib/builtins/abort @@ -44054,7 +44054,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3617 i32.const 1 call $~lib/builtins/abort @@ -44067,7 +44067,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3618 i32.const 1 call $~lib/builtins/abort @@ -44080,7 +44080,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3619 i32.const 1 call $~lib/builtins/abort @@ -44093,7 +44093,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3620 i32.const 1 call $~lib/builtins/abort @@ -44106,7 +44106,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3621 i32.const 1 call $~lib/builtins/abort @@ -44119,7 +44119,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3622 i32.const 1 call $~lib/builtins/abort @@ -44132,7 +44132,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3623 i32.const 1 call $~lib/builtins/abort @@ -44145,7 +44145,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3624 i32.const 1 call $~lib/builtins/abort @@ -44158,7 +44158,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3625 i32.const 1 call $~lib/builtins/abort @@ -44171,7 +44171,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3626 i32.const 1 call $~lib/builtins/abort @@ -44184,7 +44184,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3627 i32.const 1 call $~lib/builtins/abort @@ -44197,7 +44197,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3628 i32.const 1 call $~lib/builtins/abort @@ -44210,7 +44210,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3629 i32.const 1 call $~lib/builtins/abort @@ -44223,7 +44223,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3630 i32.const 1 call $~lib/builtins/abort @@ -44236,7 +44236,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3631 i32.const 1 call $~lib/builtins/abort @@ -44249,7 +44249,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3632 i32.const 1 call $~lib/builtins/abort @@ -44262,7 +44262,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3633 i32.const 1 call $~lib/builtins/abort @@ -44275,7 +44275,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3634 i32.const 1 call $~lib/builtins/abort @@ -44288,7 +44288,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3635 i32.const 1 call $~lib/builtins/abort @@ -44301,7 +44301,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3636 i32.const 1 call $~lib/builtins/abort @@ -44314,7 +44314,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3637 i32.const 1 call $~lib/builtins/abort @@ -44327,7 +44327,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3638 i32.const 1 call $~lib/builtins/abort @@ -44340,7 +44340,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3639 i32.const 1 call $~lib/builtins/abort @@ -44353,7 +44353,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3640 i32.const 1 call $~lib/builtins/abort @@ -44366,7 +44366,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3641 i32.const 1 call $~lib/builtins/abort @@ -44379,7 +44379,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3642 i32.const 1 call $~lib/builtins/abort @@ -44392,7 +44392,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3643 i32.const 1 call $~lib/builtins/abort @@ -44405,7 +44405,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3644 i32.const 1 call $~lib/builtins/abort @@ -44418,7 +44418,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3645 i32.const 1 call $~lib/builtins/abort @@ -44431,7 +44431,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3646 i32.const 1 call $~lib/builtins/abort @@ -44444,7 +44444,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3647 i32.const 1 call $~lib/builtins/abort @@ -44457,7 +44457,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3648 i32.const 1 call $~lib/builtins/abort @@ -44470,7 +44470,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3649 i32.const 1 call $~lib/builtins/abort @@ -44483,7 +44483,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3650 i32.const 1 call $~lib/builtins/abort @@ -44496,7 +44496,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3651 i32.const 1 call $~lib/builtins/abort @@ -44509,7 +44509,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3660 i32.const 1 call $~lib/builtins/abort @@ -44522,7 +44522,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3661 i32.const 1 call $~lib/builtins/abort @@ -44535,7 +44535,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3662 i32.const 1 call $~lib/builtins/abort @@ -44548,7 +44548,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3663 i32.const 1 call $~lib/builtins/abort @@ -44561,7 +44561,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3664 i32.const 1 call $~lib/builtins/abort @@ -44574,7 +44574,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3665 i32.const 1 call $~lib/builtins/abort @@ -44587,7 +44587,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3666 i32.const 1 call $~lib/builtins/abort @@ -44600,7 +44600,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3667 i32.const 1 call $~lib/builtins/abort @@ -44613,7 +44613,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3668 i32.const 1 call $~lib/builtins/abort @@ -44626,7 +44626,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3669 i32.const 1 call $~lib/builtins/abort @@ -44639,7 +44639,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3672 i32.const 1 call $~lib/builtins/abort @@ -44652,7 +44652,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3673 i32.const 1 call $~lib/builtins/abort @@ -44665,7 +44665,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3674 i32.const 1 call $~lib/builtins/abort @@ -44678,7 +44678,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3675 i32.const 1 call $~lib/builtins/abort @@ -44691,7 +44691,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3676 i32.const 1 call $~lib/builtins/abort @@ -44704,7 +44704,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3677 i32.const 1 call $~lib/builtins/abort @@ -44717,7 +44717,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3678 i32.const 1 call $~lib/builtins/abort @@ -44730,7 +44730,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3679 i32.const 1 call $~lib/builtins/abort @@ -44743,7 +44743,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3680 i32.const 1 call $~lib/builtins/abort @@ -44756,7 +44756,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3681 i32.const 1 call $~lib/builtins/abort @@ -44769,7 +44769,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3682 i32.const 1 call $~lib/builtins/abort @@ -44782,7 +44782,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3683 i32.const 1 call $~lib/builtins/abort @@ -44795,7 +44795,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3684 i32.const 1 call $~lib/builtins/abort @@ -44808,7 +44808,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3685 i32.const 1 call $~lib/builtins/abort @@ -44821,7 +44821,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3686 i32.const 1 call $~lib/builtins/abort @@ -44834,7 +44834,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3687 i32.const 1 call $~lib/builtins/abort @@ -44847,7 +44847,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3688 i32.const 1 call $~lib/builtins/abort @@ -44860,7 +44860,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3689 i32.const 1 call $~lib/builtins/abort @@ -44873,7 +44873,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3690 i32.const 1 call $~lib/builtins/abort @@ -44886,7 +44886,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3691 i32.const 1 call $~lib/builtins/abort @@ -44899,7 +44899,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3692 i32.const 1 call $~lib/builtins/abort @@ -44912,7 +44912,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3693 i32.const 1 call $~lib/builtins/abort @@ -44925,7 +44925,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3705 i32.const 1 call $~lib/builtins/abort @@ -44938,7 +44938,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3706 i32.const 1 call $~lib/builtins/abort @@ -44951,7 +44951,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3707 i32.const 1 call $~lib/builtins/abort @@ -44964,7 +44964,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3708 i32.const 1 call $~lib/builtins/abort @@ -44977,7 +44977,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3709 i32.const 1 call $~lib/builtins/abort @@ -44990,7 +44990,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3710 i32.const 1 call $~lib/builtins/abort @@ -45003,7 +45003,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3711 i32.const 1 call $~lib/builtins/abort @@ -45016,7 +45016,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3712 i32.const 1 call $~lib/builtins/abort @@ -45029,7 +45029,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3713 i32.const 1 call $~lib/builtins/abort @@ -45042,7 +45042,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3714 i32.const 1 call $~lib/builtins/abort @@ -45055,7 +45055,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3717 i32.const 1 call $~lib/builtins/abort @@ -45068,7 +45068,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3718 i32.const 1 call $~lib/builtins/abort @@ -45081,7 +45081,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3719 i32.const 1 call $~lib/builtins/abort @@ -45094,7 +45094,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3720 i32.const 1 call $~lib/builtins/abort @@ -45107,7 +45107,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3721 i32.const 1 call $~lib/builtins/abort @@ -45120,7 +45120,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3722 i32.const 1 call $~lib/builtins/abort @@ -45133,7 +45133,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3723 i32.const 1 call $~lib/builtins/abort @@ -45146,7 +45146,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3724 i32.const 1 call $~lib/builtins/abort @@ -45159,7 +45159,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3725 i32.const 1 call $~lib/builtins/abort @@ -45172,7 +45172,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3726 i32.const 1 call $~lib/builtins/abort @@ -45185,7 +45185,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3727 i32.const 1 call $~lib/builtins/abort @@ -45198,7 +45198,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3728 i32.const 1 call $~lib/builtins/abort @@ -45211,7 +45211,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3729 i32.const 1 call $~lib/builtins/abort @@ -45224,7 +45224,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3730 i32.const 1 call $~lib/builtins/abort @@ -45237,7 +45237,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3731 i32.const 1 call $~lib/builtins/abort @@ -45250,7 +45250,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3732 i32.const 1 call $~lib/builtins/abort @@ -45263,7 +45263,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3733 i32.const 1 call $~lib/builtins/abort @@ -45276,7 +45276,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3734 i32.const 1 call $~lib/builtins/abort @@ -45289,7 +45289,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3735 i32.const 1 call $~lib/builtins/abort @@ -45302,7 +45302,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3736 i32.const 1 call $~lib/builtins/abort @@ -45315,7 +45315,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3737 i32.const 1 call $~lib/builtins/abort @@ -45328,7 +45328,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3738 i32.const 1 call $~lib/builtins/abort @@ -45341,7 +45341,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3739 i32.const 1 call $~lib/builtins/abort @@ -45354,7 +45354,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3740 i32.const 1 call $~lib/builtins/abort @@ -45367,7 +45367,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3741 i32.const 1 call $~lib/builtins/abort @@ -45380,7 +45380,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3742 i32.const 1 call $~lib/builtins/abort @@ -45393,7 +45393,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3743 i32.const 1 call $~lib/builtins/abort @@ -45406,7 +45406,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3744 i32.const 1 call $~lib/builtins/abort @@ -45419,7 +45419,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3745 i32.const 1 call $~lib/builtins/abort @@ -45432,7 +45432,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3746 i32.const 1 call $~lib/builtins/abort @@ -45445,7 +45445,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3747 i32.const 1 call $~lib/builtins/abort @@ -45458,7 +45458,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3748 i32.const 1 call $~lib/builtins/abort @@ -45471,7 +45471,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3749 i32.const 1 call $~lib/builtins/abort @@ -45484,7 +45484,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3750 i32.const 1 call $~lib/builtins/abort @@ -45497,7 +45497,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3751 i32.const 1 call $~lib/builtins/abort @@ -45510,7 +45510,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3752 i32.const 1 call $~lib/builtins/abort @@ -45523,7 +45523,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3753 i32.const 1 call $~lib/builtins/abort @@ -45536,7 +45536,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3754 i32.const 1 call $~lib/builtins/abort @@ -45549,7 +45549,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3757 i32.const 1 call $~lib/builtins/abort @@ -45562,7 +45562,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3758 i32.const 1 call $~lib/builtins/abort @@ -45575,7 +45575,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3759 i32.const 1 call $~lib/builtins/abort @@ -45588,7 +45588,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3760 i32.const 1 call $~lib/builtins/abort @@ -45601,7 +45601,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3761 i32.const 1 call $~lib/builtins/abort @@ -45614,7 +45614,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3762 i32.const 1 call $~lib/builtins/abort @@ -45627,7 +45627,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3763 i32.const 1 call $~lib/builtins/abort @@ -45640,7 +45640,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3764 i32.const 1 call $~lib/builtins/abort @@ -45653,7 +45653,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3766 i32.const 1 call $~lib/builtins/abort @@ -45666,7 +45666,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3767 i32.const 1 call $~lib/builtins/abort @@ -45679,7 +45679,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3768 i32.const 1 call $~lib/builtins/abort @@ -45692,7 +45692,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3769 i32.const 1 call $~lib/builtins/abort @@ -45705,7 +45705,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3770 i32.const 1 call $~lib/builtins/abort @@ -45718,7 +45718,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3771 i32.const 1 call $~lib/builtins/abort @@ -45731,7 +45731,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3772 i32.const 1 call $~lib/builtins/abort @@ -45744,7 +45744,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3773 i32.const 1 call $~lib/builtins/abort @@ -45757,7 +45757,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3776 i32.const 1 call $~lib/builtins/abort @@ -45770,7 +45770,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3777 i32.const 1 call $~lib/builtins/abort @@ -45783,7 +45783,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3778 i32.const 1 call $~lib/builtins/abort @@ -45796,7 +45796,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3779 i32.const 1 call $~lib/builtins/abort @@ -45809,7 +45809,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3780 i32.const 1 call $~lib/builtins/abort @@ -45822,7 +45822,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3789 i32.const 1 call $~lib/builtins/abort @@ -45835,7 +45835,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3790 i32.const 1 call $~lib/builtins/abort @@ -45848,7 +45848,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3791 i32.const 1 call $~lib/builtins/abort @@ -45861,7 +45861,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3792 i32.const 1 call $~lib/builtins/abort @@ -45874,7 +45874,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3793 i32.const 1 call $~lib/builtins/abort @@ -45887,7 +45887,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3794 i32.const 1 call $~lib/builtins/abort @@ -45900,7 +45900,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3795 i32.const 1 call $~lib/builtins/abort @@ -45913,7 +45913,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3796 i32.const 1 call $~lib/builtins/abort @@ -45926,7 +45926,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3797 i32.const 1 call $~lib/builtins/abort @@ -45939,7 +45939,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3798 i32.const 1 call $~lib/builtins/abort @@ -45952,7 +45952,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3801 i32.const 1 call $~lib/builtins/abort @@ -45965,7 +45965,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3802 i32.const 1 call $~lib/builtins/abort @@ -45978,7 +45978,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3803 i32.const 1 call $~lib/builtins/abort @@ -45991,7 +45991,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3804 i32.const 1 call $~lib/builtins/abort @@ -46004,7 +46004,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3805 i32.const 1 call $~lib/builtins/abort @@ -46017,7 +46017,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3808 i32.const 1 call $~lib/builtins/abort @@ -46030,7 +46030,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3809 i32.const 1 call $~lib/builtins/abort @@ -46043,7 +46043,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3810 i32.const 1 call $~lib/builtins/abort @@ -46056,7 +46056,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3811 i32.const 1 call $~lib/builtins/abort @@ -46069,7 +46069,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3812 i32.const 1 call $~lib/builtins/abort @@ -46082,7 +46082,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3813 i32.const 1 call $~lib/builtins/abort @@ -46095,7 +46095,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3814 i32.const 1 call $~lib/builtins/abort @@ -46108,7 +46108,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3815 i32.const 1 call $~lib/builtins/abort @@ -46121,7 +46121,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3816 i32.const 1 call $~lib/builtins/abort @@ -46134,7 +46134,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3817 i32.const 1 call $~lib/builtins/abort @@ -46147,7 +46147,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3818 i32.const 1 call $~lib/builtins/abort @@ -46160,7 +46160,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3819 i32.const 1 call $~lib/builtins/abort @@ -46173,7 +46173,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3820 i32.const 1 call $~lib/builtins/abort @@ -46186,7 +46186,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3821 i32.const 1 call $~lib/builtins/abort @@ -46199,7 +46199,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3822 i32.const 1 call $~lib/builtins/abort @@ -46212,7 +46212,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3823 i32.const 1 call $~lib/builtins/abort @@ -46225,7 +46225,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3824 i32.const 1 call $~lib/builtins/abort @@ -46238,7 +46238,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3825 i32.const 1 call $~lib/builtins/abort @@ -46251,7 +46251,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3826 i32.const 1 call $~lib/builtins/abort @@ -46264,7 +46264,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3827 i32.const 1 call $~lib/builtins/abort @@ -46277,7 +46277,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3828 i32.const 1 call $~lib/builtins/abort @@ -46290,7 +46290,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3829 i32.const 1 call $~lib/builtins/abort @@ -46303,7 +46303,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3830 i32.const 1 call $~lib/builtins/abort @@ -46316,7 +46316,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3831 i32.const 1 call $~lib/builtins/abort @@ -46329,7 +46329,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3832 i32.const 1 call $~lib/builtins/abort @@ -46342,7 +46342,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3833 i32.const 1 call $~lib/builtins/abort @@ -46355,7 +46355,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3834 i32.const 1 call $~lib/builtins/abort @@ -46368,7 +46368,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3835 i32.const 1 call $~lib/builtins/abort @@ -46381,7 +46381,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3836 i32.const 1 call $~lib/builtins/abort @@ -46394,7 +46394,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3837 i32.const 1 call $~lib/builtins/abort @@ -46407,7 +46407,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3838 i32.const 1 call $~lib/builtins/abort @@ -46420,7 +46420,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3839 i32.const 1 call $~lib/builtins/abort @@ -46433,7 +46433,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3840 i32.const 1 call $~lib/builtins/abort @@ -46446,7 +46446,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3841 i32.const 1 call $~lib/builtins/abort @@ -46459,7 +46459,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3842 i32.const 1 call $~lib/builtins/abort @@ -46472,7 +46472,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3843 i32.const 1 call $~lib/builtins/abort @@ -46485,7 +46485,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3855 i32.const 1 call $~lib/builtins/abort @@ -46498,7 +46498,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3856 i32.const 1 call $~lib/builtins/abort @@ -46511,7 +46511,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3857 i32.const 1 call $~lib/builtins/abort @@ -46524,7 +46524,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3858 i32.const 1 call $~lib/builtins/abort @@ -46537,7 +46537,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3859 i32.const 1 call $~lib/builtins/abort @@ -46550,7 +46550,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3860 i32.const 1 call $~lib/builtins/abort @@ -46563,7 +46563,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3861 i32.const 1 call $~lib/builtins/abort @@ -46576,7 +46576,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3862 i32.const 1 call $~lib/builtins/abort @@ -46589,7 +46589,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3863 i32.const 1 call $~lib/builtins/abort @@ -46602,7 +46602,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3864 i32.const 1 call $~lib/builtins/abort @@ -46615,7 +46615,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3867 i32.const 1 call $~lib/builtins/abort @@ -46628,7 +46628,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3868 i32.const 1 call $~lib/builtins/abort @@ -46641,7 +46641,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3869 i32.const 1 call $~lib/builtins/abort @@ -46654,7 +46654,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3870 i32.const 1 call $~lib/builtins/abort @@ -46667,7 +46667,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3871 i32.const 1 call $~lib/builtins/abort @@ -46680,7 +46680,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3880 i32.const 1 call $~lib/builtins/abort @@ -46693,7 +46693,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3881 i32.const 1 call $~lib/builtins/abort @@ -46706,7 +46706,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3882 i32.const 1 call $~lib/builtins/abort @@ -46719,7 +46719,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3883 i32.const 1 call $~lib/builtins/abort @@ -46732,7 +46732,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3884 i32.const 1 call $~lib/builtins/abort @@ -46745,7 +46745,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3885 i32.const 1 call $~lib/builtins/abort @@ -46758,7 +46758,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3886 i32.const 1 call $~lib/builtins/abort @@ -46771,7 +46771,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3887 i32.const 1 call $~lib/builtins/abort @@ -46784,7 +46784,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3888 i32.const 1 call $~lib/builtins/abort @@ -46797,7 +46797,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3889 i32.const 1 call $~lib/builtins/abort @@ -46810,7 +46810,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3892 i32.const 1 call $~lib/builtins/abort @@ -46823,7 +46823,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3893 i32.const 1 call $~lib/builtins/abort @@ -46836,7 +46836,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3894 i32.const 1 call $~lib/builtins/abort @@ -46849,7 +46849,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3895 i32.const 1 call $~lib/builtins/abort @@ -46862,7 +46862,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3896 i32.const 1 call $~lib/builtins/abort @@ -46874,7 +46874,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3908 i32.const 1 call $~lib/builtins/abort @@ -46886,7 +46886,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3909 i32.const 1 call $~lib/builtins/abort @@ -46898,7 +46898,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3910 i32.const 1 call $~lib/builtins/abort @@ -46910,7 +46910,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3911 i32.const 1 call $~lib/builtins/abort @@ -46922,7 +46922,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3912 i32.const 1 call $~lib/builtins/abort @@ -46934,7 +46934,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3913 i32.const 1 call $~lib/builtins/abort @@ -46946,7 +46946,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3914 i32.const 1 call $~lib/builtins/abort @@ -46958,7 +46958,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3915 i32.const 1 call $~lib/builtins/abort @@ -46970,7 +46970,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3916 i32.const 1 call $~lib/builtins/abort @@ -46982,7 +46982,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3917 i32.const 1 call $~lib/builtins/abort @@ -46994,7 +46994,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3920 i32.const 1 call $~lib/builtins/abort @@ -47006,7 +47006,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3921 i32.const 1 call $~lib/builtins/abort @@ -47018,7 +47018,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3922 i32.const 1 call $~lib/builtins/abort @@ -47030,7 +47030,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3923 i32.const 1 call $~lib/builtins/abort @@ -47042,7 +47042,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3924 i32.const 1 call $~lib/builtins/abort @@ -47054,7 +47054,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3925 i32.const 1 call $~lib/builtins/abort @@ -47066,7 +47066,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3926 i32.const 1 call $~lib/builtins/abort @@ -47078,7 +47078,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3927 i32.const 1 call $~lib/builtins/abort @@ -47090,7 +47090,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3928 i32.const 1 call $~lib/builtins/abort @@ -47102,7 +47102,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3929 i32.const 1 call $~lib/builtins/abort @@ -47114,7 +47114,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3930 i32.const 1 call $~lib/builtins/abort @@ -47126,7 +47126,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3931 i32.const 1 call $~lib/builtins/abort @@ -47138,7 +47138,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3932 i32.const 1 call $~lib/builtins/abort @@ -47150,7 +47150,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3933 i32.const 1 call $~lib/builtins/abort @@ -47162,7 +47162,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3934 i32.const 1 call $~lib/builtins/abort @@ -47174,7 +47174,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3943 i32.const 1 call $~lib/builtins/abort @@ -47186,7 +47186,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3944 i32.const 1 call $~lib/builtins/abort @@ -47198,7 +47198,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3945 i32.const 1 call $~lib/builtins/abort @@ -47210,7 +47210,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3946 i32.const 1 call $~lib/builtins/abort @@ -47222,7 +47222,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3947 i32.const 1 call $~lib/builtins/abort @@ -47234,7 +47234,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3948 i32.const 1 call $~lib/builtins/abort @@ -47246,7 +47246,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3949 i32.const 1 call $~lib/builtins/abort @@ -47258,7 +47258,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3950 i32.const 1 call $~lib/builtins/abort @@ -47270,7 +47270,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3951 i32.const 1 call $~lib/builtins/abort @@ -47282,7 +47282,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3952 i32.const 1 call $~lib/builtins/abort @@ -47294,7 +47294,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3955 i32.const 1 call $~lib/builtins/abort @@ -47306,7 +47306,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3956 i32.const 1 call $~lib/builtins/abort @@ -47318,7 +47318,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3957 i32.const 1 call $~lib/builtins/abort @@ -47330,7 +47330,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3958 i32.const 1 call $~lib/builtins/abort @@ -47342,7 +47342,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3959 i32.const 1 call $~lib/builtins/abort @@ -47354,7 +47354,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3960 i32.const 1 call $~lib/builtins/abort @@ -47366,7 +47366,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3961 i32.const 1 call $~lib/builtins/abort @@ -47378,7 +47378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3962 i32.const 1 call $~lib/builtins/abort @@ -47390,7 +47390,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3963 i32.const 1 call $~lib/builtins/abort @@ -47402,7 +47402,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3964 i32.const 1 call $~lib/builtins/abort @@ -47414,7 +47414,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3965 i32.const 1 call $~lib/builtins/abort @@ -47426,7 +47426,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3966 i32.const 1 call $~lib/builtins/abort @@ -47438,7 +47438,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3967 i32.const 1 call $~lib/builtins/abort @@ -47450,7 +47450,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3968 i32.const 1 call $~lib/builtins/abort @@ -47462,7 +47462,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 3969 i32.const 1 call $~lib/builtins/abort @@ -47535,7 +47535,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4010 i32.const 1 call $~lib/builtins/abort @@ -47548,7 +47548,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4011 i32.const 1 call $~lib/builtins/abort @@ -47561,7 +47561,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4012 i32.const 1 call $~lib/builtins/abort @@ -47574,7 +47574,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4013 i32.const 1 call $~lib/builtins/abort @@ -47587,7 +47587,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4014 i32.const 1 call $~lib/builtins/abort @@ -47600,7 +47600,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4015 i32.const 1 call $~lib/builtins/abort @@ -47613,7 +47613,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4016 i32.const 1 call $~lib/builtins/abort @@ -47626,7 +47626,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4017 i32.const 1 call $~lib/builtins/abort @@ -47639,7 +47639,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4018 i32.const 1 call $~lib/builtins/abort @@ -47652,7 +47652,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4019 i32.const 1 call $~lib/builtins/abort @@ -47665,7 +47665,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4020 i32.const 1 call $~lib/builtins/abort @@ -47678,7 +47678,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4021 i32.const 1 call $~lib/builtins/abort @@ -47690,7 +47690,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4025 i32.const 1 call $~lib/builtins/abort @@ -47702,7 +47702,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4026 i32.const 1 call $~lib/builtins/abort @@ -47714,7 +47714,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4027 i32.const 1 call $~lib/builtins/abort @@ -47726,7 +47726,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4028 i32.const 1 call $~lib/builtins/abort @@ -47738,7 +47738,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4029 i32.const 1 call $~lib/builtins/abort @@ -47750,7 +47750,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4030 i32.const 1 call $~lib/builtins/abort @@ -47762,7 +47762,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4031 i32.const 1 call $~lib/builtins/abort @@ -47774,7 +47774,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4032 i32.const 1 call $~lib/builtins/abort @@ -47786,7 +47786,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4033 i32.const 1 call $~lib/builtins/abort @@ -47798,7 +47798,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4034 i32.const 1 call $~lib/builtins/abort @@ -47810,7 +47810,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4035 i32.const 1 call $~lib/builtins/abort @@ -47822,7 +47822,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4036 i32.const 1 call $~lib/builtins/abort @@ -47834,7 +47834,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4037 i32.const 1 call $~lib/builtins/abort @@ -47846,7 +47846,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4038 i32.const 1 call $~lib/builtins/abort @@ -47858,7 +47858,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4039 i32.const 1 call $~lib/builtins/abort @@ -47870,7 +47870,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4040 i32.const 1 call $~lib/builtins/abort @@ -47883,7 +47883,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4044 i32.const 1 call $~lib/builtins/abort @@ -47896,7 +47896,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4045 i32.const 1 call $~lib/builtins/abort @@ -47909,7 +47909,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4046 i32.const 1 call $~lib/builtins/abort @@ -47922,7 +47922,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4047 i32.const 1 call $~lib/builtins/abort @@ -47935,7 +47935,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4049 i32.const 1 call $~lib/builtins/abort @@ -47948,7 +47948,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4050 i32.const 1 call $~lib/builtins/abort @@ -47961,7 +47961,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4051 i32.const 1 call $~lib/builtins/abort @@ -47974,7 +47974,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4052 i32.const 1 call $~lib/builtins/abort @@ -47987,7 +47987,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4054 i32.const 1 call $~lib/builtins/abort @@ -48000,7 +48000,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4055 i32.const 1 call $~lib/builtins/abort @@ -48013,7 +48013,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4056 i32.const 1 call $~lib/builtins/abort @@ -48026,7 +48026,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4057 i32.const 1 call $~lib/builtins/abort @@ -48039,7 +48039,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4059 i32.const 1 call $~lib/builtins/abort @@ -48052,7 +48052,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4060 i32.const 1 call $~lib/builtins/abort @@ -48065,7 +48065,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4061 i32.const 1 call $~lib/builtins/abort @@ -48078,7 +48078,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4062 i32.const 1 call $~lib/builtins/abort @@ -48091,7 +48091,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4064 i32.const 1 call $~lib/builtins/abort @@ -48104,7 +48104,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4065 i32.const 1 call $~lib/builtins/abort @@ -48117,7 +48117,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4066 i32.const 1 call $~lib/builtins/abort @@ -48130,7 +48130,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4067 i32.const 1 call $~lib/builtins/abort @@ -48143,7 +48143,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4069 i32.const 1 call $~lib/builtins/abort @@ -48156,7 +48156,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4070 i32.const 1 call $~lib/builtins/abort @@ -48169,7 +48169,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4071 i32.const 1 call $~lib/builtins/abort @@ -48182,7 +48182,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4072 i32.const 1 call $~lib/builtins/abort @@ -48195,7 +48195,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4073 i32.const 1 call $~lib/builtins/abort @@ -48208,7 +48208,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4075 i32.const 1 call $~lib/builtins/abort @@ -48221,7 +48221,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4076 i32.const 1 call $~lib/builtins/abort @@ -48234,7 +48234,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4082 i32.const 1 call $~lib/builtins/abort @@ -48247,7 +48247,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4083 i32.const 1 call $~lib/builtins/abort @@ -48260,7 +48260,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4084 i32.const 1 call $~lib/builtins/abort @@ -48273,7 +48273,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4085 i32.const 1 call $~lib/builtins/abort @@ -48286,7 +48286,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4086 i32.const 1 call $~lib/builtins/abort @@ -48299,7 +48299,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4087 i32.const 1 call $~lib/builtins/abort @@ -48310,7 +48310,7 @@ call $~lib/math/ipow32 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4089 i32.const 1 call $~lib/builtins/abort @@ -48321,7 +48321,7 @@ call $~lib/math/ipow32 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4090 i32.const 1 call $~lib/builtins/abort @@ -48332,7 +48332,7 @@ call $~lib/math/ipow32 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4093 i32.const 1 call $~lib/builtins/abort @@ -48345,7 +48345,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4095 i32.const 1 call $~lib/builtins/abort @@ -48358,7 +48358,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4096 i32.const 1 call $~lib/builtins/abort @@ -48371,7 +48371,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4099 i32.const 1 call $~lib/builtins/abort @@ -48386,7 +48386,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4101 i32.const 1 call $~lib/builtins/abort @@ -48401,7 +48401,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4102 i32.const 1 call $~lib/builtins/abort @@ -48416,7 +48416,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4103 i32.const 1 call $~lib/builtins/abort @@ -48429,7 +48429,7 @@ i32.and if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4104 i32.const 1 call $~lib/builtins/abort @@ -48444,7 +48444,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4105 i32.const 1 call $~lib/builtins/abort @@ -48457,7 +48457,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4107 i32.const 1 call $~lib/builtins/abort @@ -48470,7 +48470,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4108 i32.const 1 call $~lib/builtins/abort @@ -48483,7 +48483,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4109 i32.const 1 call $~lib/builtins/abort @@ -48496,7 +48496,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4110 i32.const 1 call $~lib/builtins/abort @@ -48509,7 +48509,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4111 i32.const 1 call $~lib/builtins/abort @@ -48522,7 +48522,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4112 i32.const 1 call $~lib/builtins/abort @@ -48535,7 +48535,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4113 i32.const 1 call $~lib/builtins/abort @@ -48548,7 +48548,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4114 i32.const 1 call $~lib/builtins/abort @@ -48561,7 +48561,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4115 i32.const 1 call $~lib/builtins/abort @@ -48580,7 +48580,7 @@ i64.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4117 i32.const 1 call $~lib/builtins/abort @@ -48597,7 +48597,7 @@ i64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4118 i32.const 1 call $~lib/builtins/abort @@ -48610,7 +48610,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4120 i32.const 1 call $~lib/builtins/abort @@ -48623,7 +48623,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4121 i32.const 1 call $~lib/builtins/abort @@ -48636,7 +48636,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4122 i32.const 1 call $~lib/builtins/abort @@ -48649,7 +48649,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4123 i32.const 1 call $~lib/builtins/abort @@ -48662,7 +48662,7 @@ f64.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4124 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 33c9a4432c..22a4c8bbc2 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -69,7 +69,7 @@ (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00") (data (i32.const 56) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\0d\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\0d\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\0d\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \0d\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\0d\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\0d\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\0d\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") (data (i32.const 2104) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\0de\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") (data (i32.const 4152) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\0d\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\0d\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") @@ -81,7 +81,7 @@ (data (i32.const 7960) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\0d\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") (data (i32.const 8984) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") (data (i32.const 9240) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (memory $0 0) @@ -13,6 +13,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -24,6 +37,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -67,60 +90,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -131,7 +161,7 @@ if i32.const 8 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -154,12 +184,16 @@ ) (func $start:std/new global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 856757bab1..8451acc7d4 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -8,11 +8,11 @@ (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1136) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1172) "\01\00\00\00\01") + (data (i32.const 1036) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") + (data (i32.const 1084) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1116) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 1148) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 1184) "\01\00\00\00\00\00\00\00\01") (export "memory" (memory $0)) (start $~start) (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) @@ -66,9 +66,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -189,7 +189,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -200,7 +200,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -211,7 +211,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -222,7 +222,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -233,7 +233,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -246,7 +246,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -259,7 +259,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -272,7 +272,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -283,7 +283,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -294,7 +294,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -305,7 +305,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -316,7 +316,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -329,7 +329,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -342,7 +342,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -353,7 +353,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -364,7 +364,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -375,7 +375,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -386,7 +386,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -399,7 +399,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -412,7 +412,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -425,7 +425,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -436,7 +436,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -447,7 +447,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -458,7 +458,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -469,7 +469,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -482,7 +482,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -493,7 +493,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -504,7 +504,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -517,7 +517,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -530,7 +530,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -541,7 +541,7 @@ call $~lib/object/Object.is if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -554,42 +554,42 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1088 - i32.const 1088 + i32.const 1104 + i32.const 1104 call $~lib/object/Object.is<~lib/string/String> i32.const 1 i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1088 - i32.const 1120 + i32.const 1104 + i32.const 1136 call $~lib/object/Object.is<~lib/string/String> if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1088 - i32.const 1152 + i32.const 1104 + i32.const 1168 call $~lib/object/Object.is<~lib/string/String> if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -602,29 +602,29 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1184 + i32.const 1200 i32.const 0 call $~lib/object/Object.is<~lib/string/String> if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1184 + i32.const 1200 call $~lib/object/Object.is<~lib/string/String> if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 51 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index 7bccb6132b..00085b64bd 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -9,11 +9,11 @@ (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00") - (data (i32.const 64) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 96) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 160) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 12) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00") + (data (i32.const 60) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 92) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 124) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00") + (data (i32.const 156) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) @@ -98,9 +98,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 49e1f223da..02c1096e56 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -5,7 +5,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data (i32.const 1036) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) @@ -75,22 +75,30 @@ (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -124,27 +132,31 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 8 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 8 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $2 local.get $0 i32.store @@ -217,7 +229,7 @@ (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $2 local.get $0 i32.store @@ -229,7 +241,7 @@ (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $2 local.get $0 i32.store @@ -241,7 +253,7 @@ (func $start:std/operator-overloading (local $0 i32) (local $1 i32) - i32.const 1104 + i32.const 1116 global.set $~lib/rt/stub/offset i32.const 1 i32.const 2 @@ -280,7 +292,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -321,7 +333,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -364,7 +376,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -407,7 +419,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -449,7 +461,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 169 i32.const 1 call $~lib/builtins/abort @@ -492,7 +504,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -535,7 +547,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -578,7 +590,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -621,7 +633,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -644,7 +656,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -665,7 +677,7 @@ global.get $std/operator-overloading/eqf if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 205 i32.const 1 call $~lib/builtins/abort @@ -678,7 +690,7 @@ global.get $std/operator-overloading/eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 209 i32.const 1 call $~lib/builtins/abort @@ -693,7 +705,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 213 i32.const 1 call $~lib/builtins/abort @@ -729,7 +741,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -765,7 +777,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 225 i32.const 1 call $~lib/builtins/abort @@ -801,7 +813,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -837,7 +849,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 237 i32.const 1 call $~lib/builtins/abort @@ -873,7 +885,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 242 i32.const 1 call $~lib/builtins/abort @@ -909,7 +921,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 247 i32.const 1 call $~lib/builtins/abort @@ -945,7 +957,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -979,7 +991,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 257 i32.const 1 call $~lib/builtins/abort @@ -1021,7 +1033,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 262 i32.const 1 call $~lib/builtins/abort @@ -1063,7 +1075,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 267 i32.const 1 call $~lib/builtins/abort @@ -1099,7 +1111,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 272 i32.const 1 call $~lib/builtins/abort @@ -1110,7 +1122,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 273 i32.const 1 call $~lib/builtins/abort @@ -1152,7 +1164,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 279 i32.const 1 call $~lib/builtins/abort @@ -1188,7 +1200,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 282 i32.const 1 call $~lib/builtins/abort @@ -1224,7 +1236,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 287 i32.const 1 call $~lib/builtins/abort @@ -1245,7 +1257,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 288 i32.const 1 call $~lib/builtins/abort @@ -1279,7 +1291,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 291 i32.const 1 call $~lib/builtins/abort @@ -1298,7 +1310,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 292 i32.const 1 call $~lib/builtins/abort @@ -1352,7 +1364,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 312 i32.const 1 call $~lib/builtins/abort @@ -1406,7 +1418,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 332 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 3722cbd445..111939e816 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -7,7 +7,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 12) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -82,6 +82,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 88)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -93,6 +106,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -136,60 +159,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -200,7 +230,7 @@ if i32.const 8 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -1035,7 +1065,7 @@ if i32.const 8 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -1053,7 +1083,7 @@ if i32.const 8 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -1092,12 +1122,16 @@ (local $23 i32) (local $24 i32) global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index c19a897f7d..f995c8dc88 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) (global $std/pointer/add (mut i32) (i32.const 0)) @@ -206,7 +206,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -218,7 +218,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -233,7 +233,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -248,7 +248,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -259,7 +259,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -276,7 +276,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -287,7 +287,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -298,7 +298,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -317,7 +317,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 100 i32.const 1 call $~lib/builtins/abort @@ -329,7 +329,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 101 i32.const 1 call $~lib/builtins/abort @@ -341,7 +341,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 102 i32.const 1 call $~lib/builtins/abort @@ -388,7 +388,7 @@ i32.eq if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -400,7 +400,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -412,7 +412,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -432,7 +432,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -444,7 +444,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -456,7 +456,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -468,7 +468,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -480,7 +480,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -492,7 +492,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -507,7 +507,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 123 i32.const 1 call $~lib/builtins/abort @@ -519,7 +519,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 124 i32.const 1 call $~lib/builtins/abort @@ -531,7 +531,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -546,7 +546,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -558,7 +558,7 @@ f32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 129 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 7a407a2b77..b7dc1393e1 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -5,7 +5,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/polyfills.optimized.wat b/tests/compiler/std/polyfills.optimized.wat index 528ed63449..9126b4765b 100644 --- a/tests/compiler/std/polyfills.optimized.wat +++ b/tests/compiler/std/polyfills.optimized.wat @@ -1,5 +1,5 @@ (module (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") + (data (i32.const 1036) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index 966b7ef0aa..d4a5e848a0 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -5,7 +5,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00") + (data (i32.const 12) " \00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 2e7cb28584..b67fc873b2 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -24,16 +24,15 @@ (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1232) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1296) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 1344) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1392) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1276) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1340) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data (i32.const 1388) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1436) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -49,8 +48,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 277 + i32.const 1184 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -59,18 +58,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 279 + i32.const 1184 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -112,28 +111,28 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 292 + i32.const 1184 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -204,8 +203,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 205 + i32.const 1184 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -218,14 +217,14 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 207 + i32.const 1184 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -241,14 +240,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -263,7 +262,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -291,8 +290,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 228 + i32.const 1184 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -300,14 +299,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -336,33 +335,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1040 - i32.const 243 + i32.const 1184 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1040 - i32.const 244 + i32.const 1184 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -409,8 +408,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 260 + i32.const 1184 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -428,15 +427,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -474,54 +473,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 + i32.const 1184 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 396 + i32.const 1184 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -537,18 +534,17 @@ i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 408 + i32.const 1184 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -558,23 +554,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -585,116 +582,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1504 + i32.const 0 + i32.store + i32.const 3072 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1504 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1456 - local.set $1 - i32.const 1456 - i32.const 0 - i32.store - i32.const 3024 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1456 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1456 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1504 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1456 - i32.const 3040 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1456 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1504 + i32.const 3076 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1504 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1088 - i32.const 1040 + i32.const 1056 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -721,7 +710,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -752,8 +741,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 338 + i32.const 1184 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -804,8 +793,8 @@ i32.eqz if i32.const 0 - i32.const 1040 - i32.const 351 + i32.const 1184 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -833,12 +822,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1040 - i32.const 365 + i32.const 1184 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -849,7 +840,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -861,12 +852,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -881,7 +872,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -901,149 +892,158 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1040 - i32.const 520 + i32.const 1184 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1051,11 +1051,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1444 + i32.const 1492 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1070,7 +1070,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1087,7 +1087,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1098,11 +1098,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1444 + i32.const 1492 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1268,11 +1268,11 @@ (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1200 i32.const 1248 + i32.const 1296 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -1280,7 +1280,7 @@ end local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $0 call $~lib/memory/memory.fill @@ -1291,7 +1291,7 @@ (local $0 i32) i32.const 24 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -1593,6 +1593,39 @@ local.get $0 call $~lib/rt/pure/__retain ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1777,127 +1810,195 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 1492 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + i32.const 1073741804 + i32.gt_u if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 + i32.const 1056 + i32.const 1120 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 + i32.const 16 + i32.sub + local.set $0 + local.get $1 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1492 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 local.get $0 - local.get $1 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end local.get $3 + local.get $0 + local.get $5 call $~lib/rt/tlsf/prepareBlock - local.get $1 - return end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 + i32.const 4 i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $1 + i32.store offset=16 + local.get $2 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1444 - i32.ge_u - if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 ) (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $3 local.get $2 i32.shr_u i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -1905,63 +2006,21 @@ end local.get $0 i32.load - local.set $3 - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - i32.const 16 - i32.sub - local.set $4 - local.get $3 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $3 - select - if (result i32) - local.get $4 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 + local.tee $4 local.get $1 local.get $2 i32.shl local.tee $2 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add + call $~lib/rt/pure/__renew local.tee $1 - local.get $5 + local.get $3 i32.add local.get $2 - local.get $5 + local.get $3 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $3 + local.get $4 i32.ne if local.get $0 @@ -1987,8 +2046,8 @@ i32.const 0 i32.lt_s if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -2042,7 +2101,7 @@ local.set $4 i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -2057,11 +2116,11 @@ i32.const 0 i32.store offset=12 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -2069,7 +2128,7 @@ end local.get $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 call $~lib/memory/memory.fill @@ -2143,8 +2202,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -2273,7 +2332,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -2289,7 +2348,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -2308,7 +2367,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -2331,7 +2390,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -2347,7 +2406,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -2366,7 +2425,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -2391,7 +2450,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -2417,7 +2476,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -2440,7 +2499,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -2454,7 +2513,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -2473,7 +2532,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -2495,7 +2554,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -2511,7 +2570,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -2525,7 +2584,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -2544,7 +2603,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -2556,7 +2615,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -2573,7 +2632,7 @@ (local $0 i32) i32.const 24 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -2839,7 +2898,7 @@ local.set $4 i32.const 16 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -2854,11 +2913,11 @@ i32.const 0 i32.store offset=12 local.get $4 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -2866,7 +2925,7 @@ end local.get $4 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 call $~lib/memory/memory.fill @@ -2940,8 +2999,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3033,7 +3092,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -3049,7 +3108,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -3068,7 +3127,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -3089,7 +3148,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -3105,7 +3164,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -3124,7 +3183,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -3149,7 +3208,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -3175,7 +3234,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3196,7 +3255,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -3210,7 +3269,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -3229,7 +3288,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -3249,7 +3308,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -3265,7 +3324,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -3279,7 +3338,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -3298,7 +3357,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3310,7 +3369,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3327,7 +3386,7 @@ (local $0 i32) i32.const 24 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -3648,8 +3707,8 @@ i32.const 0 i32.lt_s if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -3706,7 +3765,7 @@ local.set $7 i32.const 16 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -3721,11 +3780,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 536870904 + i32.const 536870910 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -3736,7 +3795,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -3810,8 +3869,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3909,7 +3968,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -3925,7 +3984,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -3944,7 +4003,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -3967,7 +4026,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -3983,7 +4042,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4002,7 +4061,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -4027,7 +4086,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -4053,7 +4112,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -4076,7 +4135,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -4090,7 +4149,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -4109,7 +4168,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -4131,7 +4190,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -4147,7 +4206,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -4161,7 +4220,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -4180,7 +4239,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -4192,7 +4251,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -4209,7 +4268,7 @@ (local $0 i32) i32.const 24 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -4476,7 +4535,7 @@ local.set $7 i32.const 16 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -4491,11 +4550,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 536870904 + i32.const 536870910 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -4506,7 +4565,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -4580,8 +4639,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -4675,7 +4734,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -4691,7 +4750,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -4710,7 +4769,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -4731,7 +4790,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -4747,7 +4806,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4766,7 +4825,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -4791,7 +4850,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -4817,7 +4876,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -4838,7 +4897,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -4852,7 +4911,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -4871,7 +4930,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -4891,7 +4950,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -4907,7 +4966,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -4921,7 +4980,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -4940,7 +4999,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -4952,7 +5011,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -4969,7 +5028,7 @@ (local $0 i32) i32.const 24 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -5296,8 +5355,8 @@ i32.const 0 i32.lt_s if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -5354,7 +5413,7 @@ local.set $7 i32.const 16 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -5369,11 +5428,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -5384,7 +5443,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -5458,8 +5517,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5549,7 +5608,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -5565,7 +5624,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -5584,7 +5643,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -5603,7 +5662,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -5619,7 +5678,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -5638,7 +5697,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -5663,7 +5722,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -5689,7 +5748,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -5708,7 +5767,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -5722,7 +5781,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -5741,7 +5800,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -5759,7 +5818,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -5775,7 +5834,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -5789,7 +5848,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -5808,7 +5867,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -5820,7 +5879,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -5837,7 +5896,7 @@ (local $0 i32) i32.const 24 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -5880,7 +5939,7 @@ local.set $7 i32.const 16 i32.const 14 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -5895,11 +5954,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -5910,7 +5969,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -5995,7 +6054,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -6011,7 +6070,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -6030,7 +6089,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -6049,7 +6108,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -6065,7 +6124,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -6084,7 +6143,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -6109,7 +6168,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -6135,7 +6194,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -6154,7 +6213,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -6168,7 +6227,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -6187,7 +6246,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -6205,7 +6264,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -6221,7 +6280,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -6235,7 +6294,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -6254,7 +6313,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -6266,7 +6325,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -6283,7 +6342,7 @@ (local $0 i32) i32.const 24 i32.const 15 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -6645,8 +6704,8 @@ i32.const 0 i32.lt_s if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -6703,7 +6762,7 @@ local.set $7 i32.const 16 i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -6718,11 +6777,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 134217726 + i32.const 134217727 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -6733,7 +6792,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -6807,8 +6866,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -6933,7 +6992,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -6949,7 +7008,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -6968,7 +7027,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -6987,7 +7046,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -7003,7 +7062,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7022,7 +7081,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -7047,7 +7106,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -7073,7 +7132,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -7092,7 +7151,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7106,7 +7165,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -7125,7 +7184,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -7143,7 +7202,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -7159,7 +7218,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7173,7 +7232,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -7192,7 +7251,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -7204,7 +7263,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -7221,7 +7280,7 @@ (local $0 i32) i32.const 24 i32.const 17 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -7264,7 +7323,7 @@ local.set $7 i32.const 16 i32.const 18 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -7279,11 +7338,11 @@ i32.const 0 i32.store offset=12 local.get $8 - i32.const 134217726 + i32.const 134217727 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -7294,7 +7353,7 @@ i32.shl local.tee $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $6 call $~lib/memory/memory.fill @@ -7380,7 +7439,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -7396,7 +7455,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -7415,7 +7474,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -7434,7 +7493,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -7450,7 +7509,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7469,7 +7528,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -7494,7 +7553,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -7520,7 +7579,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -7539,7 +7598,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7553,7 +7612,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -7572,7 +7631,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -7590,7 +7649,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -7606,7 +7665,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7620,7 +7679,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -7639,7 +7698,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -7651,7 +7710,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -7668,7 +7727,7 @@ (local $0 i32) i32.const 24 i32.const 19 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -7976,7 +8035,7 @@ local.set $8 i32.const 16 i32.const 20 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -7991,11 +8050,11 @@ i32.const 0 i32.store offset=12 local.get $9 - i32.const 268435452 + i32.const 268435455 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -8006,7 +8065,7 @@ i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $7 call $~lib/memory/memory.fill @@ -8064,8 +8123,8 @@ i32.const 0 i32.lt_s if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -8113,8 +8172,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -8207,7 +8266,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8223,7 +8282,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8242,7 +8301,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -8261,7 +8320,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -8277,7 +8336,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8296,7 +8355,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -8321,7 +8380,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -8347,7 +8406,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -8366,7 +8425,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -8380,7 +8439,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -8399,7 +8458,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -8417,7 +8476,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -8433,7 +8492,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -8447,7 +8506,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -8466,7 +8525,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -8478,7 +8537,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -8495,7 +8554,7 @@ (local $0 i32) i32.const 24 i32.const 21 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 16 @@ -8803,7 +8862,7 @@ local.set $8 i32.const 16 i32.const 22 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -8818,11 +8877,11 @@ i32.const 0 i32.store offset=12 local.get $9 - i32.const 134217726 + i32.const 134217727 i32.gt_u if - i32.const 1200 - i32.const 1360 + i32.const 1248 + i32.const 1408 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -8833,7 +8892,7 @@ i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $7 call $~lib/memory/memory.fill @@ -8891,8 +8950,8 @@ i32.const 0 i32.lt_s if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -8940,8 +8999,8 @@ i32.load offset=12 i32.ge_u if + i32.const 1456 i32.const 1408 - i32.const 1360 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -9034,7 +9093,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -9050,7 +9109,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -9069,7 +9128,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -9088,7 +9147,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -9104,7 +9163,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -9123,7 +9182,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -9148,7 +9207,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -9174,7 +9233,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -9193,7 +9252,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9207,7 +9266,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -9226,7 +9285,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -9244,7 +9303,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -9260,7 +9319,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9274,7 +9333,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -9293,7 +9352,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -9305,7 +9364,7 @@ i32.load offset=20 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -9345,7 +9404,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -9361,13 +9420,13 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -9378,15 +9437,15 @@ unreachable end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit local.get $0 - i32.load offset=24 + i32.load offset=28 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit end local.get $2 @@ -9394,7 +9453,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -9409,7 +9468,7 @@ i32.le_u if i32.const 0 - i32.const 1152 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -9428,13 +9487,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1444 + i32.const 1492 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 6099a47675..7ab421317e 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) @@ -17,27 +17,24 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 224) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") - (data (i32.const 336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 384) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 252) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 316) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") + (data (i32.const 364) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 412) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 436)) + (global $~lib/heap/__heap_base i32 (i32.const 468)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -62,8 +59,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 277 + i32.const 160 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -77,11 +74,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -89,8 +86,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 279 + i32.const 160 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -143,29 +140,29 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 292 + i32.const 160 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -275,8 +272,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 205 + i32.const 160 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -292,8 +289,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 207 + i32.const 160 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -301,7 +298,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -323,7 +320,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -333,7 +330,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -350,7 +347,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -387,8 +384,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 228 + i32.const 160 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -398,7 +395,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -408,7 +405,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -440,11 +437,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -452,8 +449,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 243 + i32.const 160 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -461,7 +458,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -470,8 +467,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 244 + i32.const 160 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -529,8 +526,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 260 + i32.const 160 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -554,15 +551,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -631,31 +628,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 + i32.const 160 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -669,14 +668,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 396 + i32.const 160 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -708,8 +707,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 408 + i32.const 160 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -720,10 +719,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -731,9 +730,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -749,15 +748,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -776,7 +775,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -789,127 +788,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -917,49 +935,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 80 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -982,7 +975,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1036,8 +1029,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 338 + i32.const 160 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1101,8 +1094,8 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 351 + i32.const 160 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1158,7 +1151,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1176,11 +1169,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1244,14 +1237,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 32 - i32.const 365 + i32.const 160 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1265,8 +1260,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1278,14 +1273,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1304,7 +1299,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1316,7 +1311,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1333,136 +1328,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 520 + i32.const 160 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1487,7 +1463,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1510,7 +1486,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1523,7 +1499,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1535,7 +1511,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1757,11 +1733,11 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 272 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -1769,7 +1745,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 i32.const 0 @@ -1788,7 +1764,7 @@ if i32.const 24 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2195,7 +2171,7 @@ if i32.const 16 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2212,13 +2188,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 0 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -2230,7 +2206,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -2267,7 +2243,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -2290,22 +2266,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 32 - i32.const 585 + i32.const 160 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3566,12 +3531,9 @@ end ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3581,6 +3543,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -3588,7 +3581,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -3609,9 +3601,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -3620,7 +3609,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -3638,7 +3627,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -3661,9 +3650,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -3675,41 +3661,86 @@ end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -3728,13 +3759,13 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -3749,7 +3780,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $6 local.get $6 local.get $3 @@ -3797,8 +3828,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -3921,8 +3952,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -4101,7 +4132,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -4117,7 +4148,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -4137,7 +4168,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -4162,7 +4193,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -4178,7 +4209,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4198,7 +4229,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -4228,7 +4259,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -4255,7 +4286,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -4280,7 +4311,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -4297,7 +4328,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -4317,7 +4348,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -4343,7 +4374,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -4359,7 +4390,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -4376,7 +4407,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -4396,7 +4427,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -4411,7 +4442,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -4430,7 +4461,7 @@ if i32.const 24 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -4824,7 +4855,7 @@ if i32.const 16 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -4841,13 +4872,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 0 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -4859,7 +4890,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -4915,8 +4946,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -5039,8 +5070,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5215,7 +5246,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -5231,7 +5262,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -5251,7 +5282,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -5274,7 +5305,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -5290,7 +5321,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -5310,7 +5341,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -5340,7 +5371,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -5367,7 +5398,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -5390,7 +5421,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -5407,7 +5438,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -5427,7 +5458,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -5451,7 +5482,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -5467,7 +5498,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -5484,7 +5515,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -5504,7 +5535,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -5519,7 +5550,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -5538,7 +5569,7 @@ if i32.const 24 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -5972,7 +6003,7 @@ if i32.const 16 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -5989,13 +6020,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 1 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -6007,7 +6038,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -6063,8 +6094,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -6187,8 +6218,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -6371,7 +6402,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -6387,7 +6418,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -6407,7 +6438,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -6432,7 +6463,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -6448,7 +6479,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -6468,7 +6499,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -6498,7 +6529,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -6525,7 +6556,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -6550,7 +6581,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -6567,7 +6598,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -6587,7 +6618,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -6613,7 +6644,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -6629,7 +6660,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -6646,7 +6677,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -6666,7 +6697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -6681,7 +6712,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -6700,7 +6731,7 @@ if i32.const 24 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -7106,7 +7137,7 @@ if i32.const 16 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -7123,13 +7154,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 1 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -7141,7 +7172,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -7197,8 +7228,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -7321,8 +7352,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -7501,7 +7532,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -7517,7 +7548,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -7537,7 +7568,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -7560,7 +7591,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -7576,7 +7607,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7596,7 +7627,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -7626,7 +7657,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -7653,7 +7684,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -7676,7 +7707,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7693,7 +7724,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -7713,7 +7744,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -7737,7 +7768,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -7753,7 +7784,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7770,7 +7801,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -7790,7 +7821,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -7805,7 +7836,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -7824,7 +7855,7 @@ if i32.const 24 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -8278,7 +8309,7 @@ if i32.const 16 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -8295,13 +8326,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -8313,7 +8344,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -8369,8 +8400,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -8493,8 +8524,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -8669,7 +8700,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8685,7 +8716,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8705,7 +8736,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -8726,7 +8757,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -8742,7 +8773,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8762,7 +8793,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -8792,7 +8823,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -8819,7 +8850,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -8840,7 +8871,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -8857,7 +8888,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -8877,7 +8908,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -8899,7 +8930,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -8915,7 +8946,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -8932,7 +8963,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -8952,7 +8983,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -8967,7 +8998,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -8986,7 +9017,7 @@ if i32.const 24 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -9398,7 +9429,7 @@ if i32.const 16 i32.const 14 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -9415,13 +9446,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -9433,7 +9464,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -9489,8 +9520,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -9613,8 +9644,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -9789,7 +9820,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -9805,7 +9836,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -9825,7 +9856,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -9846,7 +9877,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -9862,7 +9893,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -9882,7 +9913,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -9912,7 +9943,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -9939,7 +9970,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -9960,7 +9991,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9977,7 +10008,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -9997,7 +10028,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -10019,7 +10050,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -10035,7 +10066,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -10052,7 +10083,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -10072,7 +10103,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -10087,7 +10118,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -10106,7 +10137,7 @@ if i32.const 24 i32.const 15 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -10620,7 +10651,7 @@ if i32.const 16 i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -10637,13 +10668,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 3 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -10655,7 +10686,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -10711,8 +10742,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -10835,8 +10866,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -11017,7 +11048,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11033,7 +11064,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11053,7 +11084,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -11074,7 +11105,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -11090,7 +11121,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11110,7 +11141,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -11140,7 +11171,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -11167,7 +11198,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -11188,7 +11219,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11205,7 +11236,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -11225,7 +11256,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -11247,7 +11278,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -11263,7 +11294,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11280,7 +11311,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -11300,7 +11331,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -11315,7 +11346,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -11334,7 +11365,7 @@ if i32.const 24 i32.const 17 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -11760,7 +11791,7 @@ if i32.const 16 i32.const 18 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -11777,13 +11808,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 3 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -11795,7 +11826,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -11851,8 +11882,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -11975,8 +12006,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -12157,7 +12188,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -12173,7 +12204,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -12193,7 +12224,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -12214,7 +12245,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -12230,7 +12261,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -12250,7 +12281,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -12280,7 +12311,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -12307,7 +12338,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -12328,7 +12359,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -12345,7 +12376,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -12365,7 +12396,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -12387,7 +12418,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -12403,7 +12434,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -12420,7 +12451,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -12440,7 +12471,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -12455,7 +12486,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -12474,7 +12505,7 @@ if i32.const 24 i32.const 19 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -12867,7 +12898,7 @@ if i32.const 16 i32.const 20 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -12884,13 +12915,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 2 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -12902,7 +12933,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -12958,8 +12989,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -13082,8 +13113,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -13253,7 +13284,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -13269,7 +13300,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -13289,7 +13320,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -13310,7 +13341,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -13326,7 +13357,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -13346,7 +13377,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -13376,7 +13407,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -13403,7 +13434,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -13424,7 +13455,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -13441,7 +13472,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -13461,7 +13492,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -13483,7 +13514,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -13499,7 +13530,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -13516,7 +13547,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -13536,7 +13567,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -13551,7 +13582,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -13570,7 +13601,7 @@ if i32.const 24 i32.const 21 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -13975,7 +14006,7 @@ if i32.const 16 i32.const 22 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -13992,13 +14023,13 @@ i32.const 0 i32.store offset=12 local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.const 3 i32.shr_u i32.gt_u if - i32.const 192 - i32.const 352 + i32.const 224 + i32.const 384 i32.const 57 i32.const 60 call $~lib/builtins/abort @@ -14010,7 +14041,7 @@ local.set $2 local.get $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -14066,8 +14097,8 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -14190,8 +14221,8 @@ i32.load offset=12 i32.ge_u if - i32.const 400 - i32.const 352 + i32.const 432 + i32.const 384 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -14365,7 +14396,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -14381,7 +14412,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -14401,7 +14432,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -14422,7 +14453,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -14438,7 +14469,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -14458,7 +14489,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -14488,7 +14519,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -14515,7 +14546,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -14536,7 +14567,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -14553,7 +14584,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -14573,7 +14604,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -14595,7 +14626,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -14611,7 +14642,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -14628,7 +14659,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -14648,7 +14679,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -14663,7 +14694,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -14691,11 +14722,6 @@ (func $~start call $start:std/set ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -14725,7 +14751,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -14736,7 +14762,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -14751,7 +14777,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -14768,7 +14794,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -14806,14 +14832,14 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 5a80874100..f36f23d229 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,47 +1,51 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) (type $i32_=>_f32 (func (param i32) (result f32))) (type $i32_=>_f64 (func (param i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 1056) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00\08\00\00\00\02") - (data (i32.const 1088) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04") - (data (i32.const 1120) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\04\00\00P\04\00\00\10\00\00\00\02") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 1184) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\04\00\00\90\04\00\00\08\00\00\00\02") - (data (i32.const 1216) "\10\00\00\00\01\00\00\00\00\00\00\00\10") - (data (i32.const 1238) "\f4?\00\00\00\00\00\00\02@") - (data (i32.const 1248) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\d0\04\00\00\d0\04\00\00\10\00\00\00\02") - (data (i32.const 1280) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1344) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1408) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1456) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1504) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data (i32.const 1036) "\08\00\00\00\01") + (data (i32.const 1052) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 1068) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\08\00\00\00\02") + (data (i32.const 1116) "\10\00\00\00\01") + (data (i32.const 1132) "\10\00\00\00\03\00\00\00\00\00\00\00\04") + (data (i32.const 1164) "\10\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\04\00\00p\04\00\00\10\00\00\00\02") + (data (i32.const 1212) "\08\00\00\00\01") + (data (i32.const 1228) "\08\00\00\00\00\00\c0?\00\00 @") + (data (i32.const 1244) "\10\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\d0\04\00\00\d0\04\00\00\08\00\00\00\02") + (data (i32.const 1292) "\10\00\00\00\01") + (data (i32.const 1308) "\10") + (data (i32.const 1318) "\f4?\00\00\00\00\00\00\02@") + (data (i32.const 1340) "\10\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00 \05\00\00 \05\00\00\10\00\00\00\02") + (data (i32.const 1388) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1452) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1516) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1612) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#__get (param $0 i32) (result i32) local.get $0 - i32.const 1084 + i32.const 1100 i32.load i32.ge_u if - i32.const 1360 - i32.const 1424 + i32.const 1472 + i32.const 1536 i32.const 104 i32.const 42 call $~lib/builtins/abort unreachable end - i32.const 1076 + i32.const 1092 i32.load local.get $0 i32.const 2 @@ -49,6 +53,15 @@ i32.add i32.load ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -57,6 +70,12 @@ local.tee $2 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $1 i32.gt_u if @@ -269,8 +288,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $0 i32.const 15 i32.and @@ -281,50 +298,34 @@ i32.eqz if i32.const 0 - i32.const 1520 - i32.const 41 + i32.const 1632 + i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/stub/offset local.get $0 - i32.const 16 + local.get $0 + i32.const 4 i32.sub - local.tee $4 + local.tee $3 i32.load - local.set $3 - local.get $4 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $3 + local.tee $4 i32.add i32.eq local.set $5 local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and + call $~lib/rt/stub/computeSize local.set $2 local.get $1 - local.get $3 + local.get $4 i32.gt_u if local.get $5 if local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable @@ -333,71 +334,43 @@ local.get $2 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $4 + local.get $3 local.get $2 i32.store else - local.get $4 - i32.load offset=8 - local.set $6 local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl - local.tee $3 + local.tee $1 local.get $2 - local.get $3 + local.get $1 i32.gt_u select - local.tee $5 - i32.const 1073741808 + local.tee $2 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add + local.tee $1 + local.get $2 + call $~lib/rt/stub/computeSize local.tee $2 - local.get $5 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $7 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 - i32.const 16 - i32.sub - local.tee $3 - local.get $7 i32.store - local.get $3 - i32.const 1 - i32.store offset=4 - local.get $3 - local.get $6 - i32.store offset=8 - local.get $3 - local.get $5 - i32.store offset=12 - local.get $2 + local.get $1 local.get $0 local.get $4 - i32.load offset=12 call $~lib/memory/memory.copy - local.get $2 - local.tee $0 - i32.const 16 - i32.sub - local.set $4 + local.get $1 + local.set $0 end else local.get $5 @@ -406,14 +379,11 @@ local.get $2 i32.add global.set $~lib/rt/stub/offset - local.get $4 + local.get $3 local.get $2 i32.store end end - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) @@ -578,72 +548,112 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $1 i32.shr_u i32.gt_u if i32.const 1 - i32.const 1073741808 + i32.const 1073741820 local.get $1 i32.shr_u i32.gt_u if - i32.const 1472 - i32.const 1424 + i32.const 1584 + i32.const 1536 i32.const 14 i32.const 48 call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 i32.load - local.tee $4 + local.tee $5 + local.set $2 i32.const 1 local.get $1 i32.shl - local.tee $3 - call $~lib/rt/stub/__realloc local.tee $1 + local.set $4 + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $2 + i32.const 20 + i32.sub + i32.load offset=12 + local.set $6 + local.get $2 + i32.const 16 + i32.sub + local.get $4 + i32.const 16 i32.add - local.get $3 + call $~lib/rt/stub/__realloc + local.tee $7 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $6 + i32.store offset=12 local.get $2 + local.get $4 + i32.store offset=16 + local.get $3 + local.get $7 + i32.const 16 + i32.add + local.tee $2 + i32.add + local.get $1 + local.get $3 i32.sub call $~lib/memory/memory.fill - local.get $1 - local.get $4 + local.get $2 + local.get $5 i32.ne if local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 end local.get $0 - local.get $3 + local.get $1 i32.store offset=8 end ) (func $~lib/array/Array#__get (param $0 i32) (result i64) local.get $0 - i32.const 1148 + i32.const 1196 i32.load i32.ge_u if - i32.const 1360 - i32.const 1424 + i32.const 1472 + i32.const 1536 i32.const 104 i32.const 42 call $~lib/builtins/abort unreachable end - i32.const 1140 + i32.const 1188 i32.load local.get $0 i32.const 3 @@ -653,18 +663,18 @@ ) (func $~lib/array/Array#__get (param $0 i32) (result f32) local.get $0 - i32.const 1212 + i32.const 1276 i32.load i32.ge_u if - i32.const 1360 - i32.const 1424 + i32.const 1472 + i32.const 1536 i32.const 104 i32.const 42 call $~lib/builtins/abort unreachable end - i32.const 1204 + i32.const 1268 i32.load local.get $0 i32.const 2 @@ -674,18 +684,18 @@ ) (func $~lib/array/Array#__get (param $0 i32) (result f64) local.get $0 - i32.const 1276 + i32.const 1372 i32.load i32.ge_u if - i32.const 1360 - i32.const 1424 + i32.const 1472 + i32.const 1536 i32.const 104 i32.const 42 call $~lib/builtins/abort unreachable end - i32.const 1268 + i32.const 1364 i32.load local.get $0 i32.const 3 @@ -694,13 +704,13 @@ f64.load ) (func $start:std/static-array - i32.const 1084 + i32.const 1100 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -712,7 +722,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -724,27 +734,27 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1552 + i32.const 1676 global.set $~lib/rt/stub/offset i32.const 0 - i32.const 1084 + i32.const 1100 i32.load i32.ge_u if - i32.const 1072 + i32.const 1088 i32.const 2 call $~lib/array/ensureSize - i32.const 1084 + i32.const 1100 i32.const 1 i32.store end - i32.const 1076 + i32.const 1092 i32.load i32.const 2 i32.store @@ -754,19 +764,19 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1148 + i32.const 1196 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -778,7 +788,7 @@ i64.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -790,25 +800,25 @@ i64.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1148 + i32.const 1196 i32.load i32.ge_u if - i32.const 1136 + i32.const 1184 i32.const 3 call $~lib/array/ensureSize - i32.const 1148 + i32.const 1196 i32.const 1 i32.store end - i32.const 1140 + i32.const 1188 i32.load i64.const 4 i64.store @@ -818,19 +828,19 @@ i64.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1212 + i32.const 1276 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -842,7 +852,7 @@ f32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -854,25 +864,25 @@ f32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1212 + i32.const 1276 i32.load i32.ge_u if - i32.const 1200 + i32.const 1264 i32.const 2 call $~lib/array/ensureSize - i32.const 1212 + i32.const 1276 i32.const 1 i32.store end - i32.const 1204 + i32.const 1268 i32.load f32.const 2.5 f32.store @@ -882,19 +892,19 @@ f32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1276 + i32.const 1372 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -906,7 +916,7 @@ f64.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -918,25 +928,25 @@ f64.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1276 + i32.const 1372 i32.load i32.ge_u if - i32.const 1264 + i32.const 1360 i32.const 3 call $~lib/array/ensureSize - i32.const 1276 + i32.const 1372 i32.const 1 i32.store end - i32.const 1268 + i32.const 1364 i32.load f64.const 2.25 f64.store @@ -946,7 +956,7 @@ f64.ne if i32.const 0 - i32.const 1296 + i32.const 1408 i32.const 28 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 40be734cf3..dbc707d6cc 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -13,28 +13,28 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 48) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 80) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 112) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00`\00\00\00`\00\00\00\10\00\00\00\02\00\00\00") - (data (i32.const 144) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 176) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\a0\00\00\00\a0\00\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 208) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@") - (data (i32.const 240) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\e0\00\00\00\e0\00\00\00\10\00\00\00\02\00\00\00") - (data (i32.const 272) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 400) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 448) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 496) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 44) "\10\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 92) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 140) "\10\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\00\00\00p\00\00\00\10\00\00\00\02\00\00\00") + (data (i32.const 188) "\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") + (data (i32.const 220) "\10\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\d0\00\00\00\d0\00\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 268) "\10\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@") + (data (i32.const 316) "\10\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00 \01\00\00 \01\00\00\10\00\00\00\02\00\00\00") + (data (i32.const 364) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 428) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 492) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 588) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") (table $0 1 funcref) (global $std/static-array/i i32 (i32.const 64)) - (global $std/static-array/I i32 (i32.const 128)) - (global $std/static-array/f i32 (i32.const 192)) - (global $std/static-array/F i32 (i32.const 256)) + (global $std/static-array/I i32 (i32.const 160)) + (global $std/static-array/f i32 (i32.const 240)) + (global $std/static-array/F i32 (i32.const 336)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 544)) + (global $~lib/heap/__heap_base i32 (i32.const 640)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) @@ -57,8 +57,8 @@ i32.load offset=12 i32.ge_u if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -72,6 +72,19 @@ drop local.get $2 ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -83,6 +96,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -126,59 +149,32 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 + local.get $3 + i32.store local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) @@ -1455,34 +1451,19 @@ i32.eqz if i32.const 0 - i32.const 512 - i32.const 41 + i32.const 608 + i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $2 local.get $2 i32.load local.set $3 - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 512 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $3 i32.add @@ -1490,12 +1471,7 @@ i32.eq local.set $4 local.get $1 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + call $~lib/rt/stub/computeSize local.set $5 local.get $1 local.get $3 @@ -1504,7 +1480,7 @@ local.get $4 if local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable @@ -1527,18 +1503,15 @@ local.get $7 i32.gt_u select - local.get $2 - i32.load offset=8 call $~lib/rt/stub/__alloc local.set $6 local.get $6 local.get $0 - local.get $2 - i32.load offset=12 + local.get $3 call $~lib/memory/memory.copy local.get $6 local.tee $0 - i32.const 16 + i32.const 4 i32.sub local.set $2 end @@ -1554,10 +1527,52 @@ i32.store end end + local.get $0 + ) + (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 local.get $2 + i32.load offset=12 + local.set $3 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 local.get $1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $4 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $3 i32.store offset=12 - local.get $0 + local.get $2 + local.get $1 + i32.store offset=16 + local.get $4 + i32.const 16 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1787,13 +1802,13 @@ i32.gt_u if local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 464 - i32.const 416 + i32.const 560 + i32.const 512 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -1808,7 +1823,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/stub/__realloc + call $~lib/rt/stub/__renew local.set $6 local.get $6 local.get $3 @@ -1856,8 +1871,8 @@ i32.const 0 i32.lt_s if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -1900,8 +1915,8 @@ i32.load offset=12 i32.ge_u if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -1937,8 +1952,8 @@ i32.const 0 i32.lt_s if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -1981,8 +1996,8 @@ i32.load offset=12 i32.ge_u if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -2018,8 +2033,8 @@ i32.const 0 i32.lt_s if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -2062,8 +2077,8 @@ i32.load offset=12 i32.ge_u if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -2099,8 +2114,8 @@ i32.const 0 i32.lt_s if - i32.const 352 - i32.const 416 + i32.const 448 + i32.const 512 i32.const 120 i32.const 22 call $~lib/builtins/abort @@ -2133,7 +2148,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -2147,7 +2162,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -2161,19 +2176,23 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -2189,7 +2208,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -2202,7 +2221,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -2216,7 +2235,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -2230,7 +2249,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -2248,7 +2267,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2261,7 +2280,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2275,7 +2294,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2289,7 +2308,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -2307,7 +2326,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2320,7 +2339,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2334,7 +2353,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -2348,7 +2367,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -2366,7 +2385,7 @@ i32.eqz if i32.const 0 - i32.const 288 + i32.const 384 i32.const 28 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index e3d158eb71..8786b6a8b3 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -1,35 +1,34 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1056) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1120) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1184) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1248) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1280) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") - (data (i32.const 1312) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1360) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1424) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\0c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1068) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1132) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1196) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1260) "\0c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1292) "\0c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") + (data (i32.const 1324) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1388) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1452) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.shr_u ) @@ -39,8 +38,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 1072 - i32.const 1136 + i32.const 1088 + i32.const 1152 i32.const 95 i32.const 41 call $~lib/builtins/abort @@ -59,8 +58,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 1072 - i32.const 1136 + i32.const 1088 + i32.const 1152 i32.const 110 i32.const 41 call $~lib/builtins/abort @@ -83,8 +82,8 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 277 + i32.const 1472 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -93,18 +92,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1328 - i32.const 279 + i32.const 1472 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -146,28 +145,28 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 292 + i32.const 1472 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -238,8 +237,8 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 205 + i32.const 1472 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -252,14 +251,14 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 207 + i32.const 1472 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -275,14 +274,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -297,7 +296,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -325,8 +324,8 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 228 + i32.const 1472 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -334,14 +333,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -370,33 +369,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1328 - i32.const 243 + i32.const 1472 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1328 - i32.const 244 + i32.const 1472 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -443,8 +442,8 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 260 + i32.const 1472 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -462,15 +461,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -508,54 +507,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1328 - i32.const 386 - i32.const 5 + i32.const 1472 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1328 - i32.const 396 + i32.const 1472 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -571,18 +568,17 @@ i32.lt_u if i32.const 0 - i32.const 1328 - i32.const 408 + i32.const 1472 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -592,23 +588,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -619,93 +616,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1504 + i32.const 0 + i32.store + i32.const 3072 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1504 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1472 - local.set $1 - i32.const 1472 - i32.const 0 - i32.store - i32.const 3040 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1472 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1472 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1504 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1472 - i32.const 3056 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1472 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1504 + i32.const 3076 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1504 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -731,7 +719,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -762,8 +750,8 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 338 + i32.const 1472 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -814,8 +802,8 @@ i32.eqz if i32.const 0 - i32.const 1328 - i32.const 351 + i32.const 1472 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -843,12 +831,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1328 - i32.const 365 + i32.const 1472 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -859,7 +849,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -871,12 +861,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -891,7 +881,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -911,169 +901,179 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1328 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1376 - i32.const 1328 + i32.const 1344 + i32.const 1472 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 12 local.get $1 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u select - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1328 - i32.const 520 + i32.const 1472 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1250,10 +1250,10 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $1 local.get $2 if @@ -1268,11 +1268,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1472 + i32.const 1504 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1287,7 +1287,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1408 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1304,7 +1304,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 1408 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1316,112 +1316,112 @@ (func $std/staticarray/test (result i32) i32.const 12 i32.const 3 - i32.const 1296 - call $~lib/rt/__allocBuffer + i32.const 1312 + call $~lib/rt/__newBuffer call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1472 + i32.const 1504 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end ) (func $start:std/staticarray (local $0 i32) - i32.const 1040 + i32.const 1056 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 call $~lib/staticarray/StaticArray#get:length i32.const 3 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 i32.const 4 call $~lib/staticarray/StaticArray#__set - i32.const 1040 + i32.const 1056 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 4 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1032 + i32.const 1048 i32.load i32.const 3 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1264 + i32.const 1280 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1264 + i32.const 1280 call $~lib/staticarray/StaticArray#get:length i32.const 3 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1264 + i32.const 1280 i32.const 4 call $~lib/staticarray/StaticArray#__set - i32.const 1264 + i32.const 1280 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 4 i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -1436,7 +1436,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -1449,7 +1449,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -1462,7 +1462,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -1474,7 +1474,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -1490,7 +1490,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1507,7 +1507,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -1516,18 +1516,18 @@ i32.const 8 i32.const 5 i32.const 0 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer call $~lib/rt/pure/__retain local.tee $0 i32.const 0 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 0 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 @@ -1569,7 +1569,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 1408 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1584,7 +1584,7 @@ block $switch$1$case$7 block $switch$1$case$4 local.get $0 - i32.const 16 + i32.const 20 i32.add local.tee $2 i32.const 8 @@ -1604,9 +1604,9 @@ local.get $2 local.tee $1 local.get $1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.add local.set $2 loop $while-continue|0 @@ -1637,7 +1637,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 1408 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1658,7 +1658,7 @@ i32.le_u if i32.const 0 - i32.const 1440 + i32.const 1408 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -1677,13 +1677,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 1472 + i32.const 1504 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index fa72c911d7..719e87bf77 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -1,4 +1,4 @@ -import { BLOCK_OVERHEAD, BLOCK } from "rt/common"; +import { OBJECT, TOTAL_OVERHEAD } from "rt/common"; // from contextual type const arr1: StaticArray = [1,2,3]; @@ -6,7 +6,7 @@ assert(arr1[1] == 2); assert(arr1.length == 3); arr1[1] = 4; assert(arr1[1] == 4); -assert(changetype(changetype(arr1) - BLOCK_OVERHEAD).rtId == idof>()); +assert(changetype(changetype(arr1) - TOTAL_OVERHEAD).rtId == idof>()); // from assertion const arr2 = [1,2,3] as StaticArray; diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index c78d2bd2dc..3182a99fba 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -1,42 +1,40 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 48) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 176) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 240) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 272) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") - (data (i32.const 304) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 352) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 416) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 44) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 108) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 172) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 236) "\0c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 268) "\0c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") + (data (i32.const 300) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 364) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 428) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $std/staticarray/arr1 i32 (i32.const 32)) (global $std/staticarray/arr2 i32 (i32.const 256)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 464)) + (global $~lib/heap/__heap_base i32 (i32.const 480)) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 2 i32.shr_u ) @@ -121,8 +119,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 277 + i32.const 448 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -136,11 +134,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -148,8 +146,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 279 + i32.const 448 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -202,29 +200,29 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 292 + i32.const 448 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -334,8 +332,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 205 + i32.const 448 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -351,8 +349,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 207 + i32.const 448 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -360,7 +358,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -382,7 +380,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -392,7 +390,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -409,7 +407,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -446,8 +444,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 228 + i32.const 448 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -457,7 +455,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -467,7 +465,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -499,11 +497,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -511,8 +509,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 243 + i32.const 448 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -520,7 +518,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -529,8 +527,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 244 + i32.const 448 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -588,8 +586,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 260 + i32.const 448 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -613,15 +611,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -690,31 +688,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 320 - i32.const 386 - i32.const 5 + i32.const 448 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -728,14 +728,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 320 - i32.const 396 + i32.const 448 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -767,8 +767,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 408 + i32.const 448 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -779,10 +779,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -790,9 +790,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -808,15 +808,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -835,7 +835,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -848,127 +848,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -976,49 +995,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 368 i32.const 320 + i32.const 448 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1041,7 +1035,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1095,8 +1089,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 338 + i32.const 448 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1160,8 +1154,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 351 + i32.const 448 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1217,7 +1211,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1235,11 +1229,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1303,14 +1297,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 320 - i32.const 365 + i32.const 448 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1324,8 +1320,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1337,14 +1333,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1363,7 +1359,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1375,7 +1371,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1392,136 +1388,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 448 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 320 - i32.const 520 + i32.const 448 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -2778,11 +2755,11 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $2 if @@ -2814,7 +2791,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 384 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2837,7 +2814,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 384 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -2850,7 +2827,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -2861,7 +2838,7 @@ i32.const 12 i32.const 3 i32.const 288 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) @@ -2870,7 +2847,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2881,7 +2858,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2936,9 +2913,9 @@ unreachable end global.get $std/staticarray/arr1 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=8 + i32.load offset=12 i32.const 3 i32.eq i32.eqz @@ -3093,7 +3070,7 @@ i32.const 8 i32.const 5 i32.const 0 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer call $~lib/rt/pure/__retain local.set $0 local.get $0 @@ -3138,18 +3115,10 @@ (func $~start call $start:std/staticarray ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3188,7 +3157,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 384 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3199,7 +3168,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -3214,7 +3183,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 384 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3231,7 +3200,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 384 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3269,14 +3238,14 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 384 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) @@ -3295,9 +3264,9 @@ local.set $2 local.get $2 local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.add local.set $3 loop $while-continue|0 diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 877130baff..63d3d24289 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1,312 +1,310 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1088) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1136) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1200) "0\03\00\00\01\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") - (data (i32.const 2032) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") - (data (i32.const 2655) "$++++++++\01\00TVVVVVVVV") - (data (i32.const 2694) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") - (data (i32.const 3203) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") - (data (i32.const 3289) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") - (data (i32.const 3448) "\0cl\00\00\00\00\00\06") - (data (i32.const 3494) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") - (data (i32.const 3945) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") - (data (i32.const 4010) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") - (data (i32.const 4123) "H") - (data (i32.const 4133) "*++++++++++++++++++++++++++") - (data (i32.const 4193) "++++++++\07\00HVVVVVVVV\02") - (data (i32.const 4268) "+++++++++++++UVVVVVVVVVVVV\0e") - (data (i32.const 4326) "$+++++++++++\07\00VVVVVVVVVVVV") - (data (i32.const 4396) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") - (data (i32.const 4493) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4547) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4612) "+++++++++++UVVVVVVVVVV\0e") - (data (i32.const 4701) "\08\00\00V\01\00\009") - (data (i32.const 4716) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 5673) "\06\'Qow") - (data (i32.const 5688) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") - (data (i32.const 5716) "\b4\c4") - (data (i32.const 5838) "\c6\c9\00\00\00\db") - (data (i32.const 5927) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") - (data (i32.const 5952) "\e7") - (data (i32.const 6038) "\ea") - (data (i32.const 6161) "\ed") - (data (i32.const 6184) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data (i32.const 6592) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") - (data (i32.const 6658) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 7202) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") - (data (i32.const 7288) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") - (data (i32.const 7346) "\f8\03") - (data (i32.const 7373) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") - (data (i32.const 7420) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") - (data (i32.const 7446) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") - (data (i32.const 7484) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") - (data (i32.const 7656) "\f2\07\c0\7f") - (data (i32.const 7672) "\f2\1f@?") - (data (i32.const 7685) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") - (data (i32.const 7719) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") - (data (i32.const 7745) "\10") - (data (i32.const 7757) "\e0") - (data (i32.const 7780) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") - (data (i32.const 7846) "\87\01\04\0e") - (data (i32.const 7876) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") - (data (i32.const 7964) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") - (data (i32.const 8025) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") - (data (i32.const 8081) "0") - (data (i32.const 8095) "\80\03") - (data (i32.const 8111) "\80\00\80") - (data (i32.const 8126) "\ff\ff\ff\ff\00\00\00\00\00\80") - (data (i32.const 8162) " \00\00\00\00<>\08") - (data (i32.const 8181) "~") - (data (i32.const 8193) "p\00\00 ") - (data (i32.const 8257) "?\00\10") - (data (i32.const 8271) "\80\f7\bf\00\00\00\f0") - (data (i32.const 8288) "\03\00\ff\ff\ff\ff\03") - (data (i32.const 8304) "\01\00\00\07") - (data (i32.const 8321) "\03D\08\00\00`\10") - (data (i32.const 8346) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") - (data (i32.const 8429) "\f8\00\0e") - (data (i32.const 8446) " !\00\00\00\00\00@") - (data (i32.const 8472) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") - (data (i32.const 8513) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") - (data (i32.const 8577) " ") - (data (i32.const 8606) "\01") - (data (i32.const 8624) "\c0\07") - (data (i32.const 8642) "n\f0\00\00\00\00\00\87") - (data (i32.const 8670) "`\00\00\00\00\00\00\00\f0") - (data (i32.const 8727) "\18") - (data (i32.const 8746) "\c0\ff\01") - (data (i32.const 8770) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") - (data (i32.const 8839) "\80\d3@") - (data (i32.const 8861) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") - (data (i32.const 8905) "\ff\\\00\00@") - (data (i32.const 8920) "\f8\85\0d") - (data (i32.const 8952) "<\b0\01\00\000") - (data (i32.const 8968) "\f8\a7\01") - (data (i32.const 8983) "(\bf") - (data (i32.const 8997) "\e0\bc\0f") - (data (i32.const 9031) "\80\ff\06") - (data (i32.const 9065) "X\08") - (data (i32.const 9084) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") - (data (i32.const 9128) "\7f\bf") - (data (i32.const 9140) "\fc\ff\ff\fcm") - (data (i32.const 9160) "~\b4\bf") - (data (i32.const 9172) "\a3") - (data (i32.const 9216) "\18\00\00\00\00\00\00\00\ff\01") - (data (i32.const 9280) "\1f\00\00\00\00\00\00\00\7f\00\0f") - (data (i32.const 9323) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") - (data (i32.const 9365) "`\0f") - (data (i32.const 9390) "\80\03\f8\ff\e7\0f\00\00\00<") - (data (i32.const 9418) "\1c") - (data (i32.const 9442) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") - (data (i32.const 9474) "\7f\ff\ff\f9\db\07") - (data (i32.const 9512) "\ff?") - (data (i32.const 9567) "\f0") - (data (i32.const 9596) "\7f") - (data (i32.const 9610) "\f0\0f") - (data (i32.const 9665) "\f8") - (data (i32.const 9666) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 10210) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") - (data (i32.const 10346) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") - (data (i32.const 10454) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") - (data (i32.const 10486) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") - (data (i32.const 10514) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") - (data (i32.const 10608) "\02\80\00\00\ff\1f") - (data (i32.const 10626) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") - (data (i32.const 10680) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") - (data (i32.const 10762) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") - (data (i32.const 10790) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") - (data (i32.const 10886) "\fe\ff\ff\07\fe\ff\ff\07") - (data (i32.const 10914) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 10936) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") - (data (i32.const 10962) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") - (data (i32.const 10998) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11018) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11042) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") - (data (i32.const 11208) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") - (data (i32.const 11248) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") - (data (i32.const 11296) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") - (data (i32.const 11344) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11392) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11440) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 11536) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") - (data (i32.const 11632) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 11728) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 11792) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") - (data (i32.const 11856) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 11920) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12016) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") - (data (i32.const 12112) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12208) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") - (data (i32.const 12304) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") - (data (i32.const 12400) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") - (data (i32.const 12496) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data (i32.const 12560) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data (i32.const 12624) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") - (data (i32.const 12688) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") - (data (i32.const 12768) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data (i32.const 12832) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data (i32.const 12896) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") - (data (i32.const 12976) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") - (data (i32.const 13056) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13120) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data (i32.const 13248) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data (i32.const 13312) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13392) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13472) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") - (data (i32.const 13552) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") - (data (i32.const 13632) "\80\00\00\00\01\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 13776) "\80\00\00\00\01\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 13920) "\80\00\00\00\01\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 14064) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df") - (data (i32.const 14096) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00S") - (data (i32.const 14128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\01") - (data (i32.const 14160) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 14192) "\ae\00\00\00\01\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data (i32.const 14384) "\b2\00\00\00\01\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data (i32.const 14592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00s\00s") - (data (i32.const 14624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 14656) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00f\00i") - (data (i32.const 14688) "\b8\00\00\00\01\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data (i32.const 14896) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 14944) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 14976) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 15008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 15040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 15072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 15104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 15136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 15168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\a3\03") - (data (i32.const 15200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\c3\03") - (data (i32.const 15232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") - (data (i32.const 15264) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") - (data (i32.const 15296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\a3\03 ") - (data (i32.const 15328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\c3\03 ") - (data (i32.const 15360) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 ") - (data (i32.const 15392) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 ") - (data (i32.const 15424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 ") - (data (i32.const 15456) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 ") - (data (i32.const 15488) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n") - (data (i32.const 15520) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n") - (data (i32.const 15552) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") - (data (i32.const 15584) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") - (data (i32.const 15616) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b") - (data (i32.const 15648) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b") - (data (i32.const 15680) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 ") - (data (i32.const 15712) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 ") - (data (i32.const 15744) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 ") - (data (i32.const 15776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 ") - (data (i32.const 15808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 ") - (data (i32.const 15840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 ") - (data (i32.const 15872) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 ") - (data (i32.const 15904) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 ") - (data (i32.const 15936) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") - (data (i32.const 15968) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") - (data (i32.const 16000) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-") - (data (i32.const 16032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-") - (data (i32.const 16064) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") - (data (i32.const 16096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") - (data (i32.const 16128) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") - (data (i32.const 16160) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") - (data (i32.const 16192) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data (i32.const 16224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data (i32.const 16256) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") - (data (i32.const 16288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") - (data (i32.const 16320) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data (i32.const 16352) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data (i32.const 16384) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data (i32.const 16416) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data (i32.const 16448) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") - (data (i32.const 16480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") - (data (i32.const 16512) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data (i32.const 16544) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data (i32.const 16576) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B") - (data (i32.const 16608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data (i32.const 16640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data (i32.const 16672) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b") - (data (i32.const 16704) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b") - (data (i32.const 16736) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") - (data (i32.const 16768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") - (data (i32.const 16800) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") - (data (i32.const 16832) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") - (data (i32.const 16864) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") - (data (i32.const 16896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") - (data (i32.const 16928) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data (i32.const 16960) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data (i32.const 16992) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data (i32.const 17024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data (i32.const 17056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") - (data (i32.const 17088) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") - (data (i32.const 17120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data (i32.const 17152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data (i32.const 17184) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") - (data (i32.const 17216) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") - (data (i32.const 17248) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") - (data (i32.const 17280) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") - (data (i32.const 17312) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") - (data (i32.const 17344) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") - (data (i32.const 17376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\fb") - (data (i32.const 17408) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00F") - (data (i32.const 17440) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00I") - (data (i32.const 17472) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\02\fb") - (data (i32.const 17504) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00L") - (data (i32.const 17536) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\fb") - (data (i32.const 17568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00I") - (data (i32.const 17600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\04\fb") - (data (i32.const 17632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00L") - (data (i32.const 17664) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\05\fb") - (data (i32.const 17696) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00T") - (data (i32.const 17728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\06\fb") - (data (i32.const 17760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f0\01") - (data (i32.const 17792) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") - (data (i32.const 17824) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\96\1e") - (data (i32.const 17856) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\001\03") - (data (i32.const 17888) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\97\1e") - (data (i32.const 17920) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") - (data (i32.const 17952) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\98\1e") - (data (i32.const 17984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") - (data (i32.const 18016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\99\1e") - (data (i32.const 18048) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") - (data (i32.const 18080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\9a\1e") - (data (i32.const 18112) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 18144) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") - (data (i32.const 18224) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18288) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 18416) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 18480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 18512) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 18608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 18640) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18704) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") - (data (i32.const 18784) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18848) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 1040) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1132) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1196) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1260) "0\03\00\00\01\00\00\00\00\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") + (data (i32.const 2096) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") + (data (i32.const 2719) "$++++++++\01\00TVVVVVVVV") + (data (i32.const 2758) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") + (data (i32.const 3267) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") + (data (i32.const 3353) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") + (data (i32.const 3512) "\0cl\00\00\00\00\00\06") + (data (i32.const 3558) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") + (data (i32.const 4009) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") + (data (i32.const 4074) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") + (data (i32.const 4187) "H") + (data (i32.const 4197) "*++++++++++++++++++++++++++") + (data (i32.const 4257) "++++++++\07\00HVVVVVVVV\02") + (data (i32.const 4332) "+++++++++++++UVVVVVVVVVVVV\0e") + (data (i32.const 4390) "$+++++++++++\07\00VVVVVVVVVVVV") + (data (i32.const 4460) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") + (data (i32.const 4557) "*++++++++++VVVVVVVVVV\0e") + (data (i32.const 4611) "*++++++++++VVVVVVVVVV\0e") + (data (i32.const 4676) "+++++++++++UVVVVVVVVVV\0e") + (data (i32.const 4765) "\08\00\00V\01\00\009") + (data (i32.const 4780) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data (i32.const 5737) "\06\'Qow") + (data (i32.const 5752) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") + (data (i32.const 5780) "\b4\c4") + (data (i32.const 5902) "\c6\c9\00\00\00\db") + (data (i32.const 5991) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") + (data (i32.const 6016) "\e7") + (data (i32.const 6102) "\ea") + (data (i32.const 6225) "\ed") + (data (i32.const 6248) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data (i32.const 6652) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") + (data (i32.const 6722) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") + (data (i32.const 7266) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") + (data (i32.const 7352) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") + (data (i32.const 7410) "\f8\03") + (data (i32.const 7437) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") + (data (i32.const 7484) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") + (data (i32.const 7510) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") + (data (i32.const 7548) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") + (data (i32.const 7720) "\f2\07\c0\7f") + (data (i32.const 7736) "\f2\1f@?") + (data (i32.const 7749) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") + (data (i32.const 7783) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") + (data (i32.const 7809) "\10") + (data (i32.const 7821) "\e0") + (data (i32.const 7844) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") + (data (i32.const 7910) "\87\01\04\0e") + (data (i32.const 7940) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") + (data (i32.const 8028) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") + (data (i32.const 8089) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") + (data (i32.const 8145) "0") + (data (i32.const 8159) "\80\03") + (data (i32.const 8175) "\80\00\80") + (data (i32.const 8190) "\ff\ff\ff\ff\00\00\00\00\00\80") + (data (i32.const 8226) " \00\00\00\00<>\08") + (data (i32.const 8245) "~") + (data (i32.const 8257) "p\00\00 ") + (data (i32.const 8321) "?\00\10") + (data (i32.const 8335) "\80\f7\bf\00\00\00\f0") + (data (i32.const 8352) "\03\00\ff\ff\ff\ff\03") + (data (i32.const 8368) "\01\00\00\07") + (data (i32.const 8385) "\03D\08\00\00`\10") + (data (i32.const 8410) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") + (data (i32.const 8493) "\f8\00\0e") + (data (i32.const 8510) " !\00\00\00\00\00@") + (data (i32.const 8536) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") + (data (i32.const 8577) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") + (data (i32.const 8641) " ") + (data (i32.const 8670) "\01") + (data (i32.const 8688) "\c0\07") + (data (i32.const 8706) "n\f0\00\00\00\00\00\87") + (data (i32.const 8734) "`\00\00\00\00\00\00\00\f0") + (data (i32.const 8791) "\18") + (data (i32.const 8810) "\c0\ff\01") + (data (i32.const 8834) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") + (data (i32.const 8903) "\80\d3@") + (data (i32.const 8925) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") + (data (i32.const 8969) "\ff\\\00\00@") + (data (i32.const 8984) "\f8\85\0d") + (data (i32.const 9016) "<\b0\01\00\000") + (data (i32.const 9032) "\f8\a7\01") + (data (i32.const 9047) "(\bf") + (data (i32.const 9061) "\e0\bc\0f") + (data (i32.const 9095) "\80\ff\06") + (data (i32.const 9129) "X\08") + (data (i32.const 9148) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") + (data (i32.const 9192) "\7f\bf") + (data (i32.const 9204) "\fc\ff\ff\fcm") + (data (i32.const 9224) "~\b4\bf") + (data (i32.const 9236) "\a3") + (data (i32.const 9280) "\18\00\00\00\00\00\00\00\ff\01") + (data (i32.const 9344) "\1f\00\00\00\00\00\00\00\7f\00\0f") + (data (i32.const 9387) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") + (data (i32.const 9429) "`\0f") + (data (i32.const 9454) "\80\03\f8\ff\e7\0f\00\00\00<") + (data (i32.const 9482) "\1c") + (data (i32.const 9506) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") + (data (i32.const 9538) "\7f\ff\ff\f9\db\07") + (data (i32.const 9576) "\ff?") + (data (i32.const 9631) "\f0") + (data (i32.const 9660) "\7f") + (data (i32.const 9674) "\f0\0f") + (data (i32.const 9729) "\f8") + (data (i32.const 9730) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") + (data (i32.const 10274) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") + (data (i32.const 10410) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") + (data (i32.const 10518) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") + (data (i32.const 10550) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") + (data (i32.const 10578) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") + (data (i32.const 10672) "\02\80\00\00\ff\1f") + (data (i32.const 10690) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") + (data (i32.const 10744) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") + (data (i32.const 10826) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") + (data (i32.const 10854) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") + (data (i32.const 10950) "\fe\ff\ff\07\fe\ff\ff\07") + (data (i32.const 10978) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11000) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") + (data (i32.const 11026) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") + (data (i32.const 11062) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11082) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11106) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") + (data (i32.const 11272) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") + (data (i32.const 11308) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") + (data (i32.const 11356) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") + (data (i32.const 11404) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11452) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11500) "J\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data (i32.const 11596) "J\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") + (data (i32.const 11692) "J\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data (i32.const 11788) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data (i32.const 11852) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") + (data (i32.const 11916) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data (i32.const 11980) "D\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data (i32.const 12076) "D\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") + (data (i32.const 12172) "D\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data (i32.const 12268) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") + (data (i32.const 12364) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") + (data (i32.const 12460) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") + (data (i32.const 12556) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") + (data (i32.const 12636) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") + (data (i32.const 12716) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") + (data (i32.const 12796) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") + (data (i32.const 12876) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data (i32.const 12940) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data (i32.const 13004) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") + (data (i32.const 13084) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") + (data (i32.const 13164) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 13244) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 13324) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") + (data (i32.const 13388) "*\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") + (data (i32.const 13452) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 13532) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 13612) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") + (data (i32.const 13692) ":\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") + (data (i32.const 13772) "\80\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 13932) "\80\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 14092) "\80\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 14252) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df") + (data (i32.const 14284) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00S") + (data (i32.const 14316) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\01") + (data (i32.const 14348) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") + (data (i32.const 14380) "\ae\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") + (data (i32.const 14588) "\b2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") + (data (i32.const 14796) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00s\00s") + (data (i32.const 14828) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\fb") + (data (i32.const 14860) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00f\00i") + (data (i32.const 14892) "\b8\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") + (data (i32.const 15100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 15148) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") + (data (i32.const 15180) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\88\1f") + (data (i32.const 15212) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\80\1f") + (data (i32.const 15244) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\8f\1f") + (data (i32.const 15276) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\87\1f") + (data (i32.const 15308) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fc\1f") + (data (i32.const 15340) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f3\1f") + (data (i32.const 15372) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\a3\03") + (data (i32.const 15404) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c3\03") + (data (i32.const 15436) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") + (data (i32.const 15468) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") + (data (i32.const 15500) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a3\03 ") + (data (i32.const 15532) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\c3\03 ") + (data (i32.const 15564) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 ") + (data (i32.const 15596) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 ") + (data (i32.const 15628) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 ") + (data (i32.const 15660) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 ") + (data (i32.const 15692) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n") + (data (i32.const 15724) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n") + (data (i32.const 15756) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") + (data (i32.const 15788) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") + (data (i32.const 15820) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b") + (data (i32.const 15852) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b") + (data (i32.const 15884) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 ") + (data (i32.const 15916) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 ") + (data (i32.const 15948) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 ") + (data (i32.const 15980) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 ") + (data (i32.const 16012) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 ") + (data (i32.const 16044) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 ") + (data (i32.const 16076) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 ") + (data (i32.const 16108) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 ") + (data (i32.const 16140) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") + (data (i32.const 16172) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") + (data (i32.const 16204) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-") + (data (i32.const 16236) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-") + (data (i32.const 16268) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") + (data (i32.const 16300) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") + (data (i32.const 16332) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data (i32.const 16364) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data (i32.const 16396) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data (i32.const 16428) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data (i32.const 16460) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") + (data (i32.const 16492) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") + (data (i32.const 16524) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data (i32.const 16556) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data (i32.const 16588) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data (i32.const 16620) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data (i32.const 16652) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") + (data (i32.const 16684) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") + (data (i32.const 16716) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data (i32.const 16748) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data (i32.const 16780) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B") + (data (i32.const 16812) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data (i32.const 16844) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data (i32.const 16876) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b") + (data (i32.const 16908) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b") + (data (i32.const 16940) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") + (data (i32.const 16972) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") + (data (i32.const 17004) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") + (data (i32.const 17036) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") + (data (i32.const 17068) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") + (data (i32.const 17100) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") + (data (i32.const 17132) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data (i32.const 17164) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data (i32.const 17196) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data (i32.const 17228) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data (i32.const 17260) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") + (data (i32.const 17292) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") + (data (i32.const 17324) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data (i32.const 17356) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data (i32.const 17388) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") + (data (i32.const 17420) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") + (data (i32.const 17452) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data (i32.const 17484) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data (i32.const 17516) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") + (data (i32.const 17548) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") + (data (i32.const 17580) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\fb") + (data (i32.const 17612) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00F") + (data (i32.const 17644) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00I") + (data (i32.const 17676) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\02\fb") + (data (i32.const 17708) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00L") + (data (i32.const 17740) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\fb") + (data (i32.const 17772) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00I") + (data (i32.const 17804) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\04\fb") + (data (i32.const 17836) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00L") + (data (i32.const 17868) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\fb") + (data (i32.const 17900) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00T") + (data (i32.const 17932) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\06\fb") + (data (i32.const 17964) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f0\01") + (data (i32.const 17996) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") + (data (i32.const 18028) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\96\1e") + (data (i32.const 18060) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00H\001\03") + (data (i32.const 18092) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\97\1e") + (data (i32.const 18124) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") + (data (i32.const 18156) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98\1e") + (data (i32.const 18188) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") + (data (i32.const 18220) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\99\1e") + (data (i32.const 18252) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") + (data (i32.const 18284) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\9a\1e") + (data (i32.const 18316) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") + (data (i32.const 18348) "@\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") + (data (i32.const 18444) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 18508) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 18636) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 18700) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 18732) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 18828) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 18860) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 18924) "@\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") + (data (i32.const 19020) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 19084) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -314,11 +312,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 18904 + i32.const 19144 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -333,7 +331,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1088 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -350,7 +348,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1088 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -372,8 +370,8 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 277 + i32.const 1216 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -382,18 +380,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1104 - i32.const 279 + i32.const 1216 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -435,28 +433,28 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 292 + i32.const 1216 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -527,8 +525,8 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 205 + i32.const 1216 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -541,14 +539,14 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 207 + i32.const 1216 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -564,14 +562,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -586,7 +584,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -614,8 +612,8 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 228 + i32.const 1216 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -623,14 +621,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -659,33 +657,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1104 - i32.const 243 + i32.const 1216 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1104 - i32.const 244 + i32.const 1216 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -732,8 +730,8 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 260 + i32.const 1216 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -751,15 +749,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -797,54 +795,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1104 - i32.const 386 - i32.const 5 + i32.const 1216 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1104 - i32.const 396 + i32.const 1216 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -860,18 +856,17 @@ i32.lt_u if i32.const 0 - i32.const 1104 - i32.const 408 + i32.const 1216 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -881,23 +876,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -908,116 +904,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 19152 + i32.const 0 + i32.store + i32.const 20720 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 19152 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 18912 - local.set $1 - i32.const 18912 - i32.const 0 - i32.store - i32.const 20480 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 18912 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 18912 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 19152 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 18912 - i32.const 20496 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 18912 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 19152 + i32.const 20724 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 19152 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if i32.const 1152 - i32.const 1104 + i32.const 1216 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -1044,7 +1032,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -1075,8 +1063,8 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 338 + i32.const 1216 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1127,8 +1115,8 @@ i32.eqz if i32.const 0 - i32.const 1104 - i32.const 351 + i32.const 1216 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1156,12 +1144,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1104 - i32.const 365 + i32.const 1216 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1172,7 +1162,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -1184,12 +1174,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1204,7 +1194,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -1224,149 +1214,158 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1104 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1104 - i32.const 520 + i32.const 1216 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 local.get $0 - local.get $3 + local.get $1 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 - local.get $4 + local.get $1 + local.get $2 call $~lib/rt/tlsf/prepareBlock - local.get $3 + local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1152 + i32.const 1088 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1380,16 +1379,16 @@ i32.const 8 i32.shr_u local.tee $2 - i32.const 5672 + i32.const 5736 i32.add i32.load8_u local.get $2 - i32.const 2032 + i32.const 2096 i32.add i32.load8_u i32.const 86 i32.mul - i32.const 2032 + i32.const 2096 i32.add local.get $0 i32.const 255 @@ -1404,7 +1403,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 4700 + i32.const 4764 i32.add i32.load i32.mul @@ -1415,7 +1414,7 @@ i32.add i32.const 2 i32.shl - i32.const 4712 + i32.const 4776 i32.add i32.load local.tee $2 @@ -1450,7 +1449,7 @@ i32.add i32.const 1 i32.shl - i32.const 6184 + i32.const 6248 i32.add i32.load8_u local.tee $6 @@ -1461,12 +1460,12 @@ i32.add i32.const 1 i32.shl - i32.const 6184 + i32.const 6248 i32.add i32.load8_u offset=1 i32.const 2 i32.shl - i32.const 4712 + i32.const 4776 i32.add i32.load local.tee $2 @@ -1511,15 +1510,48 @@ local.get $0 return end - local.get $0 - local.get $3 - i32.const 0 + local.get $0 + local.get $3 + i32.const 0 + local.get $1 + local.get $2 + i32.xor + i32.sub + i32.and + i32.add + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $2 - i32.xor - i32.sub - i32.and - i32.add ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1705,151 +1737,173 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - local.tee $4 - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load i32.const -4 i32.and - i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 18904 + i32.const 19144 i32.ge_u if local.get $0 local.get $1 call $~lib/rt/tlsf/freeBlock end - local.get $3 + local.get $2 ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - call $~lib/rt/tlsf/maybeInitialize + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1152 + i32.const 1088 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 local.get $0 i32.const 16 i32.sub + local.set $0 + local.get $1 + i32.const 16 + i32.add local.set $2 - local.get $0 - i32.const 15 - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $2 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 + if + call $~lib/rt/tlsf/initialize end - if (result i32) + local.get $0 + i32.const 19144 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $2 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz + call $~lib/rt/tlsf/moveBlock + local.set $0 else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + end end - local.get $2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1879,9 +1933,9 @@ i32.mul i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $10 - i32.const 1216 + i32.const 1280 call $~lib/string/String#get:length local.set $3 loop $for-loop|0 @@ -2008,7 +2062,7 @@ local.get $6 i32.const 1 i32.shl - i32.const 1216 + i32.const 1280 i32.add i32.load16_u local.get $2 @@ -2047,7 +2101,7 @@ local.get $1 i32.const 1 i32.shl - i32.const 1216 + i32.const 1280 i32.add local.tee $4 i32.load16_u offset=6 @@ -2156,16 +2210,16 @@ local.get $11 i32.const 1 i32.shl - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew call $~lib/rt/pure/__retain ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 18904 + i32.const 19144 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2360,7 +2414,7 @@ local.get $12 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $10 loop $for-loop|0 local.get $4 @@ -2566,7 +2620,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6658 + i32.const 6722 local.get $1 call $~lib/util/string/stagedBinaryLookup else @@ -2579,7 +2633,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9666 + i32.const 9730 local.get $1 call $~lib/util/string/stagedBinaryLookup else @@ -2671,7 +2725,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6658 + i32.const 6722 local.get $6 call $~lib/util/string/stagedBinaryLookup else @@ -2683,7 +2737,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9666 + i32.const 9730 local.get $6 call $~lib/util/string/stagedBinaryLookup else @@ -2813,7 +2867,7 @@ local.get $11 i32.const 1 i32.shl - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew call $~lib/rt/pure/__retain ) (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) @@ -2824,7 +2878,7 @@ i32.gt_u if i32.const 0 - i32.const 14912 + i32.const 15120 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -2836,7 +2890,7 @@ i32.gt_s local.tee $2 i32.shl - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $1 local.get $2 if @@ -2931,7 +2985,7 @@ local.get $0 i64.eqz if - i32.const 18496 + i32.const 18720 return end local.get $0 @@ -2983,7 +3037,7 @@ local.tee $2 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $4 local.set $3 loop $do-continue|0 @@ -3058,7 +3112,7 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $4 local.set $2 loop $do-continue|00 @@ -3102,7 +3156,7 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $2 - i32.const 18624 + i32.const 18848 local.get $2 select local.set $3 @@ -3114,13 +3168,13 @@ i32.eqz if local.get $0 - i32.const 18624 + i32.const 18848 i32.ne if local.get $0 call $~lib/rt/pure/__release end - i32.const 18624 + i32.const 18848 local.set $0 end local.get $3 @@ -3139,11 +3193,11 @@ if local.get $0 call $~lib/rt/pure/__release - i32.const 1040 + i32.const 1056 br $__inlined_func$~lib/string/String#concat end local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.tee $1 local.get $3 @@ -3264,399 +3318,399 @@ (local $96 i32) (local $97 i32) (local $98 i32) - i32.const 1040 + i32.const 1056 call $~lib/string/String#toUpperCase local.tee $13 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 call $~lib/string/String#toLowerCase local.tee $14 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11264 + i32.const 11328 call $~lib/string/String#toUpperCase local.tee $15 - i32.const 11312 + i32.const 11376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11360 + i32.const 11424 call $~lib/string/String#toLowerCase local.tee $16 - i32.const 11408 + i32.const 11472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11456 + i32.const 11520 call $~lib/string/String#toUpperCase local.tee $17 - i32.const 11552 + i32.const 11616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11552 + i32.const 11616 call $~lib/string/String#toLowerCase local.tee $18 - i32.const 11648 + i32.const 11712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11744 + i32.const 11808 call $~lib/string/String#toUpperCase local.tee $19 - i32.const 11808 + i32.const 11872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11808 + i32.const 11872 call $~lib/string/String#toLowerCase local.tee $20 - i32.const 11872 + i32.const 11936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11936 + i32.const 12000 call $~lib/string/String#toUpperCase local.tee $21 - i32.const 12032 + i32.const 12096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12032 + i32.const 12096 call $~lib/string/String#toLowerCase local.tee $22 - i32.const 12128 + i32.const 12192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12224 + i32.const 12288 call $~lib/string/String#toUpperCase local.tee $23 - i32.const 12320 + i32.const 12384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12320 + i32.const 12384 call $~lib/string/String#toLowerCase local.tee $24 - i32.const 12416 + i32.const 12480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12512 + i32.const 12576 call $~lib/string/String#toUpperCase local.tee $25 - i32.const 12576 + i32.const 12656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12640 + i32.const 12736 call $~lib/string/String#toUpperCase local.tee $26 - i32.const 12704 + i32.const 12816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12784 + i32.const 12896 call $~lib/string/String#toUpperCase local.tee $27 - i32.const 12848 + i32.const 12960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12912 + i32.const 13024 call $~lib/string/String#toUpperCase local.tee $28 - i32.const 12992 + i32.const 13104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13072 + i32.const 13184 call $~lib/string/String#toUpperCase local.tee $29 - i32.const 13136 + i32.const 13264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13200 + i32.const 13344 call $~lib/string/String#toUpperCase local.tee $30 - i32.const 13264 + i32.const 13408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13328 + i32.const 13472 call $~lib/string/String#toUpperCase local.tee $31 - i32.const 13408 + i32.const 13552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13488 + i32.const 13632 call $~lib/string/String#toUpperCase local.tee $32 - i32.const 13568 + i32.const 13712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13648 + i32.const 13792 call $~lib/string/String#toUpperCase local.tee $33 - i32.const 13792 + i32.const 13952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13648 + i32.const 13792 call $~lib/string/String#toLowerCase local.tee $34 - i32.const 13936 + i32.const 14112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14080 + i32.const 14272 call $~lib/string/String#toUpperCase local.tee $35 - i32.const 14112 + i32.const 14304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14144 + i32.const 14336 call $~lib/string/String#toLowerCase local.tee $36 - i32.const 14176 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14208 + i32.const 14400 call $~lib/string/String#toUpperCase local.tee $37 - i32.const 14400 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14080 + i32.const 14272 call $~lib/string/String#toUpperCase local.tee $38 call $~lib/string/String#toLowerCase local.tee $39 - i32.const 14608 + i32.const 14816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14640 + i32.const 14848 call $~lib/string/String#toUpperCase local.tee $40 call $~lib/string/String#toLowerCase local.tee $41 - i32.const 14672 + i32.const 14880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14704 + i32.const 14912 call $~lib/string/String#toUpperCase local.tee $42 call $~lib/string/String#toLowerCase local.tee $43 - i32.const 14704 + i32.const 14912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -3667,12 +3721,12 @@ local.tee $44 call $~lib/string/String#toLowerCase local.tee $45 - i32.const 14960 + i32.const 15168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -3683,726 +3737,726 @@ local.tee $46 call $~lib/string/String#toUpperCase local.tee $47 - i32.const 14960 + i32.const 15168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14992 + i32.const 15200 call $~lib/string/String#toLowerCase local.tee $48 - i32.const 15024 + i32.const 15232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15056 + i32.const 15264 call $~lib/string/String#toLowerCase local.tee $49 - i32.const 15088 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15120 + i32.const 15328 call $~lib/string/String#toLowerCase local.tee $50 - i32.const 15152 + i32.const 15360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15184 + i32.const 15392 call $~lib/string/String#toLowerCase local.tee $51 - i32.const 15216 + i32.const 15424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15248 + i32.const 15456 call $~lib/string/String#toLowerCase local.tee $52 - i32.const 15280 + i32.const 15488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15312 + i32.const 15520 call $~lib/string/String#toLowerCase local.tee $53 - i32.const 15344 + i32.const 15552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15376 + i32.const 15584 call $~lib/string/String#toLowerCase local.tee $54 - i32.const 15408 + i32.const 15616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15440 + i32.const 15648 call $~lib/string/String#toLowerCase local.tee $55 - i32.const 15472 + i32.const 15680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15504 + i32.const 15712 call $~lib/string/String#toLowerCase local.tee $56 - i32.const 15536 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15568 + i32.const 15776 call $~lib/string/String#toLowerCase local.tee $57 - i32.const 15600 + i32.const 15808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15632 + i32.const 15840 call $~lib/string/String#toLowerCase local.tee $58 - i32.const 15664 + i32.const 15872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15696 + i32.const 15904 call $~lib/string/String#toLowerCase local.tee $59 - i32.const 15728 + i32.const 15936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15760 + i32.const 15968 call $~lib/string/String#toLowerCase local.tee $60 - i32.const 15792 + i32.const 16000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15824 + i32.const 16032 call $~lib/string/String#toLowerCase local.tee $61 - i32.const 15856 + i32.const 16064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15888 + i32.const 16096 call $~lib/string/String#toLowerCase local.tee $62 - i32.const 15920 + i32.const 16128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15952 + i32.const 16160 call $~lib/string/String#toLowerCase local.tee $63 - i32.const 15984 + i32.const 16192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16016 + i32.const 16224 call $~lib/string/String#toLowerCase local.tee $64 - i32.const 16048 + i32.const 16256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16080 + i32.const 16288 call $~lib/string/String#toLowerCase local.tee $65 - i32.const 16112 + i32.const 16320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16144 + i32.const 16352 call $~lib/string/String#toLowerCase local.tee $66 - i32.const 16176 + i32.const 16384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16208 + i32.const 16416 call $~lib/string/String#toLowerCase local.tee $67 - i32.const 16240 + i32.const 16448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16272 + i32.const 16480 call $~lib/string/String#toLowerCase local.tee $68 - i32.const 16304 + i32.const 16512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16336 + i32.const 16544 call $~lib/string/String#toLowerCase local.tee $69 - i32.const 16368 + i32.const 16576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16400 + i32.const 16608 call $~lib/string/String#toLowerCase local.tee $70 - i32.const 16432 + i32.const 16640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16464 + i32.const 16672 call $~lib/string/String#toLowerCase local.tee $71 - i32.const 16496 + i32.const 16704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16528 + i32.const 16736 call $~lib/string/String#toLowerCase local.tee $72 - i32.const 16560 + i32.const 16768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16592 + i32.const 16800 call $~lib/string/String#toLowerCase local.tee $73 - i32.const 15664 + i32.const 15872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16624 + i32.const 16832 call $~lib/string/String#toLowerCase local.tee $74 - i32.const 16656 + i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16688 + i32.const 16896 call $~lib/string/String#toLowerCase local.tee $75 - i32.const 16720 + i32.const 16928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16752 + i32.const 16960 call $~lib/string/String#toLowerCase local.tee $76 - i32.const 16784 + i32.const 16992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16816 + i32.const 17024 call $~lib/string/String#toLowerCase local.tee $77 - i32.const 16848 + i32.const 17056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16880 + i32.const 17088 call $~lib/string/String#toLowerCase local.tee $78 - i32.const 16912 + i32.const 17120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16944 + i32.const 17152 call $~lib/string/String#toLowerCase local.tee $79 - i32.const 16976 + i32.const 17184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17008 + i32.const 17216 call $~lib/string/String#toLowerCase local.tee $80 - i32.const 17040 + i32.const 17248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17072 + i32.const 17280 call $~lib/string/String#toLowerCase local.tee $81 - i32.const 17104 + i32.const 17312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17136 + i32.const 17344 call $~lib/string/String#toLowerCase local.tee $82 - i32.const 17168 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17200 + i32.const 17408 call $~lib/string/String#toLowerCase local.tee $83 - i32.const 17232 + i32.const 17440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17264 + i32.const 17472 call $~lib/string/String#toLowerCase local.tee $84 - i32.const 17296 + i32.const 17504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17328 + i32.const 17536 call $~lib/string/String#toLowerCase local.tee $85 - i32.const 17360 + i32.const 17568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17392 + i32.const 17600 call $~lib/string/String#toUpperCase local.tee $86 - i32.const 17424 + i32.const 17632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14640 + i32.const 14848 call $~lib/string/String#toUpperCase local.tee $87 - i32.const 17456 + i32.const 17664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17488 + i32.const 17696 call $~lib/string/String#toUpperCase local.tee $88 - i32.const 17520 + i32.const 17728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17552 + i32.const 17760 call $~lib/string/String#toUpperCase local.tee $89 - i32.const 17584 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17616 + i32.const 17824 call $~lib/string/String#toUpperCase local.tee $90 - i32.const 17648 + i32.const 17856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17680 + i32.const 17888 call $~lib/string/String#toUpperCase local.tee $91 - i32.const 17712 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17744 + i32.const 17952 call $~lib/string/String#toUpperCase local.tee $92 - i32.const 17712 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17776 + i32.const 17984 call $~lib/string/String#toUpperCase local.tee $93 - i32.const 17808 + i32.const 18016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17840 + i32.const 18048 call $~lib/string/String#toUpperCase local.tee $94 - i32.const 17872 + i32.const 18080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17904 + i32.const 18112 call $~lib/string/String#toUpperCase local.tee $95 - i32.const 17936 + i32.const 18144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17968 + i32.const 18176 call $~lib/string/String#toUpperCase local.tee $96 - i32.const 18000 + i32.const 18208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18032 + i32.const 18240 call $~lib/string/String#toUpperCase local.tee $97 - i32.const 18064 + i32.const 18272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18096 + i32.const 18304 call $~lib/string/String#toUpperCase local.tee $98 - i32.const 18128 + i32.const 18336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6608 + i32.const 6672 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -4565,7 +4619,7 @@ local.get $3 i64.ne if - i32.const 18160 + i32.const 18368 i32.const 1 local.get $4 f64.convert_i32_s @@ -4574,7 +4628,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 18240 + i32.const 18464 local.get $3 call $~lib/util/number/utoa64 local.tee $8 @@ -4587,7 +4641,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 18656 + i32.const 18880 local.get $1 call $~lib/util/number/utoa64 local.tee $10 @@ -4613,7 +4667,7 @@ local.get $2 i64.ne if - i32.const 18720 + i32.const 18944 i32.const 1 local.get $4 f64.convert_i32_s @@ -4622,7 +4676,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 18800 + i32.const 19040 local.get $0 call $~lib/util/number/utoa64 local.tee $8 @@ -4635,7 +4689,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 18864 + i32.const 19104 local.get $2 call $~lib/util/number/utoa64 local.tee $10 @@ -4861,7 +4915,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1088 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -4875,21 +4929,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 18904 + i32.const 19144 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -4903,7 +4957,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1088 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -4918,7 +4972,7 @@ i32.le_u if i32.const 0 - i32.const 1056 + i32.const 1088 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 0a14d7d023..1b0c15a73d 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -11,7 +11,6 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -19,196 +18,194 @@ (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 80) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 128) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 192) "0\03\00\00\01\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05\00\00") - (data (i32.const 1024) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") - (data (i32.const 1152) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++\01\00TVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0cl\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00++++++++\07\00HVVVVVVVV\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++++UVVVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$+++++++++++\07\00VVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++UVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 3820) "\00\08\00\00V\01\00\009\00\00\00") - (data (i32.const 3832) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 4792) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\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 5304) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data (i32.const 5712) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 5778) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") - (data (i32.const 5906) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00?\00\10\00\00\00\00\00\00\00\00\00\00\00\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00 !\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\0d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<\b0\01\00\000\00\00\00\00\00\00\00\00\00\00\f8\a7\01\00\00\00\00\00\00\00\00\00\00\00\00(\bf\00\00\00\00\00\00\00\00\00\00\00\00\e0\bc\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00X\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\bf\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\fcm\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00~\b4\bf\00\00\00\00\00\00\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\00\00\00\00\7f\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\f8\ff\e7\0f\00\00\00<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff\00\00\00\00\00\00\00\00\00\00\7f\ff\ff\f9\db\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8") - (data (i32.const 8914) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10496) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n\00") - (data (i32.const 10544) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n\00") - (data (i32.const 10592) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t\00") - (data (i32.const 10640) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t\00") - (data (i32.const 10688) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00") - (data (i32.const 10784) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E\00") - (data (i32.const 10880) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00") - (data (i32.const 10976) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00") - (data (i32.const 11040) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!\00") - (data (i32.const 11104) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00") - (data (i32.const 11168) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00") - (data (i32.const 11264) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)\00") - (data (i32.const 11360) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00") - (data (i32.const 11456) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00") - (data (i32.const 11552) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N\00") - (data (i32.const 11648) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n\00") - (data (i32.const 11744) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data (i32.const 11808) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data (i32.const 11872) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,\00") - (data (i32.const 11936) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,\00") - (data (i32.const 12016) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data (i32.const 12080) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data (i32.const 12144) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00") - (data (i32.const 12224) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.\00") - (data (i32.const 12304) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 12368) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 12432) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data (i32.const 12496) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data (i32.const 12560) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 12640) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 12720) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!\00") - (data (i32.const 12800) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!\00") - (data (i32.const 12880) "\80\00\00\00\01\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 13024) "\80\00\00\00\01\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 13168) "\80\00\00\00\01\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 13312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df\00") - (data (i32.const 13344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00S\00") - (data (i32.const 13376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\01") - (data (i32.const 13408) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 13440) "\ae\00\00\00\01\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data (i32.const 13632) "\b2\00\00\00\01\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data (i32.const 13840) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00s\00s\00") - (data (i32.const 13872) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 13904) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00f\00i\00") - (data (i32.const 13936) "\b8\00\00\00\01\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data (i32.const 14144) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 14192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 14224) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 14256) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 14288) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 14320) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 14352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 14384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 14416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\a3\03") - (data (i32.const 14448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\c3\03") - (data (i32.const 14480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") - (data (i32.const 14512) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") - (data (i32.const 14544) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\a3\03 \00") - (data (i32.const 14576) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\c3\03 \00") - (data (i32.const 14608) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 \00") - (data (i32.const 14640) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 \00") - (data (i32.const 14672) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 \00") - (data (i32.const 14704) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 \00") - (data (i32.const 14736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n\00") - (data (i32.const 14768) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n\00") - (data (i32.const 14800) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") - (data (i32.const 14832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") - (data (i32.const 14864) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b\00") - (data (i32.const 14896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b\00") - (data (i32.const 14928) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 \00") - (data (i32.const 14960) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 \00") - (data (i32.const 14992) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 \00") - (data (i32.const 15024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 \00") - (data (i32.const 15056) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 \00") - (data (i32.const 15088) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 \00") - (data (i32.const 15120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 \00") - (data (i32.const 15152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 \00") - (data (i32.const 15184) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00") - (data (i32.const 15216) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00") - (data (i32.const 15248) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-\00") - (data (i32.const 15280) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-\00") - (data (i32.const 15312) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00") - (data (i32.const 15344) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00") - (data (i32.const 15376) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") - (data (i32.const 15408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") - (data (i32.const 15440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data (i32.const 15472) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data (i32.const 15504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") - (data (i32.const 15536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") - (data (i32.const 15568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data (i32.const 15600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data (i32.const 15632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data (i32.const 15664) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data (i32.const 15696) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") - (data (i32.const 15728) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") - (data (i32.const 15760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data (i32.const 15792) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data (i32.const 15824) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B\00") - (data (i32.const 15856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data (i32.const 15888) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data (i32.const 15920) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b\00") - (data (i32.const 15952) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b\00") - (data (i32.const 15984) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00") - (data (i32.const 16016) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00") - (data (i32.const 16048) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00") - (data (i32.const 16080) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00") - (data (i32.const 16112) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") - (data (i32.const 16144) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") - (data (i32.const 16176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data (i32.const 16208) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data (i32.const 16240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data (i32.const 16272) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data (i32.const 16304) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00") - (data (i32.const 16336) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00") - (data (i32.const 16368) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data (i32.const 16400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data (i32.const 16432) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00") - (data (i32.const 16464) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00") - (data (i32.const 16496) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") - (data (i32.const 16528) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") - (data (i32.const 16560) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00") - (data (i32.const 16592) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00") - (data (i32.const 16624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\fb") - (data (i32.const 16656) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00F\00") - (data (i32.const 16688) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00I\00") - (data (i32.const 16720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\02\fb") - (data (i32.const 16752) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00L\00") - (data (i32.const 16784) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\fb") - (data (i32.const 16816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00I\00") - (data (i32.const 16848) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\04\fb") - (data (i32.const 16880) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00L\00") - (data (i32.const 16912) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\05\fb") - (data (i32.const 16944) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00T\00") - (data (i32.const 16976) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\06\fb") - (data (i32.const 17008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f0\01") - (data (i32.const 17040) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") - (data (i32.const 17072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\96\1e") - (data (i32.const 17104) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\001\03") - (data (i32.const 17136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\97\1e") - (data (i32.const 17168) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") - (data (i32.const 17200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\98\1e") - (data (i32.const 17232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") - (data (i32.const 17264) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\99\1e") - (data (i32.const 17296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") - (data (i32.const 17328) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\9a\1e") - (data (i32.const 17360) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 17392) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00") - (data (i32.const 17472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (data (i32.const 17536) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 17664) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 17728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 17748) "0\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") - (data (i32.const 18160) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 19200) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 19296) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 19328) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (data (i32.const 19392) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00") - (data (i32.const 19472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (data (i32.const 19536) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") + (data (i32.const 12) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 44) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 108) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 172) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 236) "0\03\00\00\01\00\00\00\00\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05\00\00") + (data (i32.const 1072) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") + (data (i32.const 1200) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++\01\00TVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0cl\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00++++++++\07\00HVVVVVVVV\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++++UVVVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$+++++++++++\07\00VVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++UVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 3868) "\00\08\00\00V\01\00\009\00\00\00") + (data (i32.const 3880) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data (i32.const 4840) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\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 5352) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data (i32.const 5756) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 5826) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") + (data (i32.const 5954) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00?\00\10\00\00\00\00\00\00\00\00\00\00\00\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00 !\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\0d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<\b0\01\00\000\00\00\00\00\00\00\00\00\00\00\f8\a7\01\00\00\00\00\00\00\00\00\00\00\00\00(\bf\00\00\00\00\00\00\00\00\00\00\00\00\e0\bc\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00X\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\bf\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\fcm\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00~\b4\bf\00\00\00\00\00\00\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\00\00\00\00\7f\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\f8\ff\e7\0f\00\00\00<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff\00\00\00\00\00\00\00\00\00\00\7f\ff\ff\f9\db\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8") + (data (i32.const 8962) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10540) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n\00") + (data (i32.const 10588) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n\00") + (data (i32.const 10636) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t\00") + (data (i32.const 10684) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t\00") + (data (i32.const 10732) "J\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00") + (data (i32.const 10828) "J\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E\00") + (data (i32.const 10924) "J\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00") + (data (i32.const 11020) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00") + (data (i32.const 11084) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!\00") + (data (i32.const 11148) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00") + (data (i32.const 11212) "D\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00") + (data (i32.const 11308) "D\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)\00") + (data (i32.const 11404) "D\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00") + (data (i32.const 11500) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00") + (data (i32.const 11596) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N\00") + (data (i32.const 11692) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n\00") + (data (i32.const 11788) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") + (data (i32.const 11868) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") + (data (i32.const 11948) "0\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,\00") + (data (i32.const 12028) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,\00") + (data (i32.const 12108) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data (i32.const 12172) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data (i32.const 12236) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00") + (data (i32.const 12316) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.\00") + (data (i32.const 12396) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 12476) ".\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 12556) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") + (data (i32.const 12620) "*\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") + (data (i32.const 12684) "2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 12764) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 12844) "6\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!\00") + (data (i32.const 12924) ":\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!\00") + (data (i32.const 13004) "\80\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 13164) "\80\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 13324) "\80\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\80\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\00 \00/\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 13484) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df\00") + (data (i32.const 13516) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00S\00") + (data (i32.const 13548) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\01") + (data (i32.const 13580) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") + (data (i32.const 13612) "\ae\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") + (data (i32.const 13820) "\b2\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") + (data (i32.const 14028) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00s\00s\00") + (data (i32.const 14060) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\fb") + (data (i32.const 14092) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00f\00i\00") + (data (i32.const 14124) "\b8\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") + (data (i32.const 14332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 14380) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") + (data (i32.const 14412) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\88\1f") + (data (i32.const 14444) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\80\1f") + (data (i32.const 14476) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\8f\1f") + (data (i32.const 14508) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\87\1f") + (data (i32.const 14540) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fc\1f") + (data (i32.const 14572) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f3\1f") + (data (i32.const 14604) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\a3\03") + (data (i32.const 14636) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c3\03") + (data (i32.const 14668) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") + (data (i32.const 14700) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") + (data (i32.const 14732) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a3\03 \00") + (data (i32.const 14764) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\c3\03 \00") + (data (i32.const 14796) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 \00") + (data (i32.const 14828) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 \00") + (data (i32.const 14860) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 \00") + (data (i32.const 14892) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 \00") + (data (i32.const 14924) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n\00") + (data (i32.const 14956) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n\00") + (data (i32.const 14988) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") + (data (i32.const 15020) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") + (data (i32.const 15052) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b\00") + (data (i32.const 15084) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b\00") + (data (i32.const 15116) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 \00") + (data (i32.const 15148) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 \00") + (data (i32.const 15180) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 \00") + (data (i32.const 15212) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 \00") + (data (i32.const 15244) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 \00") + (data (i32.const 15276) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 \00") + (data (i32.const 15308) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 \00") + (data (i32.const 15340) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 \00") + (data (i32.const 15372) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00") + (data (i32.const 15404) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00") + (data (i32.const 15436) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-\00") + (data (i32.const 15468) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-\00") + (data (i32.const 15500) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00") + (data (i32.const 15532) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00") + (data (i32.const 15564) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data (i32.const 15596) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data (i32.const 15628) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data (i32.const 15660) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data (i32.const 15692) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") + (data (i32.const 15724) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") + (data (i32.const 15756) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data (i32.const 15788) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data (i32.const 15820) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data (i32.const 15852) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data (i32.const 15884) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") + (data (i32.const 15916) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") + (data (i32.const 15948) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data (i32.const 15980) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data (i32.const 16012) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B\00") + (data (i32.const 16044) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data (i32.const 16076) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data (i32.const 16108) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b\00") + (data (i32.const 16140) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b\00") + (data (i32.const 16172) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00") + (data (i32.const 16204) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00") + (data (i32.const 16236) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00") + (data (i32.const 16268) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00") + (data (i32.const 16300) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") + (data (i32.const 16332) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") + (data (i32.const 16364) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data (i32.const 16396) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data (i32.const 16428) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data (i32.const 16460) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data (i32.const 16492) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00") + (data (i32.const 16524) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00") + (data (i32.const 16556) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data (i32.const 16588) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data (i32.const 16620) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00") + (data (i32.const 16652) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00") + (data (i32.const 16684) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data (i32.const 16716) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data (i32.const 16748) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00") + (data (i32.const 16780) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00") + (data (i32.const 16812) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\fb") + (data (i32.const 16844) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00F\00") + (data (i32.const 16876) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00I\00") + (data (i32.const 16908) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\02\fb") + (data (i32.const 16940) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00L\00") + (data (i32.const 16972) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\fb") + (data (i32.const 17004) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00I\00") + (data (i32.const 17036) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\04\fb") + (data (i32.const 17068) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00L\00") + (data (i32.const 17100) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\fb") + (data (i32.const 17132) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00T\00") + (data (i32.const 17164) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\06\fb") + (data (i32.const 17196) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f0\01") + (data (i32.const 17228) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") + (data (i32.const 17260) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\96\1e") + (data (i32.const 17292) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00H\001\03") + (data (i32.const 17324) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\97\1e") + (data (i32.const 17356) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") + (data (i32.const 17388) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98\1e") + (data (i32.const 17420) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") + (data (i32.const 17452) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\99\1e") + (data (i32.const 17484) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") + (data (i32.const 17516) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\9a\1e") + (data (i32.const 17548) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") + (data (i32.const 17580) "@\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00") + (data (i32.const 17676) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") + (data (i32.const 17740) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 17868) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 17932) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 17956) "0\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") + (data (i32.const 18364) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 19420) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 19516) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 19548) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") + (data (i32.const 19612) "@\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00") + (data (i32.const 19708) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") + (data (i32.const 19772) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 208)) + (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 256)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/heap/__heap_base i32 (i32.const 19592)) + (global $~lib/heap/__heap_base i32 (i32.const 19832)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -233,7 +230,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -256,7 +253,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -269,7 +266,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -297,8 +294,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 277 + i32.const 192 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -312,11 +309,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -324,8 +321,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 279 + i32.const 192 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -378,29 +375,29 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 292 + i32.const 192 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -510,8 +507,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 205 + i32.const 192 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -527,8 +524,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 207 + i32.const 192 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -536,7 +533,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -558,7 +555,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -568,7 +565,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -585,7 +582,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -622,8 +619,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 228 + i32.const 192 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -633,7 +630,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -643,7 +640,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -675,11 +672,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -687,8 +684,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 243 + i32.const 192 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -696,7 +693,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -705,8 +702,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 244 + i32.const 192 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -764,8 +761,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 260 + i32.const 192 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -789,15 +786,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -866,31 +863,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 96 - i32.const 386 - i32.const 5 + i32.const 192 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -904,14 +903,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 96 - i32.const 396 + i32.const 192 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -943,8 +942,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 408 + i32.const 192 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -955,10 +954,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -966,9 +965,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -984,15 +983,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -1011,7 +1010,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -1024,127 +1023,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1152,49 +1170,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 144 - i32.const 96 + i32.const 128 + i32.const 192 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1217,7 +1210,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1271,8 +1264,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 338 + i32.const 192 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1336,8 +1329,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 351 + i32.const 192 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1393,7 +1386,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1411,11 +1404,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1479,14 +1472,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 96 - i32.const 365 + i32.const 192 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1500,8 +1495,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1513,14 +1508,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1539,7 +1534,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1551,7 +1546,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1568,144 +1563,125 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 192 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 96 - i32.const 520 + i32.const 192 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 64 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -1741,8 +1717,8 @@ i32.const 3 i32.rem_u local.set $5 - i32.const 1152 - i32.const 1152 + i32.const 1200 + i32.const 1200 local.get $3 i32.add i32.load8_u @@ -1754,7 +1730,7 @@ i32.load8_u local.set $6 local.get $6 - i32.const 3820 + i32.const 3868 local.get $5 i32.const 2 i32.shl @@ -1766,8 +1742,8 @@ i32.const 6 i32.rem_u local.set $6 - i32.const 3832 - i32.const 4792 + i32.const 3880 + i32.const 4840 local.get $3 i32.add i32.load8_u @@ -1818,7 +1794,7 @@ i32.const 1 i32.shr_u local.set $13 - i32.const 5304 + i32.const 5352 local.get $11 local.get $13 i32.add @@ -1831,8 +1807,8 @@ local.get $0 i32.eq if - i32.const 3832 - i32.const 5304 + i32.const 3880 + i32.const 5352 local.get $11 local.get $13 i32.add @@ -1902,7 +1878,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -1925,22 +1901,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 96 - i32.const 585 + i32.const 192 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3201,12 +3166,9 @@ end ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3216,6 +3178,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -3223,7 +3216,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -3244,9 +3236,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -3255,7 +3244,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -3273,7 +3262,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -3296,9 +3285,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -3310,41 +3296,86 @@ end end local.get $0 - local.get $2 local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 64 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 i32.store offset=4 - local.get $9 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $9 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -3381,7 +3412,7 @@ i32.const 2 i32.mul i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 global.get $~lib/util/casemap/SPECIALS_UPPER local.set $3 @@ -3426,7 +3457,7 @@ i32.const 0 i32.gt_s drop - i32.const 1024 + i32.const 1072 local.get $9 i32.add i32.load8_u @@ -3707,7 +3738,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $2 local.get $2 call $~lib/rt/pure/__retain @@ -3718,7 +3749,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -3982,7 +4013,7 @@ i32.const 2 i32.mul i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 i32.const 0 local.set $3 @@ -4022,7 +4053,7 @@ i32.const 0 i32.gt_s drop - i32.const 5778 + i32.const 5826 local.get $7 i32.add i32.load8_u @@ -4242,7 +4273,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 5906 + i32.const 5954 local.get $18 call $~lib/util/string/stagedBinaryLookup else @@ -4256,7 +4287,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 8914 + i32.const 8962 local.get $15 call $~lib/util/string/stagedBinaryLookup else @@ -4361,7 +4392,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 5906 + i32.const 5954 local.get $16 call $~lib/util/string/stagedBinaryLookup else @@ -4375,7 +4406,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 8914 + i32.const 8962 local.get $16 call $~lib/util/string/stagedBinaryLookup else @@ -4500,7 +4531,7 @@ local.get $3 i32.const 1 i32.shl - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $2 local.get $2 call $~lib/rt/pure/__retain @@ -4516,7 +4547,7 @@ i32.eqz if i32.const 0 - i32.const 14160 + i32.const 14352 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -4530,7 +4561,7 @@ local.get $1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $1 i32.eqz @@ -4723,14 +4754,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 17748 + i32.const 17956 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 17748 + i32.const 17956 local.get $7 i32.const 2 i32.shl @@ -4773,7 +4804,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 17748 + i32.const 17956 local.get $10 i32.const 2 i32.shl @@ -4796,7 +4827,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 17748 + i32.const 17956 local.get $1 i32.const 2 i32.shl @@ -4943,14 +4974,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 17748 + i32.const 17956 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 17748 + i32.const 17956 local.get $11 i32.const 2 i32.shl @@ -4972,14 +5003,14 @@ i64.shl i64.or i64.store - i32.const 17748 + i32.const 17956 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 17748 + i32.const 17956 local.get $9 i32.const 2 i32.shl @@ -5028,7 +5059,7 @@ i32.const 1 i32.shl i32.add - i32.const 18176 + i32.const 18384 local.get $1 i32.wrap_i64 i32.const 255 @@ -5050,7 +5081,7 @@ i32.and if local.get $0 - i32.const 18176 + i32.const 18384 local.get $1 i32.wrap_i64 i32.const 6 @@ -5173,7 +5204,7 @@ i32.const 1 i32.shl i32.add - i32.const 19216 + i32.const 19440 local.get $1 local.get $6 i64.and @@ -5209,7 +5240,7 @@ i32.const 1 i32.shl i32.add - i32.const 19216 + i32.const 19440 local.get $1 local.get $6 local.get $4 @@ -5251,8 +5282,8 @@ i32.gt_s end if - i32.const 17552 - i32.const 17680 + i32.const 17760 + i32.const 17888 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -5263,7 +5294,7 @@ i64.ne i32.eqz if - i32.const 17744 + i32.const 17952 return end i32.const 0 @@ -5287,7 +5318,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $7 @@ -5311,7 +5342,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -5347,7 +5378,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $3 @@ -5372,7 +5403,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -5403,7 +5434,7 @@ i32.const 0 i32.eq if - i32.const 19312 + i32.const 19536 local.tee $2 local.get $1 local.tee $3 @@ -5446,7 +5477,7 @@ end local.get $6 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $7 local.get $7 @@ -5474,7 +5505,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - i32.const 19312 + i32.const 19536 local.get $0 i32.const 0 i32.ne @@ -5598,7 +5629,7 @@ i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -5612,377 +5643,377 @@ i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10512 + i32.const 10560 call $~lib/string/String#toUpperCase local.tee $2 - i32.const 10560 + i32.const 10608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10608 + i32.const 10656 call $~lib/string/String#toLowerCase local.tee $3 - i32.const 10656 + i32.const 10704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10704 + i32.const 10752 call $~lib/string/String#toUpperCase local.tee $4 - i32.const 10800 + i32.const 10848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10800 + i32.const 10848 call $~lib/string/String#toLowerCase local.tee $5 - i32.const 10896 + i32.const 10944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10992 + i32.const 11040 call $~lib/string/String#toUpperCase local.tee $6 - i32.const 11056 + i32.const 11104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11056 + i32.const 11104 call $~lib/string/String#toLowerCase local.tee $7 - i32.const 11120 + i32.const 11168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11184 + i32.const 11232 call $~lib/string/String#toUpperCase local.tee $8 - i32.const 11280 + i32.const 11328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11280 + i32.const 11328 call $~lib/string/String#toLowerCase local.tee $9 - i32.const 11376 + i32.const 11424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11472 + i32.const 11520 call $~lib/string/String#toUpperCase local.tee $10 - i32.const 11568 + i32.const 11616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11568 + i32.const 11616 call $~lib/string/String#toLowerCase local.tee $11 - i32.const 11664 + i32.const 11712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11760 + i32.const 11808 call $~lib/string/String#toUpperCase local.tee $12 - i32.const 11824 + i32.const 11888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 + i32.const 11968 call $~lib/string/String#toUpperCase local.tee $13 - i32.const 11952 + i32.const 12048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12032 + i32.const 12128 call $~lib/string/String#toUpperCase local.tee $14 - i32.const 12096 + i32.const 12192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12160 + i32.const 12256 call $~lib/string/String#toUpperCase local.tee $15 - i32.const 12240 + i32.const 12336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12320 + i32.const 12416 call $~lib/string/String#toUpperCase local.tee $16 - i32.const 12384 + i32.const 12496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12448 + i32.const 12576 call $~lib/string/String#toUpperCase local.tee $17 - i32.const 12512 + i32.const 12640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12576 + i32.const 12704 call $~lib/string/String#toUpperCase local.tee $18 - i32.const 12656 + i32.const 12784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12736 + i32.const 12864 call $~lib/string/String#toUpperCase local.tee $19 - i32.const 12816 + i32.const 12944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12896 + i32.const 13024 call $~lib/string/String#toUpperCase local.tee $20 - i32.const 13040 + i32.const 13184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12896 + i32.const 13024 call $~lib/string/String#toLowerCase local.tee $21 - i32.const 13184 + i32.const 13344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13328 + i32.const 13504 call $~lib/string/String#toUpperCase local.tee $22 - i32.const 13360 + i32.const 13536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 + i32.const 13568 call $~lib/string/String#toLowerCase local.tee $23 - i32.const 13424 + i32.const 13600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13456 + i32.const 13632 call $~lib/string/String#toUpperCase local.tee $24 - i32.const 13648 + i32.const 13840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13328 + i32.const 13504 call $~lib/string/String#toUpperCase local.tee $25 call $~lib/string/String#toLowerCase local.tee $26 - i32.const 13856 + i32.const 14048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13888 + i32.const 14080 call $~lib/string/String#toUpperCase local.tee $27 call $~lib/string/String#toLowerCase local.tee $28 - i32.const 13920 + i32.const 14112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13952 + i32.const 14144 call $~lib/string/String#toUpperCase local.tee $29 call $~lib/string/String#toLowerCase local.tee $30 - i32.const 13952 + i32.const 14144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -5993,12 +6024,12 @@ local.tee $31 call $~lib/string/String#toLowerCase local.tee $32 - i32.const 14208 + i32.const 14400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -6009,726 +6040,726 @@ local.tee $33 call $~lib/string/String#toUpperCase local.tee $34 - i32.const 14208 + i32.const 14400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14240 + i32.const 14432 call $~lib/string/String#toLowerCase local.tee $35 - i32.const 14272 + i32.const 14464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 + i32.const 14496 call $~lib/string/String#toLowerCase local.tee $36 - i32.const 14336 + i32.const 14528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14368 + i32.const 14560 call $~lib/string/String#toLowerCase local.tee $37 - i32.const 14400 + i32.const 14592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14432 + i32.const 14624 call $~lib/string/String#toLowerCase local.tee $38 - i32.const 14464 + i32.const 14656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14496 + i32.const 14688 call $~lib/string/String#toLowerCase local.tee $39 - i32.const 14528 + i32.const 14720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14560 + i32.const 14752 call $~lib/string/String#toLowerCase local.tee $40 - i32.const 14592 + i32.const 14784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14624 + i32.const 14816 call $~lib/string/String#toLowerCase local.tee $41 - i32.const 14656 + i32.const 14848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14688 + i32.const 14880 call $~lib/string/String#toLowerCase local.tee $42 - i32.const 14720 + i32.const 14912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14752 + i32.const 14944 call $~lib/string/String#toLowerCase local.tee $43 - i32.const 14784 + i32.const 14976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14816 + i32.const 15008 call $~lib/string/String#toLowerCase local.tee $44 - i32.const 14848 + i32.const 15040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14880 + i32.const 15072 call $~lib/string/String#toLowerCase local.tee $45 - i32.const 14912 + i32.const 15104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14944 + i32.const 15136 call $~lib/string/String#toLowerCase local.tee $46 - i32.const 14976 + i32.const 15168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15008 + i32.const 15200 call $~lib/string/String#toLowerCase local.tee $47 - i32.const 15040 + i32.const 15232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15072 + i32.const 15264 call $~lib/string/String#toLowerCase local.tee $48 - i32.const 15104 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15136 + i32.const 15328 call $~lib/string/String#toLowerCase local.tee $49 - i32.const 15168 + i32.const 15360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15200 + i32.const 15392 call $~lib/string/String#toLowerCase local.tee $50 - i32.const 15232 + i32.const 15424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15264 + i32.const 15456 call $~lib/string/String#toLowerCase local.tee $51 - i32.const 15296 + i32.const 15488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15328 + i32.const 15520 call $~lib/string/String#toLowerCase local.tee $52 - i32.const 15360 + i32.const 15552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15392 + i32.const 15584 call $~lib/string/String#toLowerCase local.tee $53 - i32.const 15424 + i32.const 15616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15456 + i32.const 15648 call $~lib/string/String#toLowerCase local.tee $54 - i32.const 15488 + i32.const 15680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15520 + i32.const 15712 call $~lib/string/String#toLowerCase local.tee $55 - i32.const 15552 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15584 + i32.const 15776 call $~lib/string/String#toLowerCase local.tee $56 - i32.const 15616 + i32.const 15808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15648 + i32.const 15840 call $~lib/string/String#toLowerCase local.tee $57 - i32.const 15680 + i32.const 15872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15712 + i32.const 15904 call $~lib/string/String#toLowerCase local.tee $58 - i32.const 15744 + i32.const 15936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15776 + i32.const 15968 call $~lib/string/String#toLowerCase local.tee $59 - i32.const 15808 + i32.const 16000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15840 + i32.const 16032 call $~lib/string/String#toLowerCase local.tee $60 - i32.const 14912 + i32.const 15104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15872 + i32.const 16064 call $~lib/string/String#toLowerCase local.tee $61 - i32.const 15904 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15936 + i32.const 16128 call $~lib/string/String#toLowerCase local.tee $62 - i32.const 15968 + i32.const 16160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16000 + i32.const 16192 call $~lib/string/String#toLowerCase local.tee $63 - i32.const 16032 + i32.const 16224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16064 + i32.const 16256 call $~lib/string/String#toLowerCase local.tee $64 - i32.const 16096 + i32.const 16288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16128 + i32.const 16320 call $~lib/string/String#toLowerCase local.tee $65 - i32.const 16160 + i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16192 + i32.const 16384 call $~lib/string/String#toLowerCase local.tee $66 - i32.const 16224 + i32.const 16416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16256 + i32.const 16448 call $~lib/string/String#toLowerCase local.tee $67 - i32.const 16288 + i32.const 16480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16320 + i32.const 16512 call $~lib/string/String#toLowerCase local.tee $68 - i32.const 16352 + i32.const 16544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16384 + i32.const 16576 call $~lib/string/String#toLowerCase local.tee $69 - i32.const 16416 + i32.const 16608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16448 + i32.const 16640 call $~lib/string/String#toLowerCase local.tee $70 - i32.const 16480 + i32.const 16672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16512 + i32.const 16704 call $~lib/string/String#toLowerCase local.tee $71 - i32.const 16544 + i32.const 16736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16576 + i32.const 16768 call $~lib/string/String#toLowerCase local.tee $72 - i32.const 16608 + i32.const 16800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16640 + i32.const 16832 call $~lib/string/String#toUpperCase local.tee $73 - i32.const 16672 + i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13888 + i32.const 14080 call $~lib/string/String#toUpperCase local.tee $74 - i32.const 16704 + i32.const 16896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16736 + i32.const 16928 call $~lib/string/String#toUpperCase local.tee $75 - i32.const 16768 + i32.const 16960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16800 + i32.const 16992 call $~lib/string/String#toUpperCase local.tee $76 - i32.const 16832 + i32.const 17024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16864 + i32.const 17056 call $~lib/string/String#toUpperCase local.tee $77 - i32.const 16896 + i32.const 17088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16928 + i32.const 17120 call $~lib/string/String#toUpperCase local.tee $78 - i32.const 16960 + i32.const 17152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16992 + i32.const 17184 call $~lib/string/String#toUpperCase local.tee $79 - i32.const 16960 + i32.const 17152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17024 + i32.const 17216 call $~lib/string/String#toUpperCase local.tee $80 - i32.const 17056 + i32.const 17248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17088 + i32.const 17280 call $~lib/string/String#toUpperCase local.tee $81 - i32.const 17120 + i32.const 17312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17152 + i32.const 17344 call $~lib/string/String#toUpperCase local.tee $82 - i32.const 17184 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17216 + i32.const 17408 call $~lib/string/String#toUpperCase local.tee $83 - i32.const 17248 + i32.const 17440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17280 + i32.const 17472 call $~lib/string/String#toUpperCase local.tee $84 - i32.const 17312 + i32.const 17504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17344 + i32.const 17536 call $~lib/string/String#toUpperCase local.tee $85 - i32.const 17376 + i32.const 17568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5728 + i32.const 5776 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -6896,7 +6927,7 @@ local.get $95 i64.ne if - i32.const 17408 + i32.const 17600 i32.const 1 local.get $86 f64.convert_i32_s @@ -6905,7 +6936,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 17488 + i32.const 17696 local.get $93 i32.const 10 call $~lib/number/U64#toString @@ -6919,7 +6950,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19344 + i32.const 19568 local.get $95 i32.const 10 call $~lib/number/U64#toString @@ -6946,7 +6977,7 @@ local.get $96 i64.ne if - i32.const 19408 + i32.const 19632 i32.const 1 local.get $86 f64.convert_i32_s @@ -6955,7 +6986,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19488 + i32.const 19728 local.get $94 i32.const 10 call $~lib/number/U64#toString @@ -6969,7 +7000,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19552 + i32.const 19792 local.get $96 i32.const 10 call $~lib/number/U64#toString @@ -7181,11 +7212,6 @@ (func $~start call $start:std/string-casemapping ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -7215,7 +7241,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -7226,7 +7252,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -7241,7 +7267,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -7258,7 +7284,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -7296,14 +7322,14 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 64 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index d1a1b654c7..888e7c2354 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -2,43 +2,41 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1104) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1284) "\01\00\00\00\01") - (data (i32.const 1296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") - (data (i32.const 1328) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00h") - (data (i32.const 1360) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1392) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") - (data (i32.const 1424) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1472) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") - (data (i32.const 1504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1536) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") - (data (i32.const 1568) "*3\00\00\01\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\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\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\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\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") - (data (i32.const 14688) "\ba\1c\00\00\01\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n") + (data (i32.const 1036) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data (i32.const 1068) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1132) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") + (data (i32.const 1196) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1260) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1328) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1356) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") + (data (i32.const 1388) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00h") + (data (i32.const 1420) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i") + (data (i32.const 1452) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") + (data (i32.const 1484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1532) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") + (data (i32.const 1580) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1612) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") + (data (i32.const 1644) "*3\00\00\01\00\00\00\00\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\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\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\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\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") + (data (i32.const 14764) "\ba\1c\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 22060 + i32.const 22140 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -53,7 +51,7 @@ i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -70,7 +68,7 @@ i32.and if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -81,11 +79,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 22060 + i32.const 22140 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -95,9 +93,9 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.get $0 call $~lib/rt/pure/__release ) @@ -114,8 +112,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 277 + i32.const 1280 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -124,18 +122,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1184 - i32.const 279 + i32.const 1280 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -177,28 +175,28 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 292 + i32.const 1280 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -269,8 +267,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 205 + i32.const 1280 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -283,14 +281,14 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 207 + i32.const 1280 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -306,14 +304,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -328,7 +326,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -356,8 +354,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 228 + i32.const 1280 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -365,14 +363,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -401,33 +399,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1184 - i32.const 243 + i32.const 1280 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1184 - i32.const 244 + i32.const 1280 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -474,8 +472,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 260 + i32.const 1280 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -493,15 +491,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -539,54 +537,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 386 - i32.const 5 + i32.const 1280 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 396 + i32.const 1280 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -602,18 +598,17 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 408 + i32.const 1280 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -623,23 +618,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -650,116 +646,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 22144 + i32.const 0 + i32.store + i32.const 23712 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 22144 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 22064 - local.set $1 - i32.const 22064 - i32.const 0 - i32.store - i32.const 23632 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 22064 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 22064 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 22144 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 22064 - i32.const 23648 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 22064 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 22144 + i32.const 23716 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 22144 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1232 - i32.const 1184 + i32.const 1216 + i32.const 1280 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -786,7 +774,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -817,8 +805,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 338 + i32.const 1280 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -869,8 +857,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 351 + i32.const 1280 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -898,12 +886,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1184 - i32.const 365 + i32.const 1280 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -914,7 +904,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -926,12 +916,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -946,7 +936,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -966,157 +956,166 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1184 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 520 + i32.const 1280 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1216 + i32.const 1088 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -1300,7 +1299,7 @@ local.tee $0 call $~lib/string/String.UTF16.byteLength i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $0 local.get $0 @@ -1316,18 +1315,18 @@ (func $std/string-encoding/testUTF16Encode (local $0 i32) (local $1 i32) - i32.const 1040 + i32.const 1056 call $~lib/string/String.UTF16.encode local.tee $1 local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 12 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -1339,7 +1338,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -1351,7 +1350,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -1363,7 +1362,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -1375,7 +1374,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -1387,7 +1386,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -1397,7 +1396,7 @@ i32.load8_u offset=5 if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -1409,7 +1408,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -1419,7 +1418,7 @@ i32.load8_u offset=7 if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -1431,7 +1430,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -1443,7 +1442,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -1455,7 +1454,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -1467,7 +1466,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -1483,7 +1482,7 @@ i32.and local.tee $1 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -1496,9 +1495,9 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.set $1 local.get $0 local.get $1 @@ -1655,10 +1654,10 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1040 + i32.const 1056 call $~lib/string/String.UTF16.encode local.set $1 - i32.const 1040 + i32.const 1056 call $~lib/string/String.UTF16.byteLength local.set $2 local.get $1 @@ -1666,12 +1665,12 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $3 - i32.const 1296 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -1681,12 +1680,12 @@ local.get $2 call $~lib/string/String.UTF16.decodeUnsafe local.tee $4 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -1696,12 +1695,12 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $5 - i32.const 1312 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -1713,12 +1712,12 @@ i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe local.tee $6 - i32.const 1344 + i32.const 1408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -1730,12 +1729,12 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $7 - i32.const 1376 + i32.const 1440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -1747,12 +1746,12 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $2 - i32.const 1408 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -1764,12 +1763,12 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $0 - i32.const 1296 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -1802,9 +1801,9 @@ local.tee $5 local.tee $0 local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.add local.set $4 local.get $1 @@ -2071,7 +2070,7 @@ local.get $1 call $~lib/string/String.UTF8.byteLength i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 local.get $0 @@ -2087,19 +2086,19 @@ (func $std/string-encoding/testUTF8Encode (local $0 i32) (local $1 i32) - i32.const 1040 + i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.encode local.tee $1 local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 10 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -2111,7 +2110,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -2123,7 +2122,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -2135,7 +2134,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -2147,7 +2146,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2159,7 +2158,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2171,7 +2170,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -2183,7 +2182,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -2195,7 +2194,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -2207,7 +2206,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -2219,7 +2218,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -2231,19 +2230,19 @@ (func $std/string-encoding/testUTF8EncodeNullTerminated (local $0 i32) (local $1 i32) - i32.const 1040 + i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode local.tee $1 local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 11 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -2255,7 +2254,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -2267,7 +2266,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -2279,7 +2278,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2291,7 +2290,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2303,7 +2302,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -2315,7 +2314,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -2327,7 +2326,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -2339,7 +2338,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -2351,7 +2350,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -2363,7 +2362,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -2373,7 +2372,7 @@ i32.load8_u offset=10 if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -2382,6 +2381,39 @@ local.get $1 call $~lib/rt/pure/__release ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) local.get $1 local.get $1 @@ -2393,105 +2425,175 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 22140 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1216 + i32.const 1088 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 i32.const 16 - i32.add + i32.sub + local.set $0 local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 16 i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 22140 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 local.get $0 - local.get $1 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end local.get $3 + local.get $0 + local.get $5 call $~lib/rt/tlsf/prepareBlock - local.get $1 - return end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 + i32.const 4 i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $1 + i32.store offset=16 + local.get $2 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 22060 - i32.ge_u - if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 ) (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2507,7 +2609,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1504 i32.const 738 i32.const 7 call $~lib/builtins/abort @@ -2517,8 +2619,8 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $5 + call $~lib/rt/pure/__new + local.tee $6 local.set $1 loop $while-continue|0 local.get $0 @@ -2545,7 +2647,7 @@ i32.load8_u i32.const 63 i32.and - local.set $6 + local.set $5 local.get $0 i32.const 1 i32.add @@ -2557,7 +2659,7 @@ i32.eq if local.get $1 - local.get $6 + local.get $5 local.get $3 i32.const 31 i32.and @@ -2591,7 +2693,7 @@ i32.and i32.const 12 i32.shl - local.get $6 + local.get $5 i32.const 6 i32.shl i32.or @@ -2611,7 +2713,7 @@ i32.and i32.const 18 i32.shl - local.get $6 + local.get $5 i32.const 12 i32.shl i32.or @@ -2676,52 +2778,11 @@ end end end - call $~lib/rt/tlsf/maybeInitialize - local.get $5 - i32.const 16 - i32.sub - local.set $0 - local.get $5 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $5 - select - if (result i32) - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $6 local.get $1 - local.get $5 + local.get $6 i32.sub - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add + call $~lib/rt/pure/__renew call $~lib/rt/pure/__retain ) (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) @@ -2729,9 +2790,9 @@ local.get $0 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.set $2 local.get $0 local.get $2 @@ -2747,62 +2808,62 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1040 + i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode local.tee $1 i32.const 1 call $~lib/string/String.UTF8.decode local.tee $2 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1488 + i32.const 1552 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1488 + i32.const 1552 i32.const 1 call $~lib/string/String.UTF8.encode local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 4 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 107 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1520 + i32.const 1600 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2812,30 +2873,30 @@ i32.const 1 call $~lib/string/String.UTF8.decode local.tee $3 - i32.const 1520 + i32.const 1600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 110 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1488 + i32.const 1552 i32.const 0 call $~lib/string/String.UTF8.encode local.tee $4 i32.const 1 call $~lib/string/String.UTF8.decode local.tee $5 - i32.const 1520 + i32.const 1600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -2865,11 +2926,11 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1040 + i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode local.set $1 - i32.const 1040 + i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.byteLength local.set $2 @@ -2879,12 +2940,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $3 - i32.const 1296 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -2895,12 +2956,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $4 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -2911,12 +2972,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $5 - i32.const 1312 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -2929,12 +2990,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 - i32.const 1376 + i32.const 1440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -2947,12 +3008,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 - i32.const 1408 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 125 i32.const 3 call $~lib/builtins/abort @@ -2965,12 +3026,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $8 - i32.const 1296 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -2983,12 +3044,12 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $9 - i32.const 1552 + i32.const 1632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 128 i32.const 3 call $~lib/builtins/abort @@ -3001,12 +3062,12 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $2 - i32.const 1408 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -3019,12 +3080,12 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $0 - i32.const 1296 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -3070,7 +3131,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -3086,7 +3147,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -3106,30 +3167,30 @@ (func $start:std/string-encoding (local $0 i32) (local $1 i32) - i32.const 1040 + i32.const 1056 call $~lib/string/String.UTF16.byteLength i32.const 12 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 8 i32.const 3 call $~lib/builtins/abort unreachable end call $std/string-encoding/testUTF16Encode - i32.const 1040 + i32.const 1056 call $~lib/string/String.UTF16.encode local.tee $0 call $~lib/string/String.UTF16.decode local.tee $1 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3140,27 +3201,27 @@ local.get $0 call $~lib/rt/pure/__release call $std/string-encoding/testUTF16DecodeUnsafe - i32.const 1040 + i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.byteLength i32.const 10 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 11 i32.ne if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -3168,19 +3229,19 @@ end call $std/string-encoding/testUTF8Encode call $std/string-encoding/testUTF8EncodeNullTerminated - i32.const 1040 + i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.encode local.tee $0 i32.const 0 call $~lib/string/String.UTF8.decode local.tee $1 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 1152 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -3192,9 +3253,9 @@ call $~lib/rt/pure/__release call $std/string-encoding/testUTF8DecodeNullTerminated call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 1584 + i32.const 1664 call $std/string-encoding/testLarge - i32.const 14704 + i32.const 14784 call $std/string-encoding/testLarge ) (func $~start @@ -3215,7 +3276,7 @@ i32.and if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3229,21 +3290,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 22060 + i32.const 22140 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -3257,7 +3318,7 @@ i32.and if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3272,7 +3333,7 @@ i32.le_u if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 947afbc32b..f184d3c7d4 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -7,35 +7,32 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 96) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 208) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 288) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") - (data (i32.const 320) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00h\00") - (data (i32.const 352) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") - (data (i32.const 416) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 464) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00") - (data (i32.const 496) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 528) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") - (data (i32.const 560) "*3\00\00\01\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\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\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\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\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00") - (data (i32.const 13680) "\ba\1c\00\00\01\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data (i32.const 44) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 108) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 172) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 236) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 300) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 332) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") + (data (i32.const 364) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00h\00") + (data (i32.const 396) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i\00") + (data (i32.const 428) "\04\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") + (data (i32.const 460) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 508) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00") + (data (i32.const 556) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 588) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") + (data (i32.const 620) "*3\00\00\01\00\00\00\00\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\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\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\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\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00") + (data (i32.const 13740) "\ba\1c\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00") (table $0 1 funcref) (global $std/string-encoding/str (mut i32) (i32.const 32)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 21052)) + (global $~lib/heap/__heap_base i32 (i32.const 21116)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/increment (param $0 i32) @@ -95,7 +92,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -107,7 +104,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -118,9 +115,9 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.set $1 local.get $0 call $~lib/rt/pure/__release @@ -134,7 +131,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -163,8 +160,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 277 + i32.const 256 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -178,11 +175,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -190,8 +187,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 279 + i32.const 256 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -244,29 +241,29 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 292 + i32.const 256 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -376,8 +373,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 205 + i32.const 256 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -393,8 +390,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 207 + i32.const 256 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -402,7 +399,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -424,7 +421,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -434,7 +431,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -451,7 +448,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -488,8 +485,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 228 + i32.const 256 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -499,7 +496,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -509,7 +506,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -541,11 +538,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -553,8 +550,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 243 + i32.const 256 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -562,7 +559,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -571,8 +568,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 244 + i32.const 256 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -630,8 +627,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 260 + i32.const 256 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -655,15 +652,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -732,31 +729,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 176 - i32.const 386 - i32.const 5 + i32.const 256 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -770,14 +769,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 176 - i32.const 396 + i32.const 256 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -809,8 +808,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 408 + i32.const 256 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -821,10 +820,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -832,9 +831,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -850,15 +849,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -877,7 +876,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -890,127 +889,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1018,49 +1036,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 224 - i32.const 176 + i32.const 192 + i32.const 256 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1083,7 +1076,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1137,8 +1130,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 338 + i32.const 256 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1202,8 +1195,8 @@ i32.eqz if i32.const 0 - i32.const 176 - i32.const 351 + i32.const 256 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1259,7 +1252,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1277,11 +1270,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1345,14 +1338,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 176 - i32.const 365 + i32.const 256 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1366,8 +1361,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1379,14 +1374,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1405,7 +1400,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1417,7 +1412,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1434,144 +1429,125 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 256 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 176 - i32.const 520 + i32.const 256 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 192 + i32.const 64 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -2849,7 +2825,7 @@ local.get $0 call $~lib/string/String.UTF16.byteLength i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $1 local.get $0 local.get $0 @@ -2866,9 +2842,9 @@ ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 ) (func $std/string-encoding/testUTF16Encode (local $0 i32) @@ -2885,7 +2861,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -2898,7 +2874,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -2911,7 +2887,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -2924,7 +2900,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -2937,7 +2913,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -2950,7 +2926,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -2963,7 +2939,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -2976,7 +2952,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -2989,7 +2965,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -3002,7 +2978,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -3015,7 +2991,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -3028,7 +3004,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -3041,7 +3017,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3059,7 +3035,7 @@ i32.and local.tee $1 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -3295,7 +3271,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3329,12 +3305,12 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $3 - i32.const 288 + i32.const 320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3349,7 +3325,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3359,12 +3335,12 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $5 - i32.const 304 + i32.const 352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3376,12 +3352,12 @@ i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe local.tee $6 - i32.const 336 + i32.const 384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3393,12 +3369,12 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $7 - i32.const 368 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -3410,12 +3386,12 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $8 - i32.const 400 + i32.const 448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -3427,12 +3403,12 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $9 - i32.const 288 + i32.const 320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -3468,9 +3444,9 @@ local.set $2 local.get $2 local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.add local.set $3 local.get $1 @@ -3575,7 +3551,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -3589,7 +3565,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -3822,7 +3798,7 @@ local.get $1 call $~lib/string/String.UTF8.byteLength i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 local.get $0 @@ -3854,7 +3830,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -3867,7 +3843,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -3880,7 +3856,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -3893,7 +3869,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -3906,7 +3882,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -3919,7 +3895,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -3932,7 +3908,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -3945,7 +3921,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -3958,7 +3934,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -3971,7 +3947,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -3984,7 +3960,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -4009,7 +3985,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -4022,7 +3998,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -4035,7 +4011,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -4048,7 +4024,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -4061,7 +4037,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -4074,7 +4050,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -4087,7 +4063,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -4100,7 +4076,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -4113,7 +4089,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -4126,7 +4102,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -4139,7 +4115,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -4152,7 +4128,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -4164,7 +4140,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -4187,22 +4163,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 176 - i32.const 585 + i32.const 256 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -4210,12 +4175,9 @@ local.get $1 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -4225,6 +4187,37 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -4232,7 +4225,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -4253,9 +4245,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -4264,7 +4253,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -4282,7 +4271,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -4305,9 +4294,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -4319,41 +4305,86 @@ end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 192 + i32.const 64 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -4380,7 +4411,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 480 i32.const 738 i32.const 7 call $~lib/builtins/abort @@ -4390,7 +4421,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $5 local.set $6 @@ -4570,7 +4601,7 @@ local.get $6 local.get $5 i32.sub - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew call $~lib/rt/pure/__retain ) (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) @@ -4604,7 +4635,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -4637,13 +4668,13 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 480 + i32.const 528 local.set $2 local.get $2 i32.const 1 @@ -4653,7 +4684,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -4670,13 +4701,13 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 107 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 512 + i32.const 576 local.set $4 local.get $4 i32.const 1 @@ -4686,7 +4717,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -4701,7 +4732,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -4720,7 +4751,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -4771,12 +4802,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $3 - i32.const 288 + i32.const 320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -4792,7 +4823,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -4803,12 +4834,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $5 - i32.const 304 + i32.const 352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -4821,12 +4852,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 - i32.const 368 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -4839,12 +4870,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 - i32.const 400 + i32.const 448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 125 i32.const 3 call $~lib/builtins/abort @@ -4857,12 +4888,12 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $8 - i32.const 288 + i32.const 320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -4875,12 +4906,12 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $9 - i32.const 544 + i32.const 608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 128 i32.const 3 call $~lib/builtins/abort @@ -4893,12 +4924,12 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $10 - i32.const 400 + i32.const 448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -4911,12 +4942,12 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $11 - i32.const 288 + i32.const 320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -4964,7 +4995,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -4981,7 +5012,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 128 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -5009,9 +5040,9 @@ call $std/string-encoding/testUTF8Decode call $std/string-encoding/testUTF8DecodeNullTerminated call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 576 + i32.const 640 call $std/string-encoding/testLarge - i32.const 13696 + i32.const 13760 call $std/string-encoding/testLarge ) (func $~start @@ -5057,7 +5088,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -5110,11 +5141,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -5139,7 +5165,7 @@ unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 258a9fc2f4..d7f68900d7 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -4,451 +4,449 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $none_=>_i32 (func (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1120) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df") - (data (i32.const 1152) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1200) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\df\00\df") - (data (i32.const 1232) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b") - (data (i32.const 1268) "\01\00\00\00\01") - (data (i32.const 1280) "\02\00\00\00\01\00\00\00\01\00\00\00\02") - (data (i32.const 1312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1344) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1392) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006") - (data (i32.const 1488) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df") - (data (i32.const 1520) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1568) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 1600) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1664) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 1728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 ") - (data (i32.const 1760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 1792) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1824) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 1856) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1888) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 1920) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 1952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 1984) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 2016) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x") - (data (i32.const 2112) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g") - (data (i32.const 2176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i") - (data (i32.const 2208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d") - (data (i32.const 2240) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d") - (data (i32.const 2272) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c") - (data (i32.const 2304) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00 \00\t\00\0d\00 ") - (data (i32.const 2352) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 ") - (data (i32.const 2384) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c") - (data (i32.const 2416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 2448) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\000") - (data (i32.const 2480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 2512) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\000\000\001") - (data (i32.const 2544) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001") - (data (i32.const 2576) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007") - (data (i32.const 2608) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f") - (data (i32.const 2640) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F") - (data (i32.const 2672) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\001\001") - (data (i32.const 2704) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g") - (data (i32.const 2736) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\001\002\003") - (data (i32.const 2768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\001\002\003") - (data (i32.const 2800) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003") - (data (i32.const 2832) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\000") - (data (i32.const 2864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00b\001\001") - (data (i32.const 2896) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\n\001") - (data (i32.const 2928) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00( 1") - (data (i32.const 2960) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00) 1") - (data (i32.const 2992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\000") - (data (i32.const 3024) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") - (data (i32.const 3056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") - (data (i32.const 3088) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002") - (data (i32.const 3152) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 3232) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 3296) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd") - (data (i32.const 3328) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") - (data (i32.const 3360) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001") - (data (i32.const 3392) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") - (data (i32.const 3424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 3456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+") - (data (i32.const 3488) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd") - (data (i32.const 3520) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") - (data (i32.const 3600) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") - (data (i32.const 3662) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data (i32.const 3840) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00.") - (data (i32.const 3872) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\000\000") - (data (i32.const 3904) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005") - (data (i32.const 3936) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005") - (data (i32.const 3968) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") - (data (i32.const 4000) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") - (data (i32.const 4032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001") - (data (i32.const 4064) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000") - (data (i32.const 4096) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\001") - (data (i32.const 4128) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\002\005") - (data (i32.const 4160) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") - (data (i32.const 4192) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") - (data (i32.const 4224) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") - (data (i32.const 4256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") - (data (i32.const 4288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") - (data (i32.const 4320) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008") - (data (i32.const 4352) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009") - (data (i32.const 4384) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") - (data (i32.const 4416) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") - (data (i32.const 4464) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") - (data (i32.const 4496) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\000") - (data (i32.const 4528) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\001") - (data (i32.const 4560) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") - (data (i32.const 4608) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") - (data (i32.const 4656) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") - (data (i32.const 4704) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000") - (data (i32.const 4736) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\006\000") - (data (i32.const 4768) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") - (data (i32.const 4800) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00x") - (data (i32.const 4832) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") - (data (i32.const 4880) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") - (data (i32.const 4928) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") - (data (i32.const 4976) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") - (data (i32.const 5008) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001") - (data (i32.const 5040) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\005") - (data (i32.const 5072) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\00D") - (data (i32.const 5104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001") - (data (i32.const 5136) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") - (data (i32.const 5168) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") - (data (i32.const 5200) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001") - (data (i32.const 5232) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001") - (data (i32.const 5264) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000") - (data (i32.const 5296) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a") - (data (i32.const 5328) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001") - (data (i32.const 5360) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000") - (data (i32.const 5392) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a") - (data (i32.const 5424) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e") - (data (i32.const 5456) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") - (data (i32.const 5488) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000") - (data (i32.const 5520) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.") - (data (i32.const 5552) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002") - (data (i32.const 5584) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00e\00x") - (data (i32.const 5616) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x") - (data (i32.const 5648) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x") - (data (i32.const 5680) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x") - (data (i32.const 5712) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") - (data (i32.const 5744) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\00.") - (data (i32.const 5776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\000") - (data (i32.const 5808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\00.") - (data (i32.const 5840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\001\00.") - (data (i32.const 5872) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00.") - (data (i32.const 5904) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00a") - (data (i32.const 5936) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001") - (data (i32.const 5968) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001") - (data (i32.const 6000) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001") - (data (i32.const 6032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000") - (data (i32.const 6064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000") - (data (i32.const 6096) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\000") - (data (i32.const 6128) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\000") - (data (i32.const 6160) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\000") - (data (i32.const 6192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00a") - (data (i32.const 6224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\00.\000") - (data (i32.const 6256) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.") - (data (i32.const 6288) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00.") - (data (i32.const 6320) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 6352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0b") - (data (i32.const 6384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0e\18") - (data (i32.const 6416) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001") - (data (i32.const 6448) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") - (data (i32.const 6480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0c") - (data (i32.const 6512) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 6544) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 6576) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\002") - (data (i32.const 6608) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002") - (data (i32.const 6640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\003") - (data (i32.const 6672) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003") - (data (i32.const 6704) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\007") - (data (i32.const 6736) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007") - (data (i32.const 6768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\008") - (data (i32.const 6800) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008") - (data (i32.const 6832) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") - (data (i32.const 6896) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008") - (data (i32.const 6960) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004") - (data (i32.const 6992) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") - (data (i32.const 7040) "|\00\00\00\01\00\00\00\01\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006") - (data (i32.const 7184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") - (data (i32.const 7216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") - (data (i32.const 7248) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") - (data (i32.const 7280) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") - (data (i32.const 7312) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") - (data (i32.const 7360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") - (data (i32.const 7408) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000") - (data (i32.const 7440) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7488) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7536) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7584) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") - (data (i32.const 7632) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") - (data (i32.const 7680) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i") - (data (i32.const 7712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") - (data (i32.const 7744) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7776) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003") - (data (i32.const 7968) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003") - (data (i32.const 8160) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007") - (data (i32.const 8352) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004") - (data (i32.const 8512) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004") - (data (i32.const 8672) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000") - (data (i32.const 8832) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004") - (data (i32.const 8992) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009") - (data (i32.const 9152) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003") - (data (i32.const 9264) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000") - (data (i32.const 9376) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001") - (data (i32.const 9488) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002") - (data (i32.const 9600) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003") - (data (i32.const 9712) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004") - (data (i32.const 9824) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005") - (data (i32.const 9936) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006") - (data (i32.const 10048) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007") - (data (i32.const 10160) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008") - (data (i32.const 10272) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001") - (data (i32.const 10384) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002") - (data (i32.const 10496) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003") - (data (i32.const 10608) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004") - (data (i32.const 10720) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005") - (data (i32.const 10832) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006") - (data (i32.const 10944) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006") - (data (i32.const 11056) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008") - (data (i32.const 11168) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009") - (data (i32.const 11280) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002") - (data (i32.const 11392) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000") - (data (i32.const 11504) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007") - (data (i32.const 11616) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005") - (data (i32.const 11728) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009") - (data (i32.const 11840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n") - (data (i32.const 11872) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001") - (data (i32.const 11904) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 11936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 11968) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001") - (data (i32.const 12000) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002") - (data (i32.const 12032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\001") - (data (i32.const 12064) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\002") - (data (i32.const 12096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002") - (data (i32.const 12128) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001") - (data (i32.const 12160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 12192) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 12224) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") - (data (i32.const 12272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") - (data (i32.const 12320) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 12352) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00a") - (data (i32.const 12384) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 12432) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00a\00a") - (data (i32.const 12464) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data (i32.const 12496) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data (i32.const 12528) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 12560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 12592) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c") - (data (i32.const 12624) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c") - (data (i32.const 12656) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c") - (data (i32.const 12688) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c") - (data (i32.const 12720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n") - (data (i32.const 12752) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 12784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\00+") - (data (i32.const 12816) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+") - (data (i32.const 12848) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") - (data (i32.const 12896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00+") - (data (i32.const 12928) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") - (data (i32.const 12960) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") - (data (i32.const 13008) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") - (data (i32.const 13040) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c") - (data (i32.const 13072) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c") - (data (i32.const 13104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+") - (data (i32.const 13136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00e") - (data (i32.const 13168) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00c") - (data (i32.const 13200) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00+") - (data (i32.const 13232) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c") - (data (i32.const 13264) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") - (data (i32.const 13296) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data (i32.const 13344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n") - (data (i32.const 13376) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 13408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 13440) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 13472) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 13520) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") - (data (i32.const 13552) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00e\00f\00g") - (data (i32.const 13584) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h") - (data (i32.const 13616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 13648) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 13696) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 13760) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 13872) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 13904) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data (i32.const 13936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 13968) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data (i32.const 14000) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data (i32.const 14032) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data (i32.const 14064) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 14192) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 14256) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 14352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008") - (data (i32.const 14384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\002") - (data (i32.const 14416) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 14448) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 14480) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 14512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 14544) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 14576) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 14608) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008") - (data (i32.const 14640) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") - (data (i32.const 14688) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 14736) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 14784) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 14832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 14864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 14896) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 14944) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 14992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\007\00b") - (data (i32.const 15024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\00d\002") - (data (i32.const 15056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\003\000\003\009") - (data (i32.const 15088) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000") - (data (i32.const 15120) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007") - (data (i32.const 15152) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007") - (data (i32.const 15184) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") - (data (i32.const 15216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") - (data (i32.const 15248) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") - (data (i32.const 15280) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15312) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000") - (data (i32.const 15344) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15376) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15424) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15456) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") - (data (i32.const 15504) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001") - (data (i32.const 15536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\001\001") - (data (i32.const 15568) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\001\001\000") - (data (i32.const 15600) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001") - (data (i32.const 15632) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001") - (data (i32.const 15664) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 15712) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 15792) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") - (data (i32.const 15872) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") - (data (i32.const 15952) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") - (data (i32.const 16032) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 16112) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 16160) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") - (data (i32.const 16224) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 16272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") - (data (i32.const 16320) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 16368) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") - (data (i32.const 16416) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") - (data (i32.const 16464) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") - (data (i32.const 16496) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") - (data (i32.const 16528) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") - (data (i32.const 16560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") - (data (i32.const 16592) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") - (data (i32.const 16624) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 16656) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 16704) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") - (data (i32.const 16752) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 16800) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 16848) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") - (data (i32.const 16896) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") - (data (i32.const 16944) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 16992) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17040) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17104) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17168) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17232) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 17296) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 17328) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 17376) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17424) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17472) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17520) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17584) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 17648) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 17712) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 17760) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 17808) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 17856) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 17904) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 17952) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 18000) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") - (data (i32.const 18048) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18096) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18144) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18208) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 18272) "b\00\00\00\01\00\00\00\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18400) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18544) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18640) "R\00\00\00\01\00\00\00\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") - (data (i32.const 18752) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 18832) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") - (data (i32.const 18912) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 18976) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") - (data (i32.const 19040) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") - (data (i32.const 19104) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") - (data (i32.const 19152) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") - (data (i32.const 19200) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") - (data (i32.const 19248) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") - (data (i32.const 19296) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") - (data (i32.const 19344) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 19376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 19408) "\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#push else local.get $3 - i32.const 1280 + i32.const 1328 call $~lib/array/Array<~lib/string/String>#push end local.get $2 @@ -5748,7 +5799,7 @@ i32.shl local.tee $2 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $4 local.get $0 local.get $5 @@ -5762,7 +5813,7 @@ call $~lib/array/Array<~lib/string/String>#push else local.get $3 - i32.const 1280 + i32.const 1328 call $~lib/array/Array<~lib/string/String>#push end local.get $1 @@ -5771,7 +5822,7 @@ return end i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.get $1 call $~lib/rt/pure/__release @@ -5782,8 +5833,8 @@ i32.load offset=12 i32.ge_u if - i32.const 13712 - i32.const 13664 + i32.const 14336 + i32.const 14288 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5800,8 +5851,8 @@ local.tee $0 i32.eqz if - i32.const 13776 - i32.const 13664 + i32.const 14400 + i32.const 14288 i32.const 108 i32.const 40 call $~lib/builtins/abort @@ -6010,7 +6061,7 @@ i32.wrap_i64 i32.const 1 i32.shl - i32.const 14272 + i32.const 14928 i32.add i32.load16_u i32.store16 @@ -6045,7 +6096,7 @@ i32.wrap_i64 i32.const 1 i32.shl - i32.const 14272 + i32.const 14928 i32.add i32.load16_u i32.store16 @@ -6072,8 +6123,8 @@ i32.lt_s select if - i32.const 14080 - i32.const 14208 + i32.const 14736 + i32.const 14864 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -6082,7 +6133,7 @@ local.get $0 i32.eqz if - i32.const 2432 + i32.const 2576 return end local.get $0 @@ -6107,7 +6158,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $1 @@ -6131,7 +6182,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $1 @@ -6147,7 +6198,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 i64.extend_i32_u @@ -6177,8 +6228,8 @@ i32.lt_s select if - i32.const 14080 - i32.const 14208 + i32.const 14736 + i32.const 14864 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -6187,7 +6238,7 @@ local.get $0 i32.eqz if - i32.const 2432 + i32.const 2576 return end local.get $1 @@ -6200,7 +6251,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -6222,7 +6273,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -6236,7 +6287,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 i64.extend_i32_u @@ -6370,8 +6421,8 @@ i32.lt_s select if - i32.const 14080 - i32.const 14208 + i32.const 14736 + i32.const 14864 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -6380,7 +6431,7 @@ local.get $0 i64.eqz if - i32.const 2432 + i32.const 2576 return end local.get $1 @@ -6399,7 +6450,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $1 local.get $3 @@ -6411,7 +6462,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -6435,7 +6486,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -6448,7 +6499,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $3 @@ -6472,8 +6523,8 @@ i32.lt_s select if - i32.const 14080 - i32.const 14208 + i32.const 14736 + i32.const 14864 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -6482,7 +6533,7 @@ local.get $0 i64.eqz if - i32.const 2432 + i32.const 2576 return end local.get $0 @@ -6514,7 +6565,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $1 local.get $4 @@ -6528,7 +6579,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $1 @@ -6554,7 +6605,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $1 @@ -6569,7 +6620,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $4 @@ -6586,42 +6637,41 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i64) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i64) + (local $7 i32) (local $8 i64) (local $9 i32) (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 + (local $11 i64) + local.get $2 + local.get $0 i64.sub local.set $8 - local.get $3 + local.get $2 i64.const 1 i32.const 0 - local.get $4 + local.get $3 i32.sub - local.tee $11 + local.tee $9 i64.extend_i32_s i64.shl local.tee $10 i64.const 1 i64.sub - local.tee $12 + local.tee $11 i64.and - local.set $7 - local.get $3 - local.get $11 + local.set $6 + local.get $2 + local.get $9 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $1 call $~lib/util/number/decimalCount32 - local.set $9 + local.set $7 loop $while-continue|0 - local.get $9 + local.get $7 i32.const 0 i32.gt_s if @@ -6637,339 +6687,335 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $9 + local.get $7 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $2 + local.get $1 i32.const 1000000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 1000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 1000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 1000 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 100 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 100 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 + local.get $1 i32.const 10 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.const 10 i32.rem_u - local.set $2 + local.set $1 br $break|1 end - local.get $2 - local.set $4 + local.get $1 + local.set $3 i32.const 0 - local.set $2 + local.set $1 br $break|1 end i32.const 0 - local.set $4 + local.set $3 end - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.or if - local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl + i32.const 20560 i32.add - local.get $4 + local.get $3 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 end - local.get $9 + local.get $7 i32.const 1 i32.sub - local.set $9 - local.get $7 - local.get $2 + local.set $7 + local.get $6 + local.get $1 i64.extend_i32_u - local.get $11 + local.get $9 i64.extend_i32_s i64.shl i64.add - local.tee $1 - local.get $5 + local.tee $0 + local.get $4 i64.le_u if - local.get $9 + local.get $7 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $9 + local.get $7 i32.const 2 i32.shl - i32.const 20280 + i32.const 21488 i32.add i64.load32_u - local.get $11 + local.get $9 i64.extend_i32_s i64.shl - local.set $10 - local.get $0 - local.get $6 - i32.const 1 - i32.sub + local.set $2 + local.get $5 i32.const 1 i32.shl + i32.const 20558 i32.add - local.tee $0 + local.tee $3 i32.load16_u - local.set $2 + local.set $1 loop $while-continue|3 i32.const 1 local.get $8 - local.get $1 + local.get $0 i64.sub - local.get $1 - local.get $10 + local.get $0 + local.get $2 i64.add - local.tee $3 + local.tee $6 local.get $8 i64.sub i64.gt_u - local.get $3 + local.get $6 local.get $8 i64.lt_u select i32.const 0 - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.sub - local.get $10 + local.get $2 i64.ge_u i32.const 0 - local.get $1 + local.get $0 local.get $8 i64.lt_u select select if - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add local.set $1 + local.get $0 + local.get $2 + i64.add + local.set $0 br $while-continue|3 end end - local.get $0 - local.get $2 + local.get $3 + local.get $1 i32.store16 - local.get $6 + local.get $5 return end br $while-continue|0 end end - local.get $11 + local.get $9 i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 + local.set $0 + loop $while-continue|4 + local.get $4 i64.const 10 i64.mul - local.set $5 - local.get $7 + local.set $4 + local.get $6 i64.const 10 i64.mul - local.tee $3 - local.get $13 + local.tee $2 + local.get $0 i64.shr_u - local.tee $1 - local.get $6 + local.tee $6 + local.get $5 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl + i32.const 20560 i32.add - local.get $1 + local.get $6 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 end - local.get $9 + local.get $7 i32.const 1 i32.sub - local.set $9 - local.get $3 - local.get $12 + local.set $7 + local.get $2 + local.get $11 i64.and - local.tee $7 - local.get $5 + local.tee $6 + local.get $4 i64.ge_u br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 20280 - i32.add - i64.load32_u - i64.mul - local.set $8 + end + local.get $7 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $6 + local.set $0 + local.get $8 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 21488 + i32.add + i64.load32_u + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.shl + i32.const 20558 + i32.add + local.tee $3 + i32.load16_u + local.set $1 + loop $while-continue|6 + i32.const 1 + local.get $2 local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub + local.get $2 + i64.lt_u + select + i32.const 0 + local.get $4 + local.get $0 + i64.sub + local.get $10 + i64.ge_u + i32.const 0 + local.get $0 + local.get $2 + i64.lt_u + select + select + if local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $0 local.get $10 i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end + local.set $0 + br $while-continue|6 end - local.get $0 - local.get $2 - i32.store16 - local.get $6 end + local.get $3 + local.get $1 + i32.store16 + local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -7214,91 +7260,94 @@ end end ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i32) (local $3 i64) - (local $4 i32) + (local $4 i64) (local $5 i64) - (local $6 i64) - (local $7 i64) + (local $6 i32) + (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 + (local $9 i64) + (local $10 i64) + (local $11 i64) + local.get $0 f64.const 0 f64.lt - local.tee $9 + local.tee $8 if (result f64) - local.get $0 + i32.const 20560 i32.const 45 i32.store16 - local.get $1 + local.get $0 f64.neg else - local.get $1 + local.get $0 end i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $8 + local.tee $6 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 + local.get $3 i64.const 4503599627370495 i64.and i64.add - local.tee $3 + local.tee $1 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 - local.get $2 + local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.set $2 + local.get $3 + local.get $2 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $8 + local.get $6 i32.const 1 - local.get $8 + local.get $6 select i32.const 1075 i32.sub - local.tee $8 + local.tee $6 i32.const 1 i32.sub - local.get $4 + local.get $2 i32.sub - local.set $4 - local.get $3 - local.get $3 + local.set $2 + local.get $1 + local.get $1 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $10 + local.tee $7 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $8 - local.get $10 + local.get $6 + local.get $7 i32.sub - local.get $4 + local.get $2 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $4 + local.get $2 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 @@ -7309,11 +7358,11 @@ f64.mul f64.const 347 f64.add - local.tee $1 + local.tee $0 i32.trunc_f64_s - local.tee $4 - local.get $1 - local.get $4 + local.tee $2 + local.get $0 + local.get $2 f64.convert_i32_s f64.ne i32.add @@ -7321,109 +7370,87 @@ i32.shr_s i32.const 1 i32.add - local.tee $4 + local.tee $2 i32.const 3 i32.shl - local.tee $10 + local.tee $7 i32.sub global.set $~lib/util/number/_K - local.get $10 - i32.const 19408 + local.get $7 + i32.const 20616 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $4 + local.get $2 i32.const 1 i32.shl - i32.const 20104 + i32.const 21312 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 + local.tee $4 i64.const 32 i64.shr_u - local.tee $6 + local.set $3 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 global.get $~lib/util/number/_frc_plus local.tee $5 i64.const 32 i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 + local.tee $10 i64.mul - local.get $2 + local.get $4 local.get $5 i64.const 4294967295 i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 + local.tee $11 i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub local.set $5 - local.get $0 - local.get $9 + local.get $8 i32.const 1 i32.shl + i32.const 20560 i32.add - local.get $0 - local.get $6 - local.get $3 local.get $3 + local.get $1 + local.get $1 i64.clz i32.wrap_i64 - local.tee $0 + local.tee $2 i64.extend_i32_s i64.shl - local.tee $3 + local.tee $1 i64.const 32 i64.shr_u - local.tee $7 + local.tee $9 i64.mul - local.get $2 - local.get $7 + local.get $4 + local.get $9 i64.mul - local.get $2 - local.get $3 + local.get $4 + local.get $1 i64.const 4294967295 i64.and - local.tee $3 + local.tee $1 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.tee $9 i64.const 32 i64.shr_u i64.add + local.get $1 local.get $3 - local.get $6 i64.mul - local.get $7 + local.get $9 i64.const 4294967295 i64.and i64.add @@ -7433,47 +7460,68 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 + local.tee $7 + local.get $6 + local.get $2 i32.sub i32.add i32.const -64 i32.sub + local.get $3 + local.get $10 + i64.mul local.get $5 - local.get $4 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $11 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $1 + local.get $7 global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $5 - local.get $6 + local.get $1 + local.get $3 global.get $~lib/util/number/_frc_minus - local.tee $3 + local.tee $1 i64.const 32 i64.shr_u local.tee $5 i64.mul - local.get $2 + local.get $4 local.get $5 i64.mul - local.get $2 - local.get $3 + local.get $4 + local.get $1 i64.const 4294967295 i64.and - local.tee $2 + local.tee $4 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $3 + local.tee $1 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $6 - i64.mul local.get $3 + local.get $4 + i64.mul + local.get $1 i64.const 4294967295 i64.and i64.add @@ -7485,13 +7533,13 @@ i64.const 1 i64.add i64.sub - local.get $9 + local.get $8 call $~lib/util/number/genDigits - local.get $9 + local.get $8 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $9 + local.get $8 i32.add ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) @@ -7501,7 +7549,7 @@ f64.const 0 f64.eq if - i32.const 19360 + i32.const 20512 return end local.get $0 @@ -7514,11 +7562,11 @@ local.get $0 f64.ne if - i32.const 6336 + i32.const 6736 return end - i32.const 7552 - i32.const 19392 + i32.const 8032 + i32.const 20544 local.get $0 f64.const 0 f64.lt @@ -7526,28 +7574,19 @@ call $~lib/rt/pure/__retain return end - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 local.get $0 call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/pure/__new local.tee $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end + i32.const 20560 local.get $1 - i32.const 0 + call $~lib/memory/memory.copy local.get $2 - call $~lib/string/String#substring - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/pure/__retain ) (func $start:std/string (local $0 i32) @@ -7851,47 +7890,47 @@ (local $298 i32) (local $299 i32) global.get $std/string/str - i32.const 1040 + i32.const 1056 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 - i32.const 1136 + i32.const 1168 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1216 - i32.const 1216 + i32.const 1264 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1248 - i32.const 1248 + i32.const 1296 + i32.const 1296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -7903,7 +7942,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -7925,38 +7964,38 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 call $~lib/string/String.__not i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1296 + i32.const 1360 call $~lib/string/String.__not if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 call $~lib/string/String.__not if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -7967,12 +8006,12 @@ i32.const 0 call $~lib/string/String.fromCharCode@varargs local.tee $7 - i32.const 1296 + i32.const 1360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -7983,12 +8022,12 @@ i32.const 54 call $~lib/string/String.fromCharCode@varargs local.tee $8 - i32.const 1472 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -7999,12 +8038,12 @@ i32.const 65590 call $~lib/string/String.fromCharCode@varargs local.tee $9 - i32.const 1472 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -8014,12 +8053,12 @@ i32.const 57088 call $~lib/string/String.fromCharCode local.tee $10 - i32.const 1504 + i32.const 1584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -8028,12 +8067,12 @@ i32.const 0 call $~lib/string/String.fromCodePoint local.tee $11 - i32.const 1296 + i32.const 1360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -8042,12 +8081,12 @@ i32.const 54 call $~lib/string/String.fromCodePoint local.tee $12 - i32.const 1472 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -8056,12 +8095,12 @@ i32.const 119558 call $~lib/string/String.fromCodePoint local.tee $13 - i32.const 1584 + i32.const 1664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -8069,11 +8108,11 @@ end global.get $std/string/str local.set $5 - i32.const 1616 + i32.const 1696 if (result i32) - i32.const 1616 + i32.const 1696 else - i32.const 1616 + i32.const 1696 call $~lib/rt/pure/__release i32.const 0 end @@ -8088,14 +8127,14 @@ i32.lt_s select local.tee $4 - i32.const 1616 + i32.const 1696 call $~lib/string/String#get:length local.tee $0 i32.add local.get $2 i32.gt_s if - i32.const 1616 + i32.const 1696 call $~lib/rt/pure/__release i32.const 0 local.set $0 @@ -8103,19 +8142,19 @@ end local.get $5 local.get $4 - i32.const 1616 + i32.const 1696 local.get $0 call $~lib/util/string/compareImpl i32.eqz local.set $0 - i32.const 1616 + i32.const 1696 call $~lib/rt/pure/__release end local.get $0 i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -8124,15 +8163,15 @@ global.get $std/string/str local.set $4 block $__inlined_func$~lib/string/String#endsWith - i32.const 536870904 + i32.const 536870910 local.get $4 call $~lib/string/String#get:length local.tee $0 - i32.const 536870904 + i32.const 536870910 local.get $0 i32.lt_s select - i32.const 1680 + i32.const 1760 call $~lib/string/String#get:length local.tee $1 i32.sub @@ -8140,7 +8179,7 @@ i32.const 0 i32.lt_s if - i32.const 1680 + i32.const 1760 call $~lib/rt/pure/__release i32.const 0 local.set $0 @@ -8148,36 +8187,36 @@ end local.get $4 local.get $0 - i32.const 1680 + i32.const 1760 local.get $1 call $~lib/util/string/compareImpl i32.eqz local.set $0 - i32.const 1680 + i32.const 1760 call $~lib/rt/pure/__release end local.get $0 i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1712 + i32.const 1792 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne - i32.const 1712 + i32.const 1792 call $~lib/rt/pure/__release i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -8185,7 +8224,7 @@ end global.get $std/string/str i32.const 0 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padStart local.tee $14 global.get $std/string/str @@ -8193,7 +8232,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -8201,7 +8240,7 @@ end global.get $std/string/str i32.const 15 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padStart local.tee $15 global.get $std/string/str @@ -8209,103 +8248,103 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 3 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padStart local.tee $16 - i32.const 1776 + i32.const 1856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 10 - i32.const 1280 + i32.const 1328 call $~lib/string/String#padStart local.tee $17 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 100 - i32.const 1280 + i32.const 1328 call $~lib/string/String#padStart local.tee $18 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 i32.const 5 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padStart local.tee $19 - i32.const 1840 + i32.const 1920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 i32.const 6 - i32.const 1872 + i32.const 1952 call $~lib/string/String#padStart local.tee $20 - i32.const 1904 + i32.const 1984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 i32.const 8 - i32.const 1872 + i32.const 1952 call $~lib/string/String#padStart local.tee $21 - i32.const 1936 + i32.const 2016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -8313,7 +8352,7 @@ end global.get $std/string/str i32.const 0 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padEnd local.tee $22 global.get $std/string/str @@ -8321,7 +8360,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -8329,7 +8368,7 @@ end global.get $std/string/str i32.const 15 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padEnd local.tee $23 global.get $std/string/str @@ -8337,141 +8376,141 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 3 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padEnd local.tee $24 - i32.const 1776 + i32.const 1856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 10 - i32.const 1280 + i32.const 1328 call $~lib/string/String#padEnd local.tee $25 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 100 - i32.const 1280 + i32.const 1328 call $~lib/string/String#padEnd local.tee $26 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 i32.const 5 - i32.const 1744 + i32.const 1824 call $~lib/string/String#padEnd local.tee $27 - i32.const 1968 + i32.const 2064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 i32.const 6 - i32.const 1808 + i32.const 1888 call $~lib/string/String#padEnd local.tee $28 - i32.const 2000 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 i32.const 8 - i32.const 1808 + i32.const 1888 call $~lib/string/String#padEnd local.tee $29 - i32.const 2032 + i32.const 2128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1616 + i32.const 1328 + i32.const 1696 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + i32.const 1392 + i32.const 1392 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -8483,122 +8522,122 @@ call $~lib/string/String#indexOf if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1280 + i32.const 1328 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2176 i32.const 0 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2096 + i32.const 2208 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2176 i32.const 2 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2176 i32.const 3 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2128 + i32.const 2240 i32.const -1 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 i32.const 2147483647 call $~lib/string/String#lastIndexOf if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1616 + i32.const 1328 + i32.const 1696 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1280 + i32.const 1328 i32.const 2147483647 call $~lib/string/String#lastIndexOf global.get $std/string/str @@ -8606,622 +8645,622 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2176 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2096 + i32.const 2208 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2160 + i32.const 2272 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2176 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2176 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2128 + i32.const 2240 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2192 + i32.const 2304 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1616 + i32.const 1696 i32.const 0 call $~lib/string/String#lastIndexOf if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 call $~lib/string/String#localeCompare if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1392 i32.const 1328 - i32.const 1280 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 76 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 i32.const 1328 + i32.const 1392 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1648 - i32.const 1648 + i32.const 1728 + i32.const 1728 call $~lib/string/String#localeCompare if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2224 + i32.const 1888 + i32.const 2336 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2224 - i32.const 1808 + i32.const 2336 + i32.const 1888 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2256 - i32.const 1808 + i32.const 2368 + i32.const 1888 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2256 + i32.const 1888 + i32.const 2368 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1776 + i32.const 1328 + i32.const 1856 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1296 - i32.const 1280 + i32.const 1360 + i32.const 1328 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 call $~lib/string/String#trimStart local.tee $30 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2288 + i32.const 2400 call $~lib/string/String#trimStart local.tee $31 - i32.const 2288 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2320 + i32.const 2432 call $~lib/string/String#trimStart local.tee $32 - i32.const 2368 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 call $~lib/string/String#trimEnd local.tee $33 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2288 + i32.const 2400 call $~lib/string/String#trimEnd local.tee $34 - i32.const 2288 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2320 + i32.const 2432 call $~lib/string/String#trimEnd local.tee $35 - i32.const 2400 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 call $~lib/string/String#trim local.tee $36 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2288 + i32.const 2400 call $~lib/string/String#trim local.tee $37 - i32.const 2288 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2320 + i32.const 2432 call $~lib/string/String#trim local.tee $38 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 2576 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 + i32.const 2608 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2496 + i32.const 2640 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 + i32.const 2672 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2560 + i32.const 2704 i32.const 0 call $~lib/string/parseInt f64.const 5 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2592 + i32.const 2736 i32.const 0 call $~lib/string/parseInt f64.const 455 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2624 + i32.const 2768 i32.const 0 call $~lib/string/parseInt f64.const 3855 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2656 + i32.const 2800 i32.const 0 call $~lib/string/parseInt f64.const 3855 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2688 + i32.const 2832 i32.const 0 call $~lib/string/parseInt f64.const 11 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2720 + i32.const 2864 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2752 + i32.const 2896 i32.const 0 call $~lib/string/parseInt f64.const -123 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 + i32.const 2928 i32.const 0 call $~lib/string/parseInt f64.const 123 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2816 + i32.const 2960 i32.const 0 call $~lib/string/parseInt f64.const -12 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 2576 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2848 + i32.const 2992 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 + i32.const 3024 i32.const 16 call $~lib/string/parseInt f64.const 2833 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 + i32.const 3056 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2944 + i32.const 3088 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 + i32.const 3120 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 + i32.const 3152 i32.const 0 call $~lib/string/parseInt i64.reinterpret_f64 @@ -9230,132 +9269,132 @@ i64.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 117 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3040 + i32.const 3184 i32.const 0 call $~lib/string/parseInt - i32.const 3072 + i32.const 3232 i32.const 16 call $~lib/string/parseInt f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 118 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3104 + i32.const 3264 i32.const 0 call $~lib/string/parseInt f64.const 36893488147419103232 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3104 + i32.const 3264 i32.const 13 call $~lib/string/parseInt f64.const 5135857308667095285760 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3168 + i32.const 3328 i32.const 10 call $~lib/string/parseInt f64.const -1.e+24 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3248 + i32.const 3408 i32.const 16 call $~lib/string/parseInt f64.const 75557863725914323419136 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 122 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3312 + i32.const 3472 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3344 + i32.const 3504 i32.const 0 call $~lib/string/parseInt f64.const 2 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 124 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3376 + i32.const 3552 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3408 + i32.const 3584 i32.const 0 call $~lib/string/parseInt f64.const 2 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 0 call $~lib/string/parseInt local.tee $3 @@ -9363,13 +9402,13 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3440 + i32.const 3632 i32.const 0 call $~lib/string/parseInt local.tee $3 @@ -9377,13 +9416,13 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 + i32.const 3664 i32.const 0 call $~lib/string/parseInt local.tee $3 @@ -9391,13 +9430,13 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1872 + i32.const 1952 i32.const 37 call $~lib/string/parseInt local.tee $3 @@ -9405,13 +9444,13 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3504 + i32.const 3696 i32.const 0 call $~lib/string/parseInt local.tee $3 @@ -9419,13 +9458,13 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3536 + i32.const 3728 i32.const 0 call $~lib/string/parseInt local.tee $3 @@ -9433,31 +9472,31 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3536 + i32.const 3728 i32.const 0 call $~lib/util/string/strtol f32.demote_f64 local.set $6 - i32.const 3536 + i32.const 3728 call $~lib/rt/pure/__release local.get $6 local.get $6 f32.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3536 + i32.const 3728 i32.const 0 call $~lib/string/parseInt local.tee $3 @@ -9465,1511 +9504,1511 @@ f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 + i32.const 3760 call $~lib/util/string/strtol - i32.const 3568 + i32.const 3760 call $~lib/rt/pure/__release i32.const 2147483647 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3616 + i32.const 3808 call $~lib/util/string/strtol - i32.const 3616 + i32.const 3808 call $~lib/rt/pure/__release i64.const 9223372036854775807 i64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 2576 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2496 + i32.const 2640 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3856 + i32.const 4064 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3888 + i32.const 4096 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3920 + i32.const 4128 call $~lib/string/parseFloat f64.const 1e-05 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3952 + i32.const 4160 call $~lib/string/parseFloat f64.const -1e-05 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 146 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3984 + i32.const 4192 call $~lib/string/parseFloat f64.const -3e-23 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4016 + i32.const 4240 call $~lib/string/parseFloat f64.const 3e21 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4048 + i32.const 4288 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 4320 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4112 + i32.const 4352 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 + i32.const 4384 call $~lib/string/parseFloat f64.const 0.25 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4176 + i32.const 4416 call $~lib/string/parseFloat f64.const 1e3 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4208 + i32.const 4448 call $~lib/string/parseFloat f64.const 1e-10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4240 + i32.const 4496 call $~lib/string/parseFloat f64.const 1e-30 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4272 + i32.const 4544 call $~lib/string/parseFloat f64.const 1e-323 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4304 + i32.const 4592 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 157 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4336 + i32.const 4640 call $~lib/string/parseFloat f64.const 1.e+308 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4368 + i32.const 4672 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 159 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 160 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 + i32.const 4704 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 163 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4432 + i32.const 4752 call $~lib/string/parseFloat f64.const 1e-10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 164 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4480 + i32.const 4800 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 165 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4512 + i32.const 4848 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4544 + i32.const 4880 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 167 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4576 + i32.const 4912 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 168 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4624 + i32.const 4960 call $~lib/string/parseFloat f64.const 123456789 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4672 + i32.const 5008 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4720 + i32.const 5056 call $~lib/string/parseFloat f64.const 1e-60 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4752 + i32.const 5088 call $~lib/string/parseFloat f64.const 1.e+60 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4784 + i32.const 5120 call $~lib/string/parseFloat f64.const -0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4816 + i32.const 5168 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4848 + i32.const 5200 call $~lib/string/parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4896 + i32.const 5248 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4944 + i32.const 5296 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4992 + i32.const 5344 call $~lib/string/parseFloat f64.const 0.022 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5024 + i32.const 5392 call $~lib/string/parseFloat f64.const 11 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2848 + i32.const 2992 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5056 + i32.const 5424 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5088 + i32.const 5456 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5120 + i32.const 5488 call $~lib/string/parseFloat f64.const 1.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5152 + i32.const 5520 call $~lib/string/parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5184 + i32.const 5552 call $~lib/string/parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5216 + i32.const 5584 call $~lib/string/parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 189 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5248 + i32.const 5616 call $~lib/string/parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 190 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5280 + i32.const 5648 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5312 + i32.const 5680 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5344 + i32.const 5712 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5376 + i32.const 5744 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5408 + i32.const 5776 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5440 + i32.const 5808 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5472 + i32.const 5840 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5504 + i32.const 5888 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5536 + i32.const 5920 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 199 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5568 + i32.const 5952 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5600 + i32.const 5984 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5632 + i32.const 6016 call $~lib/string/parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 202 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5664 + i32.const 6048 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 203 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5696 + i32.const 6080 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5728 + i32.const 6112 call $~lib/string/parseFloat f64.const 0.01 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5760 + i32.const 6160 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5792 + i32.const 6192 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5824 + i32.const 6224 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5856 + i32.const 6256 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5888 + i32.const 6288 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5920 + i32.const 6320 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5952 + i32.const 6352 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5984 + i32.const 6384 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6016 + i32.const 6416 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6048 + i32.const 6448 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6080 + i32.const 6480 call $~lib/string/parseFloat f64.const -0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6112 + i32.const 6512 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 + i32.const 3152 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 + i32.const 3664 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3440 + i32.const 3632 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6144 + i32.const 6544 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6176 + i32.const 6576 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6208 + i32.const 6608 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6240 + i32.const 6640 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6272 + i32.const 6672 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6304 + i32.const 6704 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6336 + i32.const 6736 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6368 + i32.const 6768 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6400 + i32.const 6800 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6432 + i32.const 6832 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6464 + i32.const 6864 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6496 + i32.const 6896 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6528 + i32.const 6928 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6560 + i32.const 6960 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6592 + i32.const 6992 call $~lib/string/parseFloat f64.const 1e22 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6624 + i32.const 7024 call $~lib/string/parseFloat f64.const 1e-22 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6656 + i32.const 7056 call $~lib/string/parseFloat f64.const 1.e+23 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6688 + i32.const 7088 call $~lib/string/parseFloat f64.const 1e-23 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6720 + i32.const 7120 call $~lib/string/parseFloat f64.const 1.e+37 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6752 + i32.const 7152 call $~lib/string/parseFloat f64.const 1e-37 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6784 + i32.const 7184 call $~lib/string/parseFloat f64.const 1.e+38 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6816 + i32.const 7216 call $~lib/string/parseFloat f64.const 1e-38 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6848 + i32.const 7248 call $~lib/string/parseFloat f64.const 2.220446049250313e-16 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6912 + i32.const 7312 call $~lib/string/parseFloat f64.const 1797693134862315708145274e284 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6976 + i32.const 7392 call $~lib/string/parseFloat f64.const 5e-324 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7008 + i32.const 7424 call $~lib/string/parseFloat f64.const 1.e+308 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7056 + i32.const 7472 call $~lib/string/parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7200 + i32.const 7616 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7232 + i32.const 7664 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7264 + i32.const 7712 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7296 + i32.const 7760 call $~lib/string/parseFloat f64.const -inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7328 + i32.const 7808 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7376 + i32.const 7856 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7424 + i32.const 7904 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7456 + i32.const 7936 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7504 + i32.const 7984 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7552 + i32.const 8032 call $~lib/string/parseFloat f64.const -inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7600 + i32.const 8080 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7648 + i32.const 8128 call $~lib/string/parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7696 + i32.const 8176 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7728 + i32.const 8208 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7760 + i32.const 8256 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7792 + i32.const 8304 call $~lib/string/parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 266 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7984 + i32.const 8496 call $~lib/string/parseFloat f64.const 1e-323 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8176 + i32.const 8688 call $~lib/string/parseFloat f64.const 2.225073858507202e-308 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 283 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8368 - i32.const 8528 + i32.const 8880 + i32.const 9040 call $~lib/string/String.__concat local.tee $40 - i32.const 8688 + i32.const 9200 call $~lib/string/String.__concat local.tee $41 - i32.const 8848 + i32.const 9360 call $~lib/string/String.__concat local.tee $42 - i32.const 9008 + i32.const 9520 call $~lib/string/String.__concat local.tee $43 call $~lib/string/parseFloat @@ -10977,349 +11016,349 @@ f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 286 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9168 + i32.const 9680 call $~lib/string/parseFloat f64.const 9.753531888799502e-104 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 304 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9280 + i32.const 9792 call $~lib/string/parseFloat f64.const 0.5961860348131807 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 305 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9392 + i32.const 9904 call $~lib/string/parseFloat f64.const 0.18150131692180388 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 306 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9504 + i32.const 10016 call $~lib/string/parseFloat f64.const 0.42070823575344535 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 307 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9616 + i32.const 10128 call $~lib/string/parseFloat f64.const 0.6654686306516261 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9728 + i32.const 10240 call $~lib/string/parseFloat f64.const 0.6101852922970868 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 309 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9840 + i32.const 10352 call $~lib/string/parseFloat f64.const 0.7696695208236968 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 310 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9952 + i32.const 10464 call $~lib/string/parseFloat f64.const 0.25050653222286823 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 311 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10064 + i32.const 10576 call $~lib/string/parseFloat f64.const 0.2740037230228005 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10176 + i32.const 10688 call $~lib/string/parseFloat f64.const 0.20723093500497428 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 313 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10288 + i32.const 10800 call $~lib/string/parseFloat f64.const 7.900280238081605 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 314 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10400 + i32.const 10912 call $~lib/string/parseFloat f64.const 98.22860653737297 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10512 + i32.const 11024 call $~lib/string/parseFloat f64.const 746.894972319037 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 316 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10624 + i32.const 11136 call $~lib/string/parseFloat f64.const 1630.2683202827284 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 317 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10736 + i32.const 11248 call $~lib/string/parseFloat f64.const 46371.68629719171 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 318 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10848 + i32.const 11360 call $~lib/string/parseFloat f64.const 653780.5944497711 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 319 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10960 + i32.const 11472 call $~lib/string/parseFloat f64.const 234632.43565024371 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 320 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11072 + i32.const 11584 call $~lib/string/parseFloat f64.const 97094817.16420048 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 321 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11184 + i32.const 11696 call $~lib/string/parseFloat f64.const 499690852.20518744 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 322 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11296 + i32.const 11808 call $~lib/string/parseFloat f64.const 7925201200557245595648 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 323 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11408 + i32.const 11920 call $~lib/string/parseFloat f64.const 6096564585983177528398588e5 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 324 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11520 + i32.const 12032 call $~lib/string/parseFloat f64.const 4800416117477028695992383e42 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 325 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11632 + i32.const 12144 call $~lib/string/parseFloat f64.const 8524829079817968137287277e80 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 326 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11744 + i32.const 12256 call $~lib/string/parseFloat f64.const 3271239291709782092398754e243 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 327 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11856 + i32.const 12368 call $~lib/string/parseFloat local.tee $3 local.get $3 f64.eq if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 330 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 + i32.const 12400 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 331 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 11920 + i32.const 1392 + i32.const 12432 call $~lib/string/String.__concat local.tee $0 call $~lib/rt/pure/__retain local.tee $1 - i32.const 11952 + i32.const 12464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 336 i32.const 3 call $~lib/builtins/abort @@ -11329,340 +11368,340 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 338 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 0 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 340 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 11920 + i32.const 1392 + i32.const 12432 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + i32.const 1392 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 342 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 12016 + i32.const 12496 + i32.const 12528 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11984 + i32.const 12496 + i32.const 12496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 344 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12048 - i32.const 12080 + i32.const 12560 + i32.const 12592 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12112 - i32.const 12144 + i32.const 12624 + i32.const 12656 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12176 - i32.const 12176 + i32.const 12688 + i32.const 12688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 347 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12176 - i32.const 12208 + i32.const 12688 + i32.const 12736 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12240 - i32.const 12288 + i32.const 12784 + i32.const 12832 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11920 - i32.const 1328 + i32.const 12432 + i32.const 1392 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12336 - i32.const 1328 + i32.const 12880 + i32.const 1392 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 352 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12336 - i32.const 12368 + i32.const 12880 + i32.const 12912 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12336 - i32.const 11952 + i32.const 12880 + i32.const 12464 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12336 - i32.const 11952 + i32.const 12880 + i32.const 12464 call $~lib/string/String.__lt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 355 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11920 + i32.const 12432 i32.const 0 call $~lib/string/String.__lt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 357 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__lt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 358 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1808 + i32.const 1328 + i32.const 1888 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 361 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 362 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1888 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 363 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 call $~lib/string/String.__lt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 364 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1808 + i32.const 1328 + i32.const 1888 call $~lib/string/String.__gt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 365 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 call $~lib/string/String.__lt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 366 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 call $~lib/string/String.__gt if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 367 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 368 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 369 i32.const 1 call $~lib/builtins/abort @@ -11685,7 +11724,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 374 i32.const 3 call $~lib/builtins/abort @@ -11701,692 +11740,692 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 1872 + i32.const 1952 call $~lib/string/String#get:length i32.const 3 i32.ne if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 377 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 100 call $~lib/string/String#repeat local.tee $44 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 0 call $~lib/string/String#repeat local.tee $45 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 380 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 1 call $~lib/string/String#repeat local.tee $46 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 381 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 2 call $~lib/string/String#repeat local.tee $47 - i32.const 12368 + i32.const 12912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 382 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 3 call $~lib/string/String#repeat local.tee $48 - i32.const 12448 + i32.const 12992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 383 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 + i32.const 12464 i32.const 4 call $~lib/string/String#repeat local.tee $49 - i32.const 12480 + i32.const 13024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 5 call $~lib/string/String#repeat local.tee $50 - i32.const 12512 + i32.const 13072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 385 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 6 call $~lib/string/String#repeat local.tee $51 - i32.const 12544 + i32.const 13104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 386 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 + i32.const 1392 i32.const 7 call $~lib/string/String#repeat local.tee $52 - i32.const 12576 + i32.const 13136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 387 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 + i32.const 1328 call $~lib/string/String#replace local.tee $53 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 389 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 - i32.const 3472 + i32.const 1328 + i32.const 1328 + i32.const 3664 call $~lib/string/String#replace local.tee $54 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 - i32.const 3472 - i32.const 1280 + i32.const 3664 + i32.const 3664 + i32.const 1328 call $~lib/string/String#replace local.tee $55 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 - i32.const 1280 - i32.const 1280 + i32.const 3664 + i32.const 1328 + i32.const 1328 call $~lib/string/String#replace local.tee $56 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 3440 - i32.const 3472 + i32.const 1888 + i32.const 3632 + i32.const 3664 call $~lib/string/String#replace local.tee $57 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 - i32.const 3472 + i32.const 1888 + i32.const 1888 + i32.const 3664 call $~lib/string/String#replace local.tee $58 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 394 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2256 - i32.const 3472 + i32.const 1888 + i32.const 2368 + i32.const 3664 call $~lib/string/String#replace local.tee $59 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 395 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 11952 - i32.const 11952 + i32.const 1888 + i32.const 12464 + i32.const 12464 call $~lib/string/String#replace local.tee $60 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12608 - i32.const 3440 - i32.const 3472 + i32.const 13184 + i32.const 3632 + i32.const 3664 call $~lib/string/String#replace local.tee $61 - i32.const 12640 + i32.const 13216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 - i32.const 3472 + i32.const 1888 + i32.const 1328 + i32.const 3664 call $~lib/string/String#replace local.tee $62 - i32.const 12672 + i32.const 13248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 398 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12704 - i32.const 12736 - i32.const 3472 + i32.const 13280 + i32.const 13312 + i32.const 3664 call $~lib/string/String#replace local.tee $63 - i32.const 12672 + i32.const 13248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 12768 - i32.const 12800 + i32.const 1888 + i32.const 13344 + i32.const 13376 call $~lib/string/String#replace local.tee $64 - i32.const 12832 + i32.const 13408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 12768 - i32.const 1280 + i32.const 1888 + i32.const 13344 + i32.const 1328 call $~lib/string/String#replace local.tee $65 - i32.const 11952 + i32.const 12464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 401 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 - i32.const 1808 + i32.const 1328 + i32.const 1328 + i32.const 1888 call $~lib/string/String#replaceAll local.tee $66 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 3440 - i32.const 3472 + i32.const 1888 + i32.const 3632 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $67 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 404 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 - i32.const 1808 - i32.const 3472 + i32.const 2096 + i32.const 1888 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $68 - i32.const 12800 + i32.const 13376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 406 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12864 - i32.const 1808 - i32.const 3472 + i32.const 13440 + i32.const 1888 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $69 - i32.const 12912 + i32.const 13488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 407 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 - i32.const 11952 - i32.const 11952 + i32.const 2096 + i32.const 12464 + i32.const 12464 call $~lib/string/String#replaceAll local.tee $70 - i32.const 2000 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 408 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12944 - i32.const 1328 - i32.const 12912 + i32.const 13520 + i32.const 1392 + i32.const 13488 call $~lib/string/String#replaceAll local.tee $71 - i32.const 12976 + i32.const 13568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 409 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 - i32.const 11952 - i32.const 12800 + i32.const 2096 + i32.const 12464 + i32.const 13376 call $~lib/string/String#replaceAll local.tee $72 - i32.const 13024 + i32.const 13616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13056 - i32.const 13088 - i32.const 12800 + i32.const 13648 + i32.const 13680 + i32.const 13376 call $~lib/string/String#replaceAll local.tee $73 - i32.const 13120 + i32.const 13712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 411 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2256 - i32.const 3472 + i32.const 1888 + i32.const 2368 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $74 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2256 - i32.const 13152 - i32.const 12800 + i32.const 2368 + i32.const 13744 + i32.const 13376 call $~lib/string/String#replaceAll local.tee $75 - i32.const 2256 + i32.const 2368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 13184 - i32.const 3472 + i32.const 1888 + i32.const 13776 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $76 - i32.const 13216 + i32.const 13808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 - i32.const 11952 - i32.const 3472 + i32.const 12464 + i32.const 12464 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $77 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12608 - i32.const 3440 - i32.const 3472 + i32.const 13184 + i32.const 3632 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $78 - i32.const 13248 + i32.const 13840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 + i32.const 1328 call $~lib/string/String#replaceAll local.tee $79 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 - i32.const 3472 + i32.const 1328 + i32.const 1328 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $80 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 - i32.const 3472 - i32.const 1280 + i32.const 3664 + i32.const 3664 + i32.const 1328 call $~lib/string/String#replaceAll local.tee $81 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 - i32.const 1280 - i32.const 1280 + i32.const 3664 + i32.const 1328 + i32.const 1328 call $~lib/string/String#replaceAll local.tee $82 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 421 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 - i32.const 3440 + i32.const 1888 + i32.const 1888 + i32.const 3632 call $~lib/string/String#replaceAll local.tee $83 - i32.const 3440 + i32.const 3632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2224 - i32.const 3440 + i32.const 1888 + i32.const 2336 + i32.const 3632 call $~lib/string/String#replaceAll local.tee $84 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 423 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 - i32.const 3472 + i32.const 1888 + i32.const 1328 + i32.const 3664 call $~lib/string/String#replaceAll local.tee $85 - i32.const 13280 + i32.const 13872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 - i32.const 1280 + i32.const 1888 + i32.const 1328 + i32.const 1328 call $~lib/string/String#replaceAll local.tee $86 - i32.const 1808 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 425 i32.const 1 call $~lib/builtins/abort @@ -12394,19 +12433,19 @@ end global.get $std/string/str call $~lib/rt/pure/__release - i32.const 13312 + i32.const 13920 global.set $std/string/str - i32.const 13312 + i32.const 13920 i32.const 0 i32.const 2147483647 call $~lib/string/String#slice local.tee $87 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 429 i32.const 1 call $~lib/builtins/abort @@ -12417,12 +12456,12 @@ i32.const 2147483647 call $~lib/string/String#slice local.tee $88 - i32.const 13360 + i32.const 13968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 430 i32.const 1 call $~lib/builtins/abort @@ -12433,12 +12472,12 @@ i32.const 2147483647 call $~lib/string/String#slice local.tee $89 - i32.const 13392 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 431 i32.const 1 call $~lib/builtins/abort @@ -12449,12 +12488,12 @@ i32.const 7 call $~lib/string/String#slice local.tee $90 - i32.const 13424 + i32.const 14032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 432 i32.const 1 call $~lib/builtins/abort @@ -12465,12 +12504,12 @@ i32.const -6 call $~lib/string/String#slice local.tee $91 - i32.const 13456 + i32.const 14064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 433 i32.const 1 call $~lib/builtins/abort @@ -12481,12 +12520,12 @@ i32.const 3 call $~lib/string/String#slice local.tee $92 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 434 i32.const 1 call $~lib/builtins/abort @@ -12497,12 +12536,12 @@ i32.const -1 call $~lib/string/String#slice local.tee $93 - i32.const 13488 + i32.const 14096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 435 i32.const 1 call $~lib/builtins/abort @@ -12513,12 +12552,12 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $94 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 437 i32.const 1 call $~lib/builtins/abort @@ -12529,12 +12568,12 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $95 - i32.const 13360 + i32.const 13968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 438 i32.const 1 call $~lib/builtins/abort @@ -12545,12 +12584,12 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $96 - i32.const 13392 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 439 i32.const 1 call $~lib/builtins/abort @@ -12561,12 +12600,12 @@ i32.const 7 call $~lib/string/String#substr local.tee $97 - i32.const 13536 + i32.const 14144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 440 i32.const 1 call $~lib/builtins/abort @@ -12577,12 +12616,12 @@ i32.const -6 call $~lib/string/String#substr local.tee $98 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 441 i32.const 1 call $~lib/builtins/abort @@ -12593,12 +12632,12 @@ i32.const 3 call $~lib/string/String#substr local.tee $99 - i32.const 13568 + i32.const 14192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 442 i32.const 1 call $~lib/builtins/abort @@ -12609,12 +12648,12 @@ i32.const -1 call $~lib/string/String#substr local.tee $100 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 443 i32.const 1 call $~lib/builtins/abort @@ -12625,12 +12664,12 @@ i32.const 100 call $~lib/string/String#substr local.tee $101 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 444 i32.const 1 call $~lib/builtins/abort @@ -12641,12 +12680,12 @@ i32.const 4 call $~lib/string/String#substr local.tee $102 - i32.const 13600 + i32.const 14224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 445 i32.const 1 call $~lib/builtins/abort @@ -12657,12 +12696,12 @@ i32.const -3 call $~lib/string/String#substr local.tee $103 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 446 i32.const 1 call $~lib/builtins/abort @@ -12673,12 +12712,12 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $104 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 448 i32.const 1 call $~lib/builtins/abort @@ -12689,12 +12728,12 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $105 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 449 i32.const 1 call $~lib/builtins/abort @@ -12705,12 +12744,12 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $106 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 450 i32.const 1 call $~lib/builtins/abort @@ -12721,12 +12760,12 @@ i32.const 7 call $~lib/string/String#substring local.tee $107 - i32.const 13424 + i32.const 14032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 451 i32.const 1 call $~lib/builtins/abort @@ -12737,12 +12776,12 @@ i32.const -6 call $~lib/string/String#substring local.tee $108 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 452 i32.const 1 call $~lib/builtins/abort @@ -12753,12 +12792,12 @@ i32.const 3 call $~lib/string/String#substring local.tee $109 - i32.const 13632 + i32.const 14256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 453 i32.const 1 call $~lib/builtins/abort @@ -12769,12 +12808,12 @@ i32.const -1 call $~lib/string/String#substring local.tee $110 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 454 i32.const 1 call $~lib/builtins/abort @@ -12785,12 +12824,12 @@ i32.const 100 call $~lib/string/String#substring local.tee $111 - i32.const 13312 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 455 i32.const 1 call $~lib/builtins/abort @@ -12801,12 +12840,12 @@ i32.const 4 call $~lib/string/String#substring local.tee $112 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 456 i32.const 1 call $~lib/builtins/abort @@ -12817,18 +12856,18 @@ i32.const -3 call $~lib/string/String#substring local.tee $113 - i32.const 2256 + i32.const 2368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1328 i32.const 0 i32.const 2147483647 call $~lib/string/String#split @@ -12841,7 +12880,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -12854,14 +12893,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 1280 + i32.const 1328 + i32.const 1328 i32.const 2147483647 call $~lib/string/String#split local.set $1 @@ -12871,14 +12910,14 @@ i32.load offset=12 if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 465 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 2064 + i32.const 1328 + i32.const 2176 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -12892,7 +12931,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -12905,14 +12944,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 467 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13888 - i32.const 6272 + i32.const 14528 + i32.const 6672 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -12926,7 +12965,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 13888 + i32.const 14528 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -12939,14 +12978,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 469 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13888 - i32.const 2064 + i32.const 14528 + i32.const 2176 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -12960,7 +12999,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -12975,7 +13014,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -12990,7 +13029,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13003,14 +13042,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 471 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13920 - i32.const 13952 + i32.const 14560 + i32.const 14608 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -13024,7 +13063,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13039,7 +13078,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13054,7 +13093,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13067,14 +13106,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 473 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13984 - i32.const 2064 + i32.const 14640 + i32.const 2176 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -13088,7 +13127,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13103,7 +13142,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13118,7 +13157,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13133,7 +13172,7 @@ i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13146,14 +13185,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 475 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 14016 - i32.const 2064 + i32.const 14672 + i32.const 2176 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -13167,7 +13206,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13182,7 +13221,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13197,7 +13236,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13212,7 +13251,7 @@ i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13225,14 +13264,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 477 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 14048 - i32.const 2064 + i32.const 14704 + i32.const 2176 i32.const 2147483647 call $~lib/string/String#split local.get $1 @@ -13246,7 +13285,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13261,7 +13300,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13276,7 +13315,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13291,7 +13330,7 @@ i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1280 + i32.const 1328 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13304,14 +13343,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 479 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 i32.const 2147483647 call $~lib/string/String#split local.set $0 @@ -13326,7 +13365,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $1 @@ -13341,7 +13380,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $1 @@ -13356,7 +13395,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $1 @@ -13369,14 +13408,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 481 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 i32.const 0 call $~lib/string/String#split local.set $1 @@ -13386,14 +13425,14 @@ i32.load offset=12 if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 483 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 i32.const 1 call $~lib/string/String#split local.get $1 @@ -13407,7 +13446,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13420,14 +13459,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 485 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13888 - i32.const 2064 + i32.const 14528 + i32.const 2176 i32.const 1 call $~lib/string/String#split local.get $1 @@ -13441,7 +13480,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13454,14 +13493,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 i32.const 4 call $~lib/string/String#split local.get $1 @@ -13475,7 +13514,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13490,7 +13529,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13505,7 +13544,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13518,14 +13557,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 489 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1280 + i32.const 1888 + i32.const 1328 i32.const -1 call $~lib/string/String#split local.get $1 @@ -13539,7 +13578,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13554,7 +13593,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13569,7 +13608,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $0 @@ -13582,14 +13621,14 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 491 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13888 - i32.const 2064 + i32.const 14528 + i32.const 2176 i32.const -1 call $~lib/string/String#split local.set $0 @@ -13604,7 +13643,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 1328 + i32.const 1392 call $~lib/string/String.__eq local.set $2 local.get $1 @@ -13619,7 +13658,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 11920 + i32.const 12432 call $~lib/string/String.__eq local.set $2 local.get $1 @@ -13634,7 +13673,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq local.set $2 local.get $1 @@ -13647,7 +13686,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 493 i32.const 3 call $~lib/builtins/abort @@ -13659,12 +13698,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $114 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 498 i32.const 1 call $~lib/builtins/abort @@ -13674,12 +13713,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $115 - i32.const 2496 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 499 i32.const 1 call $~lib/builtins/abort @@ -13689,12 +13728,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $116 - i32.const 14368 + i32.const 15024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 500 i32.const 1 call $~lib/builtins/abort @@ -13704,12 +13743,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $117 - i32.const 14400 + i32.const 15056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 501 i32.const 1 call $~lib/builtins/abort @@ -13719,12 +13758,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $118 - i32.const 1872 + i32.const 1952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 502 i32.const 1 call $~lib/builtins/abort @@ -13734,12 +13773,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $119 - i32.const 14432 + i32.const 15088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 503 i32.const 1 call $~lib/builtins/abort @@ -13749,12 +13788,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $120 - i32.const 14464 + i32.const 15120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 504 i32.const 1 call $~lib/builtins/abort @@ -13764,12 +13803,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $121 - i32.const 14496 + i32.const 15152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 505 i32.const 1 call $~lib/builtins/abort @@ -13779,12 +13818,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $122 - i32.const 14528 + i32.const 15184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 506 i32.const 1 call $~lib/builtins/abort @@ -13794,12 +13833,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $123 - i32.const 14560 + i32.const 15216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 507 i32.const 1 call $~lib/builtins/abort @@ -13809,12 +13848,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $124 - i32.const 14592 + i32.const 15264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 508 i32.const 1 call $~lib/builtins/abort @@ -13824,12 +13863,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $125 - i32.const 14624 + i32.const 15312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 509 i32.const 1 call $~lib/builtins/abort @@ -13839,12 +13878,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $126 - i32.const 14656 + i32.const 15360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 510 i32.const 1 call $~lib/builtins/abort @@ -13854,12 +13893,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $127 - i32.const 14704 + i32.const 15408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 511 i32.const 1 call $~lib/builtins/abort @@ -13869,12 +13908,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $128 - i32.const 14752 + i32.const 15456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 512 i32.const 1 call $~lib/builtins/abort @@ -13884,12 +13923,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $129 - i32.const 14800 + i32.const 15504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 513 i32.const 1 call $~lib/builtins/abort @@ -13899,12 +13938,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $130 - i32.const 14848 + i32.const 15552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 514 i32.const 1 call $~lib/builtins/abort @@ -13914,12 +13953,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $131 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 516 i32.const 1 call $~lib/builtins/abort @@ -13929,12 +13968,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $132 - i32.const 14880 + i32.const 15584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 517 i32.const 1 call $~lib/builtins/abort @@ -13944,12 +13983,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $133 - i32.const 14752 + i32.const 15456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 518 i32.const 1 call $~lib/builtins/abort @@ -13959,12 +13998,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $134 - i32.const 14912 + i32.const 15616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 519 i32.const 1 call $~lib/builtins/abort @@ -13974,12 +14013,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $135 - i32.const 14960 + i32.const 15664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 520 i32.const 1 call $~lib/builtins/abort @@ -13989,12 +14028,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $136 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 524 i32.const 1 call $~lib/builtins/abort @@ -14004,12 +14043,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $137 - i32.const 2496 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 525 i32.const 1 call $~lib/builtins/abort @@ -14019,12 +14058,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $138 - i32.const 14368 + i32.const 15024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 526 i32.const 1 call $~lib/builtins/abort @@ -14034,12 +14073,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $139 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 527 i32.const 1 call $~lib/builtins/abort @@ -14049,12 +14088,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $140 - i32.const 15008 + i32.const 15712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 528 i32.const 1 call $~lib/builtins/abort @@ -14064,12 +14103,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $141 - i32.const 15040 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 529 i32.const 1 call $~lib/builtins/abort @@ -14079,12 +14118,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $142 - i32.const 15072 + i32.const 15776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 530 i32.const 1 call $~lib/builtins/abort @@ -14094,12 +14133,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $143 - i32.const 15104 + i32.const 15808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 531 i32.const 1 call $~lib/builtins/abort @@ -14109,12 +14148,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $144 - i32.const 15136 + i32.const 15840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 532 i32.const 1 call $~lib/builtins/abort @@ -14124,12 +14163,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $145 - i32.const 15168 + i32.const 15872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 533 i32.const 1 call $~lib/builtins/abort @@ -14139,12 +14178,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $146 - i32.const 15200 + i32.const 15904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 534 i32.const 1 call $~lib/builtins/abort @@ -14154,12 +14193,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $147 - i32.const 15232 + i32.const 15936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 535 i32.const 1 call $~lib/builtins/abort @@ -14169,12 +14208,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $148 - i32.const 15264 + i32.const 15984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 536 i32.const 1 call $~lib/builtins/abort @@ -14184,12 +14223,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $149 - i32.const 15296 + i32.const 16032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 537 i32.const 1 call $~lib/builtins/abort @@ -14199,12 +14238,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $150 - i32.const 15328 + i32.const 16080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 538 i32.const 1 call $~lib/builtins/abort @@ -14214,12 +14253,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $151 - i32.const 15360 + i32.const 16128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 539 i32.const 1 call $~lib/builtins/abort @@ -14229,12 +14268,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $152 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 541 i32.const 1 call $~lib/builtins/abort @@ -14244,12 +14283,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $153 - i32.const 14432 + i32.const 15088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 542 i32.const 1 call $~lib/builtins/abort @@ -14259,12 +14298,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $154 - i32.const 15296 + i32.const 16032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 543 i32.const 1 call $~lib/builtins/abort @@ -14274,12 +14313,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $155 - i32.const 15392 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 544 i32.const 1 call $~lib/builtins/abort @@ -14289,12 +14328,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $156 - i32.const 15440 + i32.const 16224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 545 i32.const 1 call $~lib/builtins/abort @@ -14304,12 +14343,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $157 - i32.const 15472 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 546 i32.const 1 call $~lib/builtins/abort @@ -14319,12 +14358,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $158 - i32.const 15472 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 547 i32.const 1 call $~lib/builtins/abort @@ -14334,12 +14373,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $159 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 551 i32.const 1 call $~lib/builtins/abort @@ -14349,12 +14388,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $160 - i32.const 2496 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 552 i32.const 1 call $~lib/builtins/abort @@ -14364,12 +14403,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $161 - i32.const 15520 + i32.const 16320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 553 i32.const 1 call $~lib/builtins/abort @@ -14379,12 +14418,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $162 - i32.const 15552 + i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 554 i32.const 1 call $~lib/builtins/abort @@ -14394,12 +14433,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $163 - i32.const 15584 + i32.const 16384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 555 i32.const 1 call $~lib/builtins/abort @@ -14409,12 +14448,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $164 - i32.const 15616 + i32.const 16416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 556 i32.const 1 call $~lib/builtins/abort @@ -14424,12 +14463,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $165 - i32.const 15648 + i32.const 16448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 557 i32.const 1 call $~lib/builtins/abort @@ -14439,12 +14478,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $166 - i32.const 15680 + i32.const 16480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 558 i32.const 1 call $~lib/builtins/abort @@ -14454,12 +14493,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $167 - i32.const 15728 + i32.const 16528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 559 i32.const 1 call $~lib/builtins/abort @@ -14469,12 +14508,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $168 - i32.const 15808 + i32.const 16608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 560 i32.const 1 call $~lib/builtins/abort @@ -14484,12 +14523,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $169 - i32.const 15888 + i32.const 16704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 561 i32.const 1 call $~lib/builtins/abort @@ -14499,12 +14538,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $170 - i32.const 15968 + i32.const 16800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 562 i32.const 1 call $~lib/builtins/abort @@ -14514,12 +14553,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $171 - i32.const 16048 + i32.const 16896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 563 i32.const 1 call $~lib/builtins/abort @@ -14529,12 +14568,12 @@ i32.const 2 call $~lib/util/number/itoa32 local.tee $172 - i32.const 16128 + i32.const 16992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -14544,12 +14583,12 @@ i32.const 3 call $~lib/util/number/utoa32 local.tee $173 - i32.const 16176 + i32.const 17040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -14559,12 +14598,12 @@ i32.const 4 call $~lib/util/number/utoa32 local.tee $174 - i32.const 16240 + i32.const 17104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -14574,12 +14613,12 @@ i32.const 5 call $~lib/util/number/utoa32 local.tee $175 - i32.const 16288 + i32.const 17168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 571 i32.const 1 call $~lib/builtins/abort @@ -14589,12 +14628,12 @@ i32.const 8 call $~lib/util/number/utoa32 local.tee $176 - i32.const 16336 + i32.const 17216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 572 i32.const 1 call $~lib/builtins/abort @@ -14604,12 +14643,12 @@ i32.const 11 call $~lib/util/number/utoa32 local.tee $177 - i32.const 16384 + i32.const 17264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 573 i32.const 1 call $~lib/builtins/abort @@ -14619,12 +14658,12 @@ i32.const 15 call $~lib/util/number/utoa32 local.tee $178 - i32.const 16432 + i32.const 17312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 574 i32.const 1 call $~lib/builtins/abort @@ -14634,12 +14673,12 @@ i32.const 17 call $~lib/util/number/utoa32 local.tee $179 - i32.const 16480 + i32.const 17360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 575 i32.const 1 call $~lib/builtins/abort @@ -14649,12 +14688,12 @@ i32.const 21 call $~lib/util/number/utoa32 local.tee $180 - i32.const 16512 + i32.const 17408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 576 i32.const 1 call $~lib/builtins/abort @@ -14664,12 +14703,12 @@ i32.const 27 call $~lib/util/number/utoa32 local.tee $181 - i32.const 16544 + i32.const 17456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 577 i32.const 1 call $~lib/builtins/abort @@ -14679,12 +14718,12 @@ i32.const 32 call $~lib/util/number/utoa32 local.tee $182 - i32.const 16576 + i32.const 17504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 578 i32.const 1 call $~lib/builtins/abort @@ -14694,12 +14733,12 @@ i32.const 36 call $~lib/util/number/utoa32 local.tee $183 - i32.const 16608 + i32.const 17552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 579 i32.const 1 call $~lib/builtins/abort @@ -14709,12 +14748,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $184 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 583 i32.const 1 call $~lib/builtins/abort @@ -14724,12 +14763,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $185 - i32.const 14400 + i32.const 15056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -14739,12 +14778,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $186 - i32.const 1872 + i32.const 1952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -14754,12 +14793,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $187 - i32.const 14464 + i32.const 15120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -14769,12 +14808,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $188 - i32.const 14496 + i32.const 15152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -14784,12 +14823,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $189 - i32.const 14528 + i32.const 15184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -14799,12 +14838,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $190 - i32.const 14592 + i32.const 15264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 589 i32.const 1 call $~lib/builtins/abort @@ -14814,12 +14853,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $191 - i32.const 16640 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 590 i32.const 1 call $~lib/builtins/abort @@ -14829,12 +14868,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $192 - i32.const 16672 + i32.const 17648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 591 i32.const 1 call $~lib/builtins/abort @@ -14844,12 +14883,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $193 - i32.const 14960 + i32.const 15664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -14859,12 +14898,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $194 - i32.const 16720 + i32.const 17696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -14874,12 +14913,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $195 - i32.const 16768 + i32.const 17744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -14889,12 +14928,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $196 - i32.const 16816 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -14904,12 +14943,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $197 - i32.const 16864 + i32.const 17840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -14919,12 +14958,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $198 - i32.const 16912 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -14934,12 +14973,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $199 - i32.const 16960 + i32.const 17936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 598 i32.const 1 call $~lib/builtins/abort @@ -14949,12 +14988,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $200 - i32.const 17008 + i32.const 18000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 599 i32.const 1 call $~lib/builtins/abort @@ -14964,12 +15003,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $201 - i32.const 17056 + i32.const 18064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 600 i32.const 1 call $~lib/builtins/abort @@ -14979,12 +15018,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $202 - i32.const 17120 + i32.const 18128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 601 i32.const 1 call $~lib/builtins/abort @@ -14994,12 +15033,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $203 - i32.const 17184 + i32.const 18192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 602 i32.const 1 call $~lib/builtins/abort @@ -15009,12 +15048,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $204 - i32.const 17248 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 603 i32.const 1 call $~lib/builtins/abort @@ -15024,12 +15063,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $205 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 605 i32.const 1 call $~lib/builtins/abort @@ -15039,12 +15078,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $206 - i32.const 17312 + i32.const 18320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 606 i32.const 1 call $~lib/builtins/abort @@ -15054,12 +15093,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $207 - i32.const 14960 + i32.const 15664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 607 i32.const 1 call $~lib/builtins/abort @@ -15069,12 +15108,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $208 - i32.const 16720 + i32.const 17696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 608 i32.const 1 call $~lib/builtins/abort @@ -15084,12 +15123,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $209 - i32.const 17344 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 609 i32.const 1 call $~lib/builtins/abort @@ -15099,12 +15138,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $210 - i32.const 16768 + i32.const 17744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -15114,12 +15153,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $211 - i32.const 17392 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -15129,12 +15168,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $212 - i32.const 17440 + i32.const 18448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -15144,12 +15183,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $213 - i32.const 17488 + i32.const 18496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -15159,12 +15198,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $214 - i32.const 17536 + i32.const 18560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -15174,12 +15213,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $215 - i32.const 17600 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -15189,12 +15228,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $216 - i32.const 17664 + i32.const 18688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 616 i32.const 1 call $~lib/builtins/abort @@ -15204,12 +15243,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $217 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 620 i32.const 1 call $~lib/builtins/abort @@ -15219,12 +15258,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $218 - i32.const 2496 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 621 i32.const 1 call $~lib/builtins/abort @@ -15234,12 +15273,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $219 - i32.const 12768 + i32.const 13344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -15249,12 +15288,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $220 - i32.const 15040 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -15264,12 +15303,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $221 - i32.const 15136 + i32.const 15840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -15279,12 +15318,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $222 - i32.const 17728 + i32.const 18752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -15294,12 +15333,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $223 - i32.const 17776 + i32.const 18800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -15309,12 +15348,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $224 - i32.const 17824 + i32.const 18848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -15324,12 +15363,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $225 - i32.const 17872 + i32.const 18896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -15339,12 +15378,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $226 - i32.const 17920 + i32.const 18944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -15354,12 +15393,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $227 - i32.const 17968 + i32.const 18992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -15369,12 +15408,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $228 - i32.const 18016 + i32.const 19056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -15384,12 +15423,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $229 - i32.const 18064 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 632 i32.const 1 call $~lib/builtins/abort @@ -15399,12 +15438,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $230 - i32.const 18112 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -15414,12 +15453,12 @@ i32.const 16 call $~lib/util/number/itoa64 local.tee $231 - i32.const 18160 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 635 i32.const 1 call $~lib/builtins/abort @@ -15429,12 +15468,12 @@ i32.const 16 call $~lib/util/number/itoa64 local.tee $232 - i32.const 18224 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 636 i32.const 1 call $~lib/builtins/abort @@ -15444,12 +15483,12 @@ i32.const 16 call $~lib/util/number/itoa64 local.tee $233 - i32.const 18224 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 637 i32.const 1 call $~lib/builtins/abort @@ -15459,12 +15498,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $234 - i32.const 2432 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 641 i32.const 1 call $~lib/builtins/abort @@ -15474,12 +15513,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $235 - i32.const 2496 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 642 i32.const 1 call $~lib/builtins/abort @@ -15489,12 +15528,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $236 - i32.const 15552 + i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 643 i32.const 1 call $~lib/builtins/abort @@ -15504,12 +15543,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $237 - i32.const 15584 + i32.const 16384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -15519,12 +15558,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $238 - i32.const 15648 + i32.const 16448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -15534,12 +15573,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $239 - i32.const 15680 + i32.const 16480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -15549,12 +15588,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $240 - i32.const 16048 + i32.const 16896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -15564,12 +15603,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $241 - i32.const 18288 + i32.const 19376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 648 i32.const 1 call $~lib/builtins/abort @@ -15579,12 +15618,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $242 - i32.const 18416 + i32.const 19504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 649 i32.const 1 call $~lib/builtins/abort @@ -15594,12 +15633,12 @@ i32.const 2 call $~lib/util/number/itoa64 local.tee $243 - i32.const 18560 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -15609,12 +15648,12 @@ i32.const 3 call $~lib/util/number/utoa64 local.tee $244 - i32.const 18656 + i32.const 19760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 655 i32.const 1 call $~lib/builtins/abort @@ -15624,12 +15663,12 @@ i32.const 4 call $~lib/util/number/utoa64 local.tee $245 - i32.const 18768 + i32.const 19872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -15639,12 +15678,12 @@ i32.const 5 call $~lib/util/number/utoa64 local.tee $246 - i32.const 18848 + i32.const 19968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -15654,12 +15693,12 @@ i32.const 8 call $~lib/util/number/utoa64 local.tee $247 - i32.const 18928 + i32.const 20048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -15669,12 +15708,12 @@ i32.const 11 call $~lib/util/number/utoa64 local.tee $248 - i32.const 18992 + i32.const 20112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -15684,12 +15723,12 @@ i32.const 15 call $~lib/util/number/utoa64 local.tee $249 - i32.const 19056 + i32.const 20176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -15699,12 +15738,12 @@ i32.const 17 call $~lib/util/number/utoa64 local.tee $250 - i32.const 19120 + i32.const 20240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -15714,12 +15753,12 @@ i32.const 21 call $~lib/util/number/utoa64 local.tee $251 - i32.const 19168 + i32.const 20304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -15729,12 +15768,12 @@ i32.const 27 call $~lib/util/number/utoa64 local.tee $252 - i32.const 19216 + i32.const 20368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -15744,12 +15783,12 @@ i32.const 32 call $~lib/util/number/utoa64 local.tee $253 - i32.const 19264 + i32.const 20416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -15759,12 +15798,12 @@ i32.const 36 call $~lib/util/number/utoa64 local.tee $254 - i32.const 19312 + i32.const 20464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -15773,12 +15812,12 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $255 - i32.const 19360 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -15787,12 +15826,12 @@ f64.const -0 call $~lib/util/number/dtoa local.tee $256 - i32.const 19360 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 669 i32.const 1 call $~lib/builtins/abort @@ -15801,12 +15840,12 @@ f64.const nan:0x8000000000000 call $~lib/util/number/dtoa local.tee $257 - i32.const 6336 + i32.const 6736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 670 i32.const 1 call $~lib/builtins/abort @@ -15815,12 +15854,12 @@ f64.const inf call $~lib/util/number/dtoa local.tee $258 - i32.const 19392 + i32.const 20544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 671 i32.const 1 call $~lib/builtins/abort @@ -15829,12 +15868,12 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $259 - i32.const 7552 + i32.const 8032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 672 i32.const 1 call $~lib/builtins/abort @@ -15843,12 +15882,12 @@ f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $260 - i32.const 6848 + i32.const 7248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 673 i32.const 1 call $~lib/builtins/abort @@ -15857,12 +15896,12 @@ f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $261 - i32.const 20336 + i32.const 21552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 674 i32.const 1 call $~lib/builtins/abort @@ -15871,12 +15910,12 @@ f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $262 - i32.const 6912 + i32.const 7312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 675 i32.const 1 call $~lib/builtins/abort @@ -15885,12 +15924,12 @@ f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $263 - i32.const 20400 + i32.const 21616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 676 i32.const 1 call $~lib/builtins/abort @@ -15899,12 +15938,12 @@ f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.tee $264 - i32.const 20464 + i32.const 21696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 677 i32.const 1 call $~lib/builtins/abort @@ -15913,12 +15952,12 @@ f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.tee $265 - i32.const 20528 + i32.const 21760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 678 i32.const 1 call $~lib/builtins/abort @@ -15927,12 +15966,12 @@ f64.const 4.940656e-318 call $~lib/util/number/dtoa local.tee $266 - i32.const 20592 + i32.const 21840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -15941,12 +15980,12 @@ f64.const 9060801153433600 call $~lib/util/number/dtoa local.tee $267 - i32.const 20640 + i32.const 21888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -15955,12 +15994,12 @@ f64.const 4708356024711512064 call $~lib/util/number/dtoa local.tee $268 - i32.const 20704 + i32.const 21952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -15969,12 +16008,12 @@ f64.const 9409340012568248320 call $~lib/util/number/dtoa local.tee $269 - i32.const 20768 + i32.const 22016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -15983,12 +16022,12 @@ f64.const 5e-324 call $~lib/util/number/dtoa local.tee $270 - i32.const 6976 + i32.const 7392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 685 i32.const 1 call $~lib/builtins/abort @@ -15997,12 +16036,12 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $271 - i32.const 20832 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 691 i32.const 1 call $~lib/builtins/abort @@ -16011,12 +16050,12 @@ f64.const 0.1 call $~lib/util/number/dtoa local.tee $272 - i32.const 4112 + i32.const 4352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 692 i32.const 1 call $~lib/builtins/abort @@ -16025,12 +16064,12 @@ f64.const -1 call $~lib/util/number/dtoa local.tee $273 - i32.const 20864 + i32.const 22112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -16039,12 +16078,12 @@ f64.const -0.1 call $~lib/util/number/dtoa local.tee $274 - i32.const 20896 + i32.const 22144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -16053,12 +16092,12 @@ f64.const 1e6 call $~lib/util/number/dtoa local.tee $275 - i32.const 20928 + i32.const 22176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -16067,12 +16106,12 @@ f64.const 1e-06 call $~lib/util/number/dtoa local.tee $276 - i32.const 20976 + i32.const 22224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -16081,12 +16120,12 @@ f64.const -1e6 call $~lib/util/number/dtoa local.tee $277 - i32.const 21008 + i32.const 22272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -16095,12 +16134,12 @@ f64.const -1e-06 call $~lib/util/number/dtoa local.tee $278 - i32.const 21056 + i32.const 22320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -16109,12 +16148,12 @@ f64.const 1e7 call $~lib/util/number/dtoa local.tee $279 - i32.const 21104 + i32.const 22368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -16123,12 +16162,12 @@ f64.const 1e-07 call $~lib/util/number/dtoa local.tee $280 - i32.const 21152 + i32.const 22416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -16137,12 +16176,12 @@ f64.const 1.e+308 call $~lib/util/number/dtoa local.tee $281 - i32.const 4336 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -16151,12 +16190,12 @@ f64.const -1.e+308 call $~lib/util/number/dtoa local.tee $282 - i32.const 21184 + i32.const 22448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -16165,12 +16204,12 @@ f64.const inf call $~lib/util/number/dtoa local.tee $283 - i32.const 19392 + i32.const 20544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -16179,12 +16218,12 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $284 - i32.const 7552 + i32.const 8032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 706 i32.const 1 call $~lib/builtins/abort @@ -16193,12 +16232,12 @@ f64.const 1e-308 call $~lib/util/number/dtoa local.tee $285 - i32.const 21216 + i32.const 22496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 707 i32.const 1 call $~lib/builtins/abort @@ -16207,12 +16246,12 @@ f64.const -1e-308 call $~lib/util/number/dtoa local.tee $286 - i32.const 21248 + i32.const 22528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 708 i32.const 1 call $~lib/builtins/abort @@ -16221,12 +16260,12 @@ f64.const 1e-323 call $~lib/util/number/dtoa local.tee $287 - i32.const 21280 + i32.const 22576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -16235,12 +16274,12 @@ f64.const -1e-323 call $~lib/util/number/dtoa local.tee $288 - i32.const 21312 + i32.const 22608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -16249,12 +16288,12 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $289 - i32.const 19360 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -16263,12 +16302,12 @@ f64.const 4294967272 call $~lib/util/number/dtoa local.tee $290 - i32.const 21344 + i32.const 22656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -16277,12 +16316,12 @@ f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa local.tee $291 - i32.const 21392 + i32.const 22704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -16291,12 +16330,12 @@ f64.const 555555555.5555556 call $~lib/util/number/dtoa local.tee $292 - i32.const 21456 + i32.const 22768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -16305,12 +16344,12 @@ f64.const 0.9999999999999999 call $~lib/util/number/dtoa local.tee $293 - i32.const 21520 + i32.const 22832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -16319,12 +16358,12 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $294 - i32.const 20832 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 718 i32.const 1 call $~lib/builtins/abort @@ -16333,12 +16372,12 @@ f64.const 12.34 call $~lib/util/number/dtoa local.tee $295 - i32.const 21584 + i32.const 22896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -16347,12 +16386,12 @@ f64.const 0.3333333333333333 call $~lib/util/number/dtoa local.tee $296 - i32.const 21616 + i32.const 22928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 721 i32.const 1 call $~lib/builtins/abort @@ -16361,12 +16400,12 @@ f64.const 1234e17 call $~lib/util/number/dtoa local.tee $297 - i32.const 21680 + i32.const 22992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 722 i32.const 1 call $~lib/builtins/abort @@ -16375,12 +16414,12 @@ f64.const 1234e18 call $~lib/util/number/dtoa local.tee $298 - i32.const 21744 + i32.const 23072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 723 i32.const 1 call $~lib/builtins/abort @@ -16389,12 +16428,12 @@ f64.const 2.71828 call $~lib/util/number/dtoa local.tee $299 - i32.const 21792 + i32.const 23120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 724 i32.const 1 call $~lib/builtins/abort @@ -16403,12 +16442,12 @@ f64.const 0.0271828 call $~lib/util/number/dtoa local.tee $5 - i32.const 21824 + i32.const 23168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 725 i32.const 1 call $~lib/builtins/abort @@ -16417,12 +16456,12 @@ f64.const 271.828 call $~lib/util/number/dtoa local.tee $2 - i32.const 21872 + i32.const 23216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 726 i32.const 1 call $~lib/builtins/abort @@ -16431,12 +16470,12 @@ f64.const 1.1e+128 call $~lib/util/number/dtoa local.tee $4 - i32.const 21904 + i32.const 23264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 727 i32.const 1 call $~lib/builtins/abort @@ -16445,12 +16484,12 @@ f64.const 1.1e-64 call $~lib/util/number/dtoa local.tee $1 - i32.const 21936 + i32.const 23312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 728 i32.const 1 call $~lib/builtins/abort @@ -16459,12 +16498,12 @@ f64.const 0.000035689 call $~lib/util/number/dtoa local.tee $0 - i32.const 21968 + i32.const 23360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 1120 i32.const 729 i32.const 1 call $~lib/builtins/abort @@ -17091,7 +17130,7 @@ i32.and if i32.const 0 - i32.const 1168 + i32.const 1200 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -17107,13 +17146,13 @@ block $switch$1$case$5 block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -17122,10 +17161,10 @@ br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=20 + i32.load offset=24 local.tee $1 local.get $0 - i32.load offset=28 + i32.load offset=32 i32.const 2 i32.shl i32.add @@ -17150,12 +17189,12 @@ end end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end @@ -17166,7 +17205,7 @@ i32.and if i32.const 0 - i32.const 1168 + i32.const 1200 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -17181,7 +17220,7 @@ i32.le_u if i32.const 0 - i32.const 1168 + i32.const 1200 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -17200,13 +17239,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 21992 + i32.const 23384 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 9fa5d15a03..679d91dc72 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -10,10 +10,10 @@ (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) @@ -24,442 +24,441 @@ (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df\00") - (data (i32.const 144) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\df\00\df\00") - (data (i32.const 224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b\00") - (data (i32.const 256) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 272) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\00") - (data (i32.const 304) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 336) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 384) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006\00") - (data (i32.const 480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df") - (data (i32.const 512) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 560) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 624) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 656) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 \00") - (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 816) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 880) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 912) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 944) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 976) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 1008) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g\00") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i\00") - (data (i32.const 1200) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d\00") - (data (i32.const 1232) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d\00") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c\00") - (data (i32.const 1296) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00 \00\t\00\0d\00 \00") - (data (i32.const 1344) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 \00") - (data (i32.const 1376) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00") - (data (i32.const 1408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 1440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\000\00") - (data (i32.const 1472) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1504) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\000\000\001\00") - (data (i32.const 1536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001\00") - (data (i32.const 1568) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007\00") - (data (i32.const 1600) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f\00") - (data (i32.const 1632) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F\00") - (data (i32.const 1664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\001\001\00") - (data (i32.const 1696) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g\00") - (data (i32.const 1728) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\001\002\003\00") - (data (i32.const 1760) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\001\002\003\00") - (data (i32.const 1792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003\00") - (data (i32.const 1824) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\000\00") - (data (i32.const 1856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00b\001\001\00") - (data (i32.const 1888) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\n\001\00") - (data (i32.const 1920) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00( 1\00") - (data (i32.const 1952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00) 1\00") - (data (i32.const 1984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\000\00") - (data (i32.const 2016) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F\00") - (data (i32.const 2048) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F\00") - (data (i32.const 2080) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002\00") - (data (i32.const 2144) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data (i32.const 2224) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data (i32.const 2288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd") - (data (i32.const 2320) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m\00") - (data (i32.const 2352) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001\00") - (data (i32.const 2384) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002\00") - (data (i32.const 2416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 2448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+\00") - (data (i32.const 2480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd") - (data (i32.const 2512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m\00") - (data (i32.const 2544) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00") - (data (i32.const 2592) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00") - (data (i32.const 2648) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data (i32.const 2832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00.\00") - (data (i32.const 2864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\000\000\00") - (data (i32.const 2896) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005\00") - (data (i32.const 2928) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005\00") - (data (i32.const 2960) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002\00") - (data (i32.const 2992) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002\00") - (data (i32.const 3024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001\00") - (data (i32.const 3056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000\00") - (data (i32.const 3088) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\001\00") - (data (i32.const 3120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\002\005\00") - (data (i32.const 3152) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a\00") - (data (i32.const 3184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000\00") - (data (i32.const 3216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000\00") - (data (i32.const 3248) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003\00") - (data (i32.const 3280) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004\00") - (data (i32.const 3312) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008\00") - (data (i32.const 3344) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009\00") - (data (i32.const 3376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000\00") - (data (i32.const 3408) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000\00") - (data (i32.const 3456) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000\00") - (data (i32.const 3488) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\000\00") - (data (i32.const 3520) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\001\00") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002\00") - (data (i32.const 3600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004\00") - (data (i32.const 3648) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009\00") - (data (i32.const 3696) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000\00") - (data (i32.const 3728) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\006\000\00") - (data (i32.const 3760) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000\00") - (data (i32.const 3792) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00x\00") - (data (i32.const 3824) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3872) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3920) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3968) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001\00") - (data (i32.const 4000) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001\00") - (data (i32.const 4032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\005\00") - (data (i32.const 4064) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\00D\00") - (data (i32.const 4096) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001\00") - (data (i32.const 4128) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001\00") - (data (i32.const 4160) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001\00") - (data (i32.const 4192) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001\00") - (data (i32.const 4224) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001\00") - (data (i32.const 4256) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000\00") - (data (i32.const 4288) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a\00") - (data (i32.const 4320) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001\00") - (data (i32.const 4352) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000\00") - (data (i32.const 4384) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a\00") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e\00") - (data (i32.const 4448) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001\00") - (data (i32.const 4480) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000\00") - (data (i32.const 4512) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.\00") - (data (i32.const 4544) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002\00") - (data (i32.const 4576) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00e\00x\00") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x\00") - (data (i32.const 4640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x\00") - (data (i32.const 4672) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x\00") - (data (i32.const 4704) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x\00") - (data (i32.const 4736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\00.\00") - (data (i32.const 4768) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\000\00") - (data (i32.const 4800) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\00.\00") - (data (i32.const 4832) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\001\00.\00") - (data (i32.const 4864) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00.\00") - (data (i32.const 4896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00a\00") - (data (i32.const 4928) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001\00") - (data (i32.const 4960) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001\00") - (data (i32.const 4992) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001\00") - (data (i32.const 5024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000\00") - (data (i32.const 5056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000\00") - (data (i32.const 5088) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\000\00") - (data (i32.const 5120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\000\00") - (data (i32.const 5152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\000\00") - (data (i32.const 5184) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00a\00") - (data (i32.const 5216) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\00.\000\00") - (data (i32.const 5248) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.\00") - (data (i32.const 5280) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00.\00") - (data (i32.const 5312) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 5344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0b\00") - (data (i32.const 5376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0e\18") - (data (i32.const 5408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001\00") - (data (i32.const 5440) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001\00") - (data (i32.const 5472) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0c\00") - (data (i32.const 5504) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 5536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 5568) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\002\00") - (data (i32.const 5600) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002\00") - (data (i32.const 5632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\003\00") - (data (i32.const 5664) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003\00") - (data (i32.const 5696) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\007\00") - (data (i32.const 5728) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007\00") - (data (i32.const 5760) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\008\00") - (data (i32.const 5792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008\00") - (data (i32.const 5824) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00") - (data (i32.const 5888) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00") - (data (i32.const 5952) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004\00") - (data (i32.const 5984) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004\00") - (data (i32.const 6032) "|\00\00\00\01\00\00\00\01\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006\00") - (data (i32.const 6176) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005\00") - (data (i32.const 6208) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009\00") - (data (i32.const 6240) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005\00") - (data (i32.const 6272) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009\00") - (data (i32.const 6304) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000\00") - (data (i32.const 6352) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000\00") - (data (i32.const 6400) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000\00") - (data (i32.const 6432) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6480) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6528) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6576) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x\00") - (data (i32.const 6624) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001\00") - (data (i32.const 6672) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i\00") - (data (i32.const 6704) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00") - (data (i32.const 6736) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6768) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003\00") - (data (i32.const 6960) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003\00") - (data (i32.const 7152) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007\00") - (data (i32.const 7344) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004\00") - (data (i32.const 7504) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004\00") - (data (i32.const 7664) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000\00") - (data (i32.const 7824) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004\00") - (data (i32.const 7984) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\00") - (data (i32.const 8144) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003\00") - (data (i32.const 8256) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000\00") - (data (i32.const 8368) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001\00") - (data (i32.const 8480) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002\00") - (data (i32.const 8592) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003\00") - (data (i32.const 8704) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004\00") - (data (i32.const 8816) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005\00") - (data (i32.const 8928) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006\00") - (data (i32.const 9040) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007\00") - (data (i32.const 9152) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008\00") - (data (i32.const 9264) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001\00") - (data (i32.const 9376) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002\00") - (data (i32.const 9488) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003\00") - (data (i32.const 9600) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004\00") - (data (i32.const 9712) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005\00") - (data (i32.const 9824) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006\00") - (data (i32.const 9936) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006\00") - (data (i32.const 10048) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008\00") - (data (i32.const 10160) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009\00") - (data (i32.const 10272) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002\00") - (data (i32.const 10384) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000\00") - (data (i32.const 10496) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007\00") - (data (i32.const 10608) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005\00") - (data (i32.const 10720) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009\00") - (data (i32.const 10832) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n\00") - (data (i32.const 10864) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001\00") - (data (i32.const 10896) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 10928) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 10960) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001\00") - (data (i32.const 10992) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002\00") - (data (i32.const 11024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\001\00") - (data (i32.const 11056) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\002\00") - (data (i32.const 11088) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002\00") - (data (i32.const 11120) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001\00") - (data (i32.const 11152) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 11184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 11216) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 11264) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 11312) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 11344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00a\00") - (data (i32.const 11376) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 11424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00a\00a\00") - (data (i32.const 11456) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") - (data (i32.const 11488) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a\00") - (data (i32.const 11520) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 11552) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 11584) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c\00") - (data (i32.const 11616) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c\00") - (data (i32.const 11648) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c\00") - (data (i32.const 11680) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c\00") - (data (i32.const 11712) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") - (data (i32.const 11744) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c\00") - (data (i32.const 11776) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\00+\00") - (data (i32.const 11808) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+\00") - (data (i32.const 11840) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 11888) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00+\00") - (data (i32.const 11920) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a\00") - (data (i32.const 11952) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+\00") - (data (i32.const 12000) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c\00") - (data (i32.const 12032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c\00") - (data (i32.const 12064) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c\00") - (data (i32.const 12096) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+\00") - (data (i32.const 12128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00e\00") - (data (i32.const 12160) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00c\00") - (data (i32.const 12192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00+\00") - (data (i32.const 12224) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c\00") - (data (i32.const 12256) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+\00") - (data (i32.const 12288) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data (i32.const 12336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") - (data (i32.const 12368) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n\00") - (data (i32.const 12400) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") - (data (i32.const 12432) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") - (data (i32.const 12464) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 12512) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i\00") - (data (i32.const 12544) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00e\00f\00g\00") - (data (i32.const 12576) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h\00") - (data (i32.const 12608) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") - (data (i32.const 12640) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 12688) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 12752) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 12864) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 12896) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00") - (data (i32.const 12928) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 12960) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") - (data (i32.const 12992) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") - (data (i32.const 13024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") - (data (i32.const 13056) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 13184) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 13240) "0\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") - (data (i32.const 13648) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 14688) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 14784) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008\00") - (data (i32.const 14816) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\002\00") - (data (i32.const 14848) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 14880) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 14912) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 14944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 14976) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 15008) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 15040) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008\00") - (data (i32.const 15072) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009\00") - (data (i32.const 15120) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 15168) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 15216) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 15264) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 15296) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 15328) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 15376) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 15424) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\007\00b\00") - (data (i32.const 15456) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\00d\002\00") - (data (i32.const 15488) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\003\000\003\009\00") - (data (i32.const 15520) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000\00") - (data (i32.const 15552) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007\00") - (data (i32.const 15584) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007\00") - (data (i32.const 15616) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e\00") - (data (i32.const 15648) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005\00") - (data (i32.const 15680) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e\00") - (data (i32.const 15712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15744) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000\00") - (data (i32.const 15776) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15808) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15856) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15888) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000\00") - (data (i32.const 15936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001\00") - (data (i32.const 15968) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\001\001\00") - (data (i32.const 16000) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\001\001\000\00") - (data (i32.const 16032) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001\00") - (data (i32.const 16064) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001\00") - (data (i32.const 16096) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16144) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16224) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000\00") - (data (i32.const 16304) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\00") - (data (i32.const 16384) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\00") - (data (i32.const 16464) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16544) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16592) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000\00") - (data (i32.const 16656) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00") - (data (i32.const 16704) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000\00") - (data (i32.const 16752) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007\00") - (data (i32.const 16800) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003\00") - (data (i32.const 16848) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000\00") - (data (i32.const 16896) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000\00") - (data (i32.const 16928) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003\00") - (data (i32.const 16960) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l\00") - (data (i32.const 16992) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v\00") - (data (i32.const 17024) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003\00") - (data (i32.const 17056) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 17088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 17136) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007\00") - (data (i32.const 17184) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17232) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17280) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\00") - (data (i32.const 17328) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001\00") - (data (i32.const 17376) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17424) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17536) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17600) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17664) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 17728) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 17760) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 17808) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17856) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17904) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17952) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 18016) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 18080) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 18144) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18192) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001\00") - (data (i32.const 18240) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001\00") - (data (i32.const 18288) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data (i32.const 18336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data (i32.const 18384) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data (i32.const 18432) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000\00") - (data (i32.const 18480) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18528) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18576) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18640) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data (i32.const 18704) "b\00\00\00\01\00\00\00\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 18832) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 18976) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 19072) "R\00\00\00\01\00\00\00\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000\00") - (data (i32.const 19184) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00") - (data (i32.const 19264) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000\00") - (data (i32.const 19344) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\00") - (data (i32.const 19408) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004\00") - (data (i32.const 19472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000\00") - (data (i32.const 19536) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000\00") - (data (i32.const 19584) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f\00") - (data (i32.const 19632) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o\00") - (data (i32.const 19680) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00") - (data (i32.const 19728) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f\00") - (data (i32.const 19776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 19808) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 19840) "\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#push drop end @@ -8872,7 +8905,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $0 @@ -8890,7 +8923,7 @@ drop else local.get $10 - i32.const 272 + i32.const 304 call $~lib/array/Array<~lib/string/String>#push drop end @@ -8921,8 +8954,8 @@ i32.load offset=12 i32.ge_u if - i32.const 12704 - i32.const 12656 + i32.const 13312 + i32.const 13264 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -8940,8 +8973,8 @@ local.get $2 i32.eqz if - i32.const 12768 - i32.const 12656 + i32.const 13376 + i32.const 13264 i32.const 108 i32.const 40 call $~lib/builtins/abort @@ -9039,14 +9072,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 13240 + i32.const 13880 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 13240 + i32.const 13880 local.get $7 i32.const 2 i32.shl @@ -9089,7 +9122,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 13240 + i32.const 13880 local.get $10 i32.const 2 i32.shl @@ -9112,7 +9145,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 13240 + i32.const 13880 local.get $1 i32.const 2 i32.shl @@ -9162,7 +9195,7 @@ i32.const 1 i32.shl i32.add - i32.const 13664 + i32.const 14304 local.get $1 i32.wrap_i64 i32.const 255 @@ -9184,7 +9217,7 @@ i32.and if local.get $0 - i32.const 13664 + i32.const 14304 local.get $1 i32.wrap_i64 i32.const 6 @@ -9307,7 +9340,7 @@ i32.const 1 i32.shl i32.add - i32.const 14704 + i32.const 15360 local.get $1 local.get $6 i64.and @@ -9343,7 +9376,7 @@ i32.const 1 i32.shl i32.add - i32.const 14704 + i32.const 15360 local.get $1 local.get $6 local.get $4 @@ -9384,8 +9417,8 @@ i32.gt_s end if - i32.const 13072 - i32.const 13200 + i32.const 13712 + i32.const 13840 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -9394,7 +9427,7 @@ local.get $0 i32.eqz if - i32.const 1424 + i32.const 1552 return end local.get $0 @@ -9423,7 +9456,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -9459,7 +9492,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -9490,7 +9523,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $4 @@ -9526,8 +9559,8 @@ i32.gt_s end if - i32.const 13072 - i32.const 13200 + i32.const 13712 + i32.const 13840 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -9536,7 +9569,7 @@ local.get $0 i32.eqz if - i32.const 1424 + i32.const 1552 return end i32.const 0 @@ -9552,7 +9585,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -9586,7 +9619,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -9613,7 +9646,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -9741,14 +9774,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 13240 + i32.const 13880 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 13240 + i32.const 13880 local.get $11 i32.const 2 i32.shl @@ -9770,14 +9803,14 @@ i64.shl i64.or i64.store - i32.const 13240 + i32.const 13880 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 13240 + i32.const 13880 local.get $9 i32.const 2 i32.shl @@ -9827,8 +9860,8 @@ i32.gt_s end if - i32.const 13072 - i32.const 13200 + i32.const 13712 + i32.const 13840 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -9839,7 +9872,7 @@ i64.ne i32.eqz if - i32.const 1424 + i32.const 1552 return end i32.const 0 @@ -9863,7 +9896,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $7 @@ -9887,7 +9920,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -9923,7 +9956,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $3 @@ -9948,7 +9981,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -9980,8 +10013,8 @@ i32.gt_s end if - i32.const 13072 - i32.const 13200 + i32.const 13712 + i32.const 13840 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -9992,7 +10025,7 @@ i64.ne i32.eqz if - i32.const 1424 + i32.const 1552 return end local.get $0 @@ -10030,7 +10063,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $8 @@ -10056,7 +10089,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -10094,7 +10127,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $4 @@ -10121,7 +10154,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $0 @@ -10405,7 +10438,7 @@ local.set $22 local.get $18 local.set $21 - i32.const 20712 + i32.const 21920 local.get $13 i32.const 2 i32.shl @@ -10546,7 +10579,7 @@ i32.add global.set $~lib/util/number/_K local.get $10 - i32.const 20712 + i32.const 21920 i32.const 0 local.get $13 i32.sub @@ -11127,14 +11160,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 19840 + i32.const 21048 local.get $14 i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 20536 + i32.const 21744 local.get $14 i32.const 1 i32.shl @@ -11390,21 +11423,14 @@ local.get $2 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 f64.const 0 f64.eq if - i32.const 19792 + i32.const 20944 return end local.get $0 @@ -11418,11 +11444,11 @@ local.get $0 f64.ne if - i32.const 5328 + i32.const 5712 return end - i32.const 6544 - i32.const 19824 + i32.const 7008 + i32.const 20976 local.get $0 f64.const 0 f64.lt @@ -11430,32 +11456,22 @@ call $~lib/rt/pure/__retain return end - i32.const 28 + i32.const 20992 + local.get $0 + call $~lib/util/number/dtoa_core i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc local.set $1 local.get $1 - local.get $0 - call $~lib/util/number/dtoa_core + i32.const 1 + call $~lib/rt/pure/__new local.set $2 local.get $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end + i32.const 20992 local.get $1 - i32.const 0 + call $~lib/memory/memory.copy local.get $2 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/tlsf/__free - local.get $3 + call $~lib/rt/pure/__retain ) (func $start:std/string (local $0 i32) @@ -11763,43 +11779,43 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 128 - i32.const 128 + i32.const 144 + i32.const 144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 208 - i32.const 208 + i32.const 240 + i32.const 240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 240 - i32.const 240 + i32.const 272 + i32.const 272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -11812,7 +11828,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -11826,13 +11842,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 call $~lib/string/String.__not i32.eqz i32.const 0 @@ -11840,13 +11856,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 288 + i32.const 336 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -11854,13 +11870,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -11868,7 +11884,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -11880,12 +11896,12 @@ i32.const 0 call $~lib/string/String.fromCharCode@varargs local.tee $0 - i32.const 288 + i32.const 336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -11897,12 +11913,12 @@ i32.const 0 call $~lib/string/String.fromCharCode@varargs local.tee $1 - i32.const 464 + i32.const 528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -11916,12 +11932,12 @@ i32.const 0 call $~lib/string/String.fromCharCode@varargs local.tee $2 - i32.const 464 + i32.const 528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -11931,12 +11947,12 @@ i32.const 57088 call $~lib/string/String.fromCharCode local.tee $3 - i32.const 496 + i32.const 560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -11945,12 +11961,12 @@ i32.const 0 call $~lib/string/String.fromCodePoint local.tee $4 - i32.const 288 + i32.const 336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -11959,12 +11975,12 @@ i32.const 54 call $~lib/string/String.fromCodePoint local.tee $5 - i32.const 464 + i32.const 528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -11973,51 +11989,51 @@ i32.const 119558 call $~lib/string/String.fromCodePoint local.tee $6 - i32.const 576 + i32.const 640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 608 + i32.const 672 i32.const 0 call $~lib/string/String#startsWith i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 672 + i32.const 736 global.get $~lib/string/String.MAX_LENGTH call $~lib/string/String#endsWith i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 704 + i32.const 768 i32.const 0 call $~lib/string/String#includes i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -12025,7 +12041,7 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 800 call $~lib/string/String#padStart local.tee $7 global.get $std/string/str @@ -12033,7 +12049,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -12041,7 +12057,7 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 800 call $~lib/string/String#padStart local.tee $8 global.get $std/string/str @@ -12049,103 +12065,103 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 i32.const 3 - i32.const 736 + i32.const 800 call $~lib/string/String#padStart local.tee $9 - i32.const 768 + i32.const 832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 i32.const 10 - i32.const 272 + i32.const 304 call $~lib/string/String#padStart local.tee $10 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 100 - i32.const 272 + i32.const 304 call $~lib/string/String#padStart local.tee $11 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 864 i32.const 5 - i32.const 736 + i32.const 800 call $~lib/string/String#padStart local.tee $12 - i32.const 832 + i32.const 896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 6 i32.const 864 + i32.const 6 + i32.const 928 call $~lib/string/String#padStart local.tee $13 - i32.const 896 + i32.const 960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 8 i32.const 864 + i32.const 8 + i32.const 928 call $~lib/string/String#padStart local.tee $14 - i32.const 928 + i32.const 992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -12153,7 +12169,7 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 800 call $~lib/string/String#padEnd local.tee $15 global.get $std/string/str @@ -12161,7 +12177,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -12169,7 +12185,7 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 800 call $~lib/string/String#padEnd local.tee $16 global.get $std/string/str @@ -12177,110 +12193,110 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 i32.const 3 - i32.const 736 + i32.const 800 call $~lib/string/String#padEnd local.tee $17 - i32.const 768 + i32.const 832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 i32.const 10 - i32.const 272 + i32.const 304 call $~lib/string/String#padEnd local.tee $18 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 100 - i32.const 272 + i32.const 304 call $~lib/string/String#padEnd local.tee $19 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 864 i32.const 5 - i32.const 736 + i32.const 800 call $~lib/string/String#padEnd local.tee $20 - i32.const 960 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 864 i32.const 6 - i32.const 800 + i32.const 864 call $~lib/string/String#padEnd local.tee $21 - i32.const 992 + i32.const 1072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 864 i32.const 8 - i32.const 800 + i32.const 864 call $~lib/string/String#padEnd local.tee $22 - i32.const 1024 + i32.const 1104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -12288,14 +12304,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 608 + i32.const 304 + i32.const 672 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -12303,14 +12319,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 320 + i32.const 368 + i32.const 368 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -12318,7 +12334,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -12333,14 +12349,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 272 + i32.const 304 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -12348,14 +12364,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1152 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -12363,14 +12379,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1184 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -12378,14 +12394,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1152 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -12393,14 +12409,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1152 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -12408,14 +12424,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1216 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -12423,14 +12439,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 0 @@ -12438,14 +12454,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 608 + i32.const 304 + i32.const 672 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const -1 @@ -12453,14 +12469,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 272 + i32.const 304 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf global.get $std/string/str @@ -12469,14 +12485,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1152 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 2 @@ -12484,14 +12500,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1184 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const -1 @@ -12499,14 +12515,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1152 + i32.const 1248 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 15 @@ -12514,14 +12530,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1152 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -12529,14 +12545,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1152 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -12544,14 +12560,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1216 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -12559,14 +12575,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 1184 + i32.const 1280 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -12574,14 +12590,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 608 + i32.const 672 i32.const 0 call $~lib/string/String#lastIndexOf i32.const 0 @@ -12589,279 +12605,279 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 call $~lib/string/String#localeCompare i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 272 + i32.const 368 + i32.const 304 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 76 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 320 + i32.const 304 + i32.const 368 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 640 - i32.const 640 + i32.const 704 + i32.const 704 call $~lib/string/String#localeCompare i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 1216 + i32.const 864 + i32.const 1312 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1216 - i32.const 800 + i32.const 1312 + i32.const 864 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1248 - i32.const 800 + i32.const 1344 + i32.const 864 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 1248 + i32.const 864 + i32.const 1344 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 768 + i32.const 304 + i32.const 832 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 288 - i32.const 272 + i32.const 336 + i32.const 304 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 call $~lib/string/String#trimStart local.tee $23 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1376 call $~lib/string/String#trimStart local.tee $24 - i32.const 1280 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 1408 call $~lib/string/String#trimStart local.tee $25 - i32.const 1360 + i32.const 1456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 call $~lib/string/String#trimEnd local.tee $26 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1376 call $~lib/string/String#trimEnd local.tee $27 - i32.const 1280 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 1408 call $~lib/string/String#trimEnd local.tee $28 - i32.const 1392 + i32.const 1504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 call $~lib/string/String#trim local.tee $29 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 1376 call $~lib/string/String#trim local.tee $30 - i32.const 1280 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 1408 call $~lib/string/String#trim local.tee $31 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1424 + i32.const 1552 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -12869,13 +12885,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1456 + i32.const 1584 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -12883,13 +12899,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1488 + i32.const 1616 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -12897,13 +12913,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1520 + i32.const 1648 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -12911,13 +12927,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1552 + i32.const 1680 i32.const 0 call $~lib/string/parseInt f64.const 5 @@ -12925,13 +12941,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1584 + i32.const 1712 i32.const 0 call $~lib/string/parseInt f64.const 455 @@ -12939,13 +12955,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1616 + i32.const 1744 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -12953,13 +12969,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1648 + i32.const 1776 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -12967,13 +12983,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1680 + i32.const 1808 i32.const 0 call $~lib/string/parseInt f64.const 11 @@ -12981,13 +12997,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1840 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -12995,13 +13011,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1744 + i32.const 1872 i32.const 0 call $~lib/string/parseInt f64.const -123 @@ -13009,13 +13025,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1776 + i32.const 1904 i32.const 0 call $~lib/string/parseInt f64.const 123 @@ -13023,13 +13039,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1936 i32.const 0 call $~lib/string/parseInt f64.const -12 @@ -13037,13 +13053,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1424 + i32.const 1552 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -13051,13 +13067,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1840 + i32.const 1968 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -13065,13 +13081,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1872 + i32.const 2000 i32.const 16 call $~lib/string/parseInt f64.const 2833 @@ -13079,13 +13095,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1904 + i32.const 2032 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -13093,13 +13109,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1936 + i32.const 2064 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -13107,13 +13123,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1968 + i32.const 2096 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -13121,13 +13137,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 + i32.const 2128 i32.const 0 call $~lib/string/parseInt local.set $32 @@ -13142,29 +13158,29 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 117 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2032 + i32.const 2160 i32.const 0 call $~lib/string/parseInt - i32.const 2064 + i32.const 2208 i32.const 16 call $~lib/string/parseInt f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 118 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2096 + i32.const 2240 i32.const 0 call $~lib/string/parseInt f64.const 36893488147419103232 @@ -13172,13 +13188,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2096 + i32.const 2240 i32.const 13 call $~lib/string/parseInt f64.const 5135857308667095285760 @@ -13186,13 +13202,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2160 + i32.const 2304 i32.const 10 call $~lib/string/parseInt f64.const -1.e+24 @@ -13200,13 +13216,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2240 + i32.const 2384 i32.const 16 call $~lib/string/parseInt f64.const 75557863725914323419136 @@ -13214,13 +13230,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 122 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2304 + i32.const 2448 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -13228,13 +13244,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 2480 i32.const 0 call $~lib/string/parseInt f64.const 2 @@ -13242,13 +13258,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 124 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2368 + i32.const 2528 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -13256,13 +13272,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 + i32.const 2560 i32.const 0 call $~lib/string/parseInt f64.const 2 @@ -13270,13 +13286,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 i32.const 0 call $~lib/string/parseInt local.tee $32 @@ -13285,13 +13301,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 2608 i32.const 0 call $~lib/string/parseInt local.tee $32 @@ -13300,13 +13316,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 + i32.const 2640 i32.const 0 call $~lib/string/parseInt local.tee $32 @@ -13315,13 +13331,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 + i32.const 928 i32.const 37 call $~lib/string/parseInt local.tee $32 @@ -13330,13 +13346,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2496 + i32.const 2672 i32.const 0 call $~lib/string/parseInt local.tee $32 @@ -13345,13 +13361,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 + i32.const 2704 i32.const 0 call $~lib/string/parseInt local.tee $32 @@ -13360,13 +13376,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 + i32.const 2704 i32.const 0 call $~lib/number/F32.parseInt local.tee $33 @@ -13375,13 +13391,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 + i32.const 2704 i32.const 0 call $~lib/number/F64.parseInt local.tee $32 @@ -13390,13 +13406,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2560 + i32.const 2736 i32.const 0 call $~lib/number/I32.parseInt global.get $~lib/number/I32.MAX_VALUE @@ -13404,13 +13420,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2608 + i32.const 2784 i32.const 0 call $~lib/number/I64.parseInt global.get $~lib/number/I64.MAX_VALUE @@ -13418,260 +13434,260 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1424 + i32.const 1552 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1488 + i32.const 1616 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2848 + i32.const 3040 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 + i32.const 3072 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 + i32.const 3104 call $~lib/string/parseFloat f64.const 1e-05 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2944 + i32.const 3136 call $~lib/string/parseFloat f64.const -1e-05 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 146 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 + i32.const 3168 call $~lib/string/parseFloat f64.const -3e-23 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 + i32.const 3216 call $~lib/string/parseFloat f64.const 3e21 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3040 + i32.const 3264 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3072 + i32.const 3296 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3104 + i32.const 3328 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3136 + i32.const 3360 call $~lib/string/parseFloat f64.const 0.25 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3168 + i32.const 3392 call $~lib/string/parseFloat f64.const 1e3 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3200 + i32.const 3424 call $~lib/string/parseFloat f64.const 1e-10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3232 + i32.const 3472 call $~lib/string/parseFloat f64.const 1e-30 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3264 + i32.const 3520 call $~lib/string/parseFloat f64.const 1e-323 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3296 + i32.const 3568 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 157 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3328 + i32.const 3616 call $~lib/string/parseFloat f64.const 1.e+308 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3360 + i32.const 3648 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 159 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -13679,702 +13695,702 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 160 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 + i32.const 3680 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 163 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3424 + i32.const 3728 call $~lib/string/parseFloat f64.const 1e-10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 164 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 + i32.const 3776 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 165 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3504 + i32.const 3824 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3536 + i32.const 3856 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 167 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 + i32.const 3888 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 168 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3616 + i32.const 3936 call $~lib/string/parseFloat f64.const 123456789 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3664 + i32.const 3984 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3712 + i32.const 4032 call $~lib/string/parseFloat f64.const 1e-60 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3744 + i32.const 4064 call $~lib/string/parseFloat f64.const 1.e+60 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 + i32.const 4096 call $~lib/string/parseFloat f64.const -0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 + i32.const 4144 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3840 + i32.const 4176 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3888 + i32.const 4224 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3936 + i32.const 4272 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3984 + i32.const 4320 call $~lib/string/parseFloat f64.const 0.022 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4016 + i32.const 4368 call $~lib/string/parseFloat f64.const 11 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1840 + i32.const 1968 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4048 + i32.const 4400 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 4432 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4112 + i32.const 4464 call $~lib/string/parseFloat f64.const 1.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 + i32.const 4496 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4176 + i32.const 4528 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4208 + i32.const 4560 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 189 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4240 + i32.const 4592 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 190 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4272 + i32.const 4624 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4304 + i32.const 4656 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4336 + i32.const 4688 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4368 + i32.const 4720 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 + i32.const 4752 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4432 + i32.const 4784 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4464 + i32.const 4816 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4496 + i32.const 4864 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4528 + i32.const 4896 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 199 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 + i32.const 4928 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 + i32.const 4960 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4624 + i32.const 4992 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 202 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 + i32.const 5024 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 203 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4688 + i32.const 5056 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4720 + i32.const 5088 call $~lib/string/parseFloat f64.const 0.01 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4752 + i32.const 5136 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4784 + i32.const 5168 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4816 + i32.const 5200 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4848 + i32.const 5232 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4880 + i32.const 5264 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4912 + i32.const 5296 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4944 + i32.const 5328 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4976 + i32.const 5360 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5008 + i32.const 5392 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5040 + i32.const 5424 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5072 + i32.const 5456 call $~lib/string/parseFloat f64.const -0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5104 + i32.const 5488 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 + i32.const 2128 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 + i32.const 2640 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14382,13 +14398,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 2608 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14396,13 +14412,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5136 + i32.const 5520 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14410,13 +14426,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5168 + i32.const 5552 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14424,13 +14440,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5200 + i32.const 5584 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14438,13 +14454,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5232 + i32.const 5616 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14452,13 +14468,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5264 + i32.const 5648 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14466,13 +14482,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5296 + i32.const 5680 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14480,13 +14496,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5328 + i32.const 5712 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14494,13 +14510,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5360 + i32.const 5744 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14508,13 +14524,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5392 + i32.const 5776 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14522,13 +14538,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5424 + i32.const 5808 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14536,13 +14552,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5456 + i32.const 5840 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14550,13 +14566,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5488 + i32.const 5872 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14564,13 +14580,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5520 + i32.const 5904 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14578,13 +14594,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5552 + i32.const 5936 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14592,221 +14608,221 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5584 + i32.const 5968 call $~lib/string/parseFloat f64.const 1e22 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5616 + i32.const 6000 call $~lib/string/parseFloat f64.const 1e-22 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5648 + i32.const 6032 call $~lib/string/parseFloat f64.const 1.e+23 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5680 + i32.const 6064 call $~lib/string/parseFloat f64.const 1e-23 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5712 + i32.const 6096 call $~lib/string/parseFloat f64.const 1.e+37 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5744 + i32.const 6128 call $~lib/string/parseFloat f64.const 1e-37 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5776 + i32.const 6160 call $~lib/string/parseFloat f64.const 1.e+38 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5808 + i32.const 6192 call $~lib/string/parseFloat f64.const 1e-38 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5840 + i32.const 6224 call $~lib/string/parseFloat global.get $~lib/builtins/f64.EPSILON f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5904 + i32.const 6288 call $~lib/string/parseFloat global.get $~lib/builtins/f64.MAX_VALUE f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5968 + i32.const 6368 call $~lib/string/parseFloat global.get $~lib/builtins/f64.MIN_VALUE f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6000 + i32.const 6400 call $~lib/string/parseFloat f64.const 1.e+308 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6048 + i32.const 6448 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6192 + i32.const 6592 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6224 + i32.const 6640 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6256 + i32.const 6688 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6288 + i32.const 6736 call $~lib/string/parseFloat f64.const inf f64.neg @@ -14814,78 +14830,78 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6320 + i32.const 6784 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6368 + i32.const 6832 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6416 + i32.const 6880 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6448 + i32.const 6912 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6496 + i32.const 6960 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6544 + i32.const 7008 call $~lib/string/parseFloat f64.const inf f64.neg @@ -14893,39 +14909,39 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6592 + i32.const 7056 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6640 + i32.const 7104 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6688 + i32.const 7152 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14933,13 +14949,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6720 + i32.const 7184 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14947,13 +14963,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6752 + i32.const 7232 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -14961,62 +14977,62 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6784 + i32.const 7280 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 266 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6976 + i32.const 7472 call $~lib/string/parseFloat global.get $std/string/Ox1p_1073 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7168 + i32.const 7664 call $~lib/string/parseFloat global.get $std/string/Ox1_0000000000001p_1022 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 283 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7360 - i32.const 7520 + i32.const 7856 + i32.const 8016 call $~lib/string/String.__concat local.tee $34 - i32.const 7680 + i32.const 8176 call $~lib/string/String.__concat local.tee $35 - i32.const 7840 + i32.const 8336 call $~lib/string/String.__concat local.tee $36 - i32.const 8000 + i32.const 8496 call $~lib/string/String.__concat local.tee $37 call $~lib/string/parseFloat @@ -15025,325 +15041,325 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 286 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8160 + i32.const 8656 call $~lib/string/parseFloat f64.const 9.753531888799502e-104 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 304 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8272 + i32.const 8768 call $~lib/string/parseFloat f64.const 0.5961860348131807 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 305 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8384 + i32.const 8880 call $~lib/string/parseFloat f64.const 0.18150131692180388 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 306 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8496 + i32.const 8992 call $~lib/string/parseFloat f64.const 0.42070823575344535 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 307 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8608 + i32.const 9104 call $~lib/string/parseFloat f64.const 0.6654686306516261 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8720 + i32.const 9216 call $~lib/string/parseFloat f64.const 0.6101852922970868 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 309 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8832 + i32.const 9328 call $~lib/string/parseFloat f64.const 0.7696695208236968 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 310 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8944 + i32.const 9440 call $~lib/string/parseFloat f64.const 0.25050653222286823 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 311 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9056 + i32.const 9552 call $~lib/string/parseFloat f64.const 0.2740037230228005 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9168 + i32.const 9664 call $~lib/string/parseFloat f64.const 0.20723093500497428 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 313 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9280 + i32.const 9776 call $~lib/string/parseFloat f64.const 7.900280238081605 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 314 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9392 + i32.const 9888 call $~lib/string/parseFloat f64.const 98.22860653737297 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9504 + i32.const 10000 call $~lib/string/parseFloat f64.const 746.894972319037 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 316 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9616 + i32.const 10112 call $~lib/string/parseFloat f64.const 1630.2683202827284 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 317 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9728 + i32.const 10224 call $~lib/string/parseFloat f64.const 46371.68629719171 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 318 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9840 + i32.const 10336 call $~lib/string/parseFloat f64.const 653780.5944497711 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 319 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9952 + i32.const 10448 call $~lib/string/parseFloat f64.const 234632.43565024371 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 320 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10064 + i32.const 10560 call $~lib/string/parseFloat f64.const 97094817.16420048 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 321 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10176 + i32.const 10672 call $~lib/string/parseFloat f64.const 499690852.20518744 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 322 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10288 + i32.const 10784 call $~lib/string/parseFloat f64.const 7925201200557245595648 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 323 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10400 + i32.const 10896 call $~lib/string/parseFloat f64.const 6096564585983177528398588e5 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 324 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10512 + i32.const 11008 call $~lib/string/parseFloat f64.const 4800416117477028695992383e42 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 325 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10624 + i32.const 11120 call $~lib/string/parseFloat f64.const 8524829079817968137287277e80 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 326 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10736 + i32.const 11232 call $~lib/string/parseFloat f64.const 3271239291709782092398754e243 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 327 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10848 + i32.const 11344 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -15351,50 +15367,50 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 330 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10880 + i32.const 11376 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 331 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 10912 + i32.const 368 + i32.const 11408 call $~lib/string/String.__concat local.tee $38 call $~lib/rt/pure/__retain local.set $39 local.get $39 - i32.const 10944 + i32.const 11440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end local.get $39 - i32.const 320 + i32.const 368 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 336 i32.const 3 call $~lib/builtins/abort @@ -15404,356 +15420,356 @@ call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 338 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 global.get $std/string/nullStr call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/nullStr - i32.const 272 + i32.const 304 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 340 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 10912 + i32.const 368 + i32.const 11408 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 - i32.const 320 + i32.const 368 + i32.const 368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 342 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10976 - i32.const 11008 + i32.const 11472 + i32.const 11504 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10976 - i32.const 10976 + i32.const 11472 + i32.const 11472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 344 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11040 - i32.const 11072 + i32.const 11536 + i32.const 11568 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11104 - i32.const 11136 + i32.const 11600 + i32.const 11632 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11168 - i32.const 11168 + i32.const 11664 + i32.const 11664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 347 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11168 - i32.const 11200 + i32.const 11664 + i32.const 11712 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11232 - i32.const 11280 + i32.const 11760 + i32.const 11808 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10912 - i32.const 320 + i32.const 11408 + i32.const 368 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11328 - i32.const 320 + i32.const 11856 + i32.const 368 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 352 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11328 - i32.const 11360 + i32.const 11856 + i32.const 11888 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11328 - i32.const 10944 + i32.const 11856 + i32.const 11440 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11328 - i32.const 10944 + i32.const 11856 + i32.const 11440 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 355 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10912 + i32.const 11408 global.get $std/string/nullStr call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 357 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/nullStr - i32.const 10912 + i32.const 11408 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 358 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 800 + i32.const 304 + i32.const 864 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 361 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 362 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 800 + i32.const 304 + i32.const 864 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 363 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 364 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 800 + i32.const 304 + i32.const 864 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 365 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 366 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 367 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 368 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 369 i32.const 1 call $~lib/builtins/abort @@ -15778,7 +15794,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 374 i32.const 3 call $~lib/builtins/abort @@ -15794,699 +15810,699 @@ call $~lib/rt/pure/__release local.get $42 call $~lib/rt/pure/__release - i32.const 864 + i32.const 928 call $~lib/string/String#get:length i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 377 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 + i32.const 304 i32.const 100 call $~lib/string/String#repeat local.tee $42 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 0 call $~lib/string/String#repeat local.tee $41 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 380 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 1 call $~lib/string/String#repeat local.tee $40 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 381 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 2 call $~lib/string/String#repeat local.tee $38 - i32.const 11360 + i32.const 11888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 382 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 3 call $~lib/string/String#repeat local.tee $39 - i32.const 11440 + i32.const 11968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 383 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10944 + i32.const 11440 i32.const 4 call $~lib/string/String#repeat local.tee $43 - i32.const 11472 + i32.const 12000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 5 call $~lib/string/String#repeat local.tee $44 - i32.const 11504 + i32.const 12048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 385 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 6 call $~lib/string/String#repeat local.tee $45 - i32.const 11536 + i32.const 12080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 386 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 320 + i32.const 368 i32.const 7 call $~lib/string/String#repeat local.tee $46 - i32.const 11568 + i32.const 12112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 387 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 + i32.const 304 call $~lib/string/String#replace local.tee $47 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 389 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 - i32.const 2464 + i32.const 304 + i32.const 304 + i32.const 2640 call $~lib/string/String#replace local.tee $48 - i32.const 2464 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 - i32.const 2464 - i32.const 272 + i32.const 2640 + i32.const 2640 + i32.const 304 call $~lib/string/String#replace local.tee $49 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 - i32.const 272 - i32.const 272 + i32.const 2640 + i32.const 304 + i32.const 304 call $~lib/string/String#replace local.tee $50 - i32.const 2464 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 2432 - i32.const 2464 + i32.const 864 + i32.const 2608 + i32.const 2640 call $~lib/string/String#replace local.tee $51 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 - i32.const 2464 + i32.const 864 + i32.const 864 + i32.const 2640 call $~lib/string/String#replace local.tee $52 - i32.const 2464 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 394 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 1248 - i32.const 2464 + i32.const 864 + i32.const 1344 + i32.const 2640 call $~lib/string/String#replace local.tee $53 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 395 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 10944 - i32.const 10944 + i32.const 864 + i32.const 11440 + i32.const 11440 call $~lib/string/String#replace local.tee $54 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11600 - i32.const 2432 - i32.const 2464 + i32.const 12160 + i32.const 2608 + i32.const 2640 call $~lib/string/String#replace local.tee $55 - i32.const 11632 + i32.const 12192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 - i32.const 2464 + i32.const 864 + i32.const 304 + i32.const 2640 call $~lib/string/String#replace local.tee $56 - i32.const 11664 + i32.const 12224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 398 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11696 - i32.const 11728 - i32.const 2464 + i32.const 12256 + i32.const 12288 + i32.const 2640 call $~lib/string/String#replace local.tee $57 - i32.const 11664 + i32.const 12224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 11760 - i32.const 11792 + i32.const 864 + i32.const 12320 + i32.const 12352 call $~lib/string/String#replace local.tee $58 - i32.const 11824 + i32.const 12384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 11760 - i32.const 272 + i32.const 864 + i32.const 12320 + i32.const 304 call $~lib/string/String#replace local.tee $59 - i32.const 10944 + i32.const 11440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 401 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 - i32.const 800 + i32.const 304 + i32.const 304 + i32.const 864 call $~lib/string/String#replaceAll local.tee $60 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 2432 - i32.const 2464 + i32.const 864 + i32.const 2608 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $61 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 404 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 992 - i32.const 800 - i32.const 2464 + i32.const 1072 + i32.const 864 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $62 - i32.const 11792 + i32.const 12352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 406 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11856 - i32.const 800 - i32.const 2464 + i32.const 12416 + i32.const 864 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $63 - i32.const 11904 + i32.const 12464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 407 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 992 - i32.const 10944 - i32.const 10944 + i32.const 1072 + i32.const 11440 + i32.const 11440 call $~lib/string/String#replaceAll local.tee $64 - i32.const 992 + i32.const 1072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 408 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11936 - i32.const 320 - i32.const 11904 + i32.const 12496 + i32.const 368 + i32.const 12464 call $~lib/string/String#replaceAll local.tee $65 - i32.const 11968 + i32.const 12544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 409 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 992 - i32.const 10944 - i32.const 11792 + i32.const 1072 + i32.const 11440 + i32.const 12352 call $~lib/string/String#replaceAll local.tee $66 - i32.const 12016 + i32.const 12592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12048 - i32.const 12080 - i32.const 11792 + i32.const 12624 + i32.const 12656 + i32.const 12352 call $~lib/string/String#replaceAll local.tee $67 - i32.const 12112 + i32.const 12688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 411 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 1248 - i32.const 2464 + i32.const 864 + i32.const 1344 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $68 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1248 - i32.const 12144 - i32.const 11792 + i32.const 1344 + i32.const 12720 + i32.const 12352 call $~lib/string/String#replaceAll local.tee $69 - i32.const 1248 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 12176 - i32.const 2464 + i32.const 864 + i32.const 12752 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $70 - i32.const 12208 + i32.const 12784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10944 - i32.const 10944 - i32.const 2464 + i32.const 11440 + i32.const 11440 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $71 - i32.const 2464 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11600 - i32.const 2432 - i32.const 2464 + i32.const 12160 + i32.const 2608 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $72 - i32.const 12240 + i32.const 12816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 + i32.const 304 call $~lib/string/String#replaceAll local.tee $73 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 - i32.const 2464 + i32.const 304 + i32.const 304 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $74 - i32.const 2464 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 - i32.const 2464 - i32.const 272 + i32.const 2640 + i32.const 2640 + i32.const 304 call $~lib/string/String#replaceAll local.tee $75 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 - i32.const 272 - i32.const 272 + i32.const 2640 + i32.const 304 + i32.const 304 call $~lib/string/String#replaceAll local.tee $76 - i32.const 2464 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 421 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 - i32.const 2432 + i32.const 864 + i32.const 864 + i32.const 2608 call $~lib/string/String#replaceAll local.tee $77 - i32.const 2432 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 1216 - i32.const 2432 + i32.const 864 + i32.const 1312 + i32.const 2608 call $~lib/string/String#replaceAll local.tee $78 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 423 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 - i32.const 2464 + i32.const 864 + i32.const 304 + i32.const 2640 call $~lib/string/String#replaceAll local.tee $79 - i32.const 12272 + i32.const 12848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 - i32.const 272 + i32.const 864 + i32.const 304 + i32.const 304 call $~lib/string/String#replaceAll local.tee $80 - i32.const 800 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12304 + i32.const 12896 local.set $81 global.get $std/string/str call $~lib/rt/pure/__release @@ -16497,12 +16513,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice local.tee $81 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 429 i32.const 1 call $~lib/builtins/abort @@ -16513,12 +16529,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice local.tee $82 - i32.const 12352 + i32.const 12944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 430 i32.const 1 call $~lib/builtins/abort @@ -16529,12 +16545,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice local.tee $83 - i32.const 12384 + i32.const 12976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 431 i32.const 1 call $~lib/builtins/abort @@ -16545,12 +16561,12 @@ i32.const 7 call $~lib/string/String#slice local.tee $84 - i32.const 12416 + i32.const 13008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 432 i32.const 1 call $~lib/builtins/abort @@ -16561,12 +16577,12 @@ i32.const -6 call $~lib/string/String#slice local.tee $85 - i32.const 12448 + i32.const 13040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 433 i32.const 1 call $~lib/builtins/abort @@ -16577,12 +16593,12 @@ i32.const 3 call $~lib/string/String#slice local.tee $86 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 434 i32.const 1 call $~lib/builtins/abort @@ -16593,12 +16609,12 @@ i32.const -1 call $~lib/string/String#slice local.tee $87 - i32.const 12480 + i32.const 13072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 435 i32.const 1 call $~lib/builtins/abort @@ -16609,12 +16625,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#substr local.tee $88 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 437 i32.const 1 call $~lib/builtins/abort @@ -16625,12 +16641,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#substr local.tee $89 - i32.const 12352 + i32.const 12944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 438 i32.const 1 call $~lib/builtins/abort @@ -16641,12 +16657,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#substr local.tee $90 - i32.const 12384 + i32.const 12976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 439 i32.const 1 call $~lib/builtins/abort @@ -16657,12 +16673,12 @@ i32.const 7 call $~lib/string/String#substr local.tee $91 - i32.const 12528 + i32.const 13120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 440 i32.const 1 call $~lib/builtins/abort @@ -16673,12 +16689,12 @@ i32.const -6 call $~lib/string/String#substr local.tee $92 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 441 i32.const 1 call $~lib/builtins/abort @@ -16689,12 +16705,12 @@ i32.const 3 call $~lib/string/String#substr local.tee $93 - i32.const 12560 + i32.const 13168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 442 i32.const 1 call $~lib/builtins/abort @@ -16705,12 +16721,12 @@ i32.const -1 call $~lib/string/String#substr local.tee $94 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 443 i32.const 1 call $~lib/builtins/abort @@ -16721,12 +16737,12 @@ i32.const 100 call $~lib/string/String#substr local.tee $95 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 444 i32.const 1 call $~lib/builtins/abort @@ -16737,12 +16753,12 @@ i32.const 4 call $~lib/string/String#substr local.tee $96 - i32.const 12592 + i32.const 13200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 445 i32.const 1 call $~lib/builtins/abort @@ -16753,12 +16769,12 @@ i32.const -3 call $~lib/string/String#substr local.tee $97 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 446 i32.const 1 call $~lib/builtins/abort @@ -16769,12 +16785,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#substring local.tee $98 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 448 i32.const 1 call $~lib/builtins/abort @@ -16785,12 +16801,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#substring local.tee $99 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 449 i32.const 1 call $~lib/builtins/abort @@ -16801,12 +16817,12 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#substring local.tee $100 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 450 i32.const 1 call $~lib/builtins/abort @@ -16817,12 +16833,12 @@ i32.const 7 call $~lib/string/String#substring local.tee $101 - i32.const 12416 + i32.const 13008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 451 i32.const 1 call $~lib/builtins/abort @@ -16833,12 +16849,12 @@ i32.const -6 call $~lib/string/String#substring local.tee $102 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 452 i32.const 1 call $~lib/builtins/abort @@ -16849,12 +16865,12 @@ i32.const 3 call $~lib/string/String#substring local.tee $103 - i32.const 12624 + i32.const 13232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 453 i32.const 1 call $~lib/builtins/abort @@ -16865,12 +16881,12 @@ i32.const -1 call $~lib/string/String#substring local.tee $104 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 454 i32.const 1 call $~lib/builtins/abort @@ -16881,12 +16897,12 @@ i32.const 100 call $~lib/string/String#substring local.tee $105 - i32.const 12304 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 455 i32.const 1 call $~lib/builtins/abort @@ -16897,12 +16913,12 @@ i32.const 4 call $~lib/string/String#substring local.tee $106 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 456 i32.const 1 call $~lib/builtins/abort @@ -16913,12 +16929,12 @@ i32.const -3 call $~lib/string/String#substring local.tee $107 - i32.const 1248 + i32.const 1344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 457 i32.const 1 call $~lib/builtins/abort @@ -16926,7 +16942,7 @@ end i32.const 0 local.set $108 - i32.const 272 + i32.const 304 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -16944,7 +16960,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -16958,14 +16974,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 304 + i32.const 304 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $110 @@ -16980,14 +16996,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 465 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 1056 + i32.const 304 + i32.const 1152 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $109 @@ -17004,7 +17020,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17018,14 +17034,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 467 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 5264 + i32.const 13504 + i32.const 5648 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $110 @@ -17042,7 +17058,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 12880 + i32.const 13504 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17056,14 +17072,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 469 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 1056 + i32.const 13504 + i32.const 1152 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $109 @@ -17080,7 +17096,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17096,7 +17112,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17112,7 +17128,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17126,14 +17142,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 471 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12912 - i32.const 12944 + i32.const 13536 + i32.const 13584 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $110 @@ -17150,7 +17166,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17166,7 +17182,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17182,7 +17198,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17196,14 +17212,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 473 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 1056 + i32.const 13616 + i32.const 1152 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $109 @@ -17220,7 +17236,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17236,7 +17252,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17252,7 +17268,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17268,7 +17284,7 @@ i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17282,14 +17298,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 475 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 1056 + i32.const 13648 + i32.const 1152 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $110 @@ -17306,7 +17322,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17322,7 +17338,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17338,7 +17354,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17354,7 +17370,7 @@ i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17368,14 +17384,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 477 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13040 - i32.const 1056 + i32.const 13680 + i32.const 1152 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $109 @@ -17392,7 +17408,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17408,7 +17424,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17424,7 +17440,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17440,7 +17456,7 @@ i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 272 + i32.const 304 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17454,14 +17470,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 479 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $110 @@ -17478,7 +17494,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17494,7 +17510,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17510,7 +17526,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17524,14 +17540,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 481 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 i32.const 0 call $~lib/string/String#split local.set $109 @@ -17546,14 +17562,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 483 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 i32.const 1 call $~lib/string/String#split local.set $110 @@ -17570,7 +17586,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17584,14 +17600,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 485 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 1056 + i32.const 13504 + i32.const 1152 i32.const 1 call $~lib/string/String#split local.set $109 @@ -17608,7 +17624,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17622,14 +17638,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 i32.const 4 call $~lib/string/String#split local.set $110 @@ -17646,7 +17662,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17662,7 +17678,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17678,7 +17694,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17692,14 +17708,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 489 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 272 + i32.const 864 + i32.const 304 i32.const -1 call $~lib/string/String#split local.set $109 @@ -17716,7 +17732,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17732,7 +17748,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17748,7 +17764,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $109 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $110 local.get $109 @@ -17762,14 +17778,14 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 491 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 1056 + i32.const 13504 + i32.const 1152 i32.const -1 call $~lib/string/String#split local.set $110 @@ -17786,7 +17802,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 320 + i32.const 368 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17802,7 +17818,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 10912 + i32.const 11408 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17818,7 +17834,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $110 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq local.set $109 local.get $110 @@ -17832,7 +17848,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 493 i32.const 3 call $~lib/builtins/abort @@ -17844,12 +17860,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $108 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 498 i32.const 1 call $~lib/builtins/abort @@ -17859,12 +17875,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $110 - i32.const 1488 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 499 i32.const 1 call $~lib/builtins/abort @@ -17874,12 +17890,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $109 - i32.const 14800 + i32.const 15456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 500 i32.const 1 call $~lib/builtins/abort @@ -17889,12 +17905,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $111 - i32.const 14832 + i32.const 15488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 501 i32.const 1 call $~lib/builtins/abort @@ -17904,12 +17920,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $112 - i32.const 864 + i32.const 928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 502 i32.const 1 call $~lib/builtins/abort @@ -17919,12 +17935,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $113 - i32.const 14864 + i32.const 15520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 503 i32.const 1 call $~lib/builtins/abort @@ -17934,12 +17950,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $114 - i32.const 14896 + i32.const 15552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 504 i32.const 1 call $~lib/builtins/abort @@ -17949,12 +17965,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $115 - i32.const 14928 + i32.const 15584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 505 i32.const 1 call $~lib/builtins/abort @@ -17964,12 +17980,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $116 - i32.const 14960 + i32.const 15616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 506 i32.const 1 call $~lib/builtins/abort @@ -17979,12 +17995,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $117 - i32.const 14992 + i32.const 15648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 507 i32.const 1 call $~lib/builtins/abort @@ -17994,12 +18010,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $118 - i32.const 15024 + i32.const 15696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 508 i32.const 1 call $~lib/builtins/abort @@ -18009,12 +18025,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $119 - i32.const 15056 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 509 i32.const 1 call $~lib/builtins/abort @@ -18024,12 +18040,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $120 - i32.const 15088 + i32.const 15792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 510 i32.const 1 call $~lib/builtins/abort @@ -18039,12 +18055,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $121 - i32.const 15136 + i32.const 15840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 511 i32.const 1 call $~lib/builtins/abort @@ -18054,12 +18070,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $122 - i32.const 15184 + i32.const 15888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 512 i32.const 1 call $~lib/builtins/abort @@ -18069,12 +18085,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $123 - i32.const 15232 + i32.const 15936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 513 i32.const 1 call $~lib/builtins/abort @@ -18084,12 +18100,12 @@ i32.const 10 call $~lib/util/number/itoa32 local.tee $124 - i32.const 15280 + i32.const 15984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 514 i32.const 1 call $~lib/builtins/abort @@ -18099,12 +18115,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $125 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 516 i32.const 1 call $~lib/builtins/abort @@ -18114,12 +18130,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $126 - i32.const 15312 + i32.const 16016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 517 i32.const 1 call $~lib/builtins/abort @@ -18129,12 +18145,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $127 - i32.const 15184 + i32.const 15888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 518 i32.const 1 call $~lib/builtins/abort @@ -18144,12 +18160,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $128 - i32.const 15344 + i32.const 16048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 519 i32.const 1 call $~lib/builtins/abort @@ -18159,12 +18175,12 @@ i32.const 10 call $~lib/util/number/utoa32 local.tee $129 - i32.const 15392 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 520 i32.const 1 call $~lib/builtins/abort @@ -18174,12 +18190,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $130 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 524 i32.const 1 call $~lib/builtins/abort @@ -18189,12 +18205,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $131 - i32.const 1488 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 525 i32.const 1 call $~lib/builtins/abort @@ -18204,12 +18220,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $132 - i32.const 14800 + i32.const 15456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 526 i32.const 1 call $~lib/builtins/abort @@ -18219,12 +18235,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $133 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 527 i32.const 1 call $~lib/builtins/abort @@ -18234,12 +18250,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $134 - i32.const 15440 + i32.const 16144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 528 i32.const 1 call $~lib/builtins/abort @@ -18249,12 +18265,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $135 - i32.const 15472 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 529 i32.const 1 call $~lib/builtins/abort @@ -18264,12 +18280,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $136 - i32.const 15504 + i32.const 16208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 530 i32.const 1 call $~lib/builtins/abort @@ -18279,12 +18295,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $137 - i32.const 15536 + i32.const 16240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 531 i32.const 1 call $~lib/builtins/abort @@ -18294,12 +18310,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $138 - i32.const 15568 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 532 i32.const 1 call $~lib/builtins/abort @@ -18309,12 +18325,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $139 - i32.const 15600 + i32.const 16304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 533 i32.const 1 call $~lib/builtins/abort @@ -18324,12 +18340,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $140 - i32.const 15632 + i32.const 16336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 534 i32.const 1 call $~lib/builtins/abort @@ -18339,12 +18355,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $141 - i32.const 15664 + i32.const 16368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 535 i32.const 1 call $~lib/builtins/abort @@ -18354,12 +18370,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $142 - i32.const 15696 + i32.const 16416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 536 i32.const 1 call $~lib/builtins/abort @@ -18369,12 +18385,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $143 - i32.const 15728 + i32.const 16464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 537 i32.const 1 call $~lib/builtins/abort @@ -18384,12 +18400,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $144 - i32.const 15760 + i32.const 16512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 538 i32.const 1 call $~lib/builtins/abort @@ -18399,12 +18415,12 @@ i32.const 16 call $~lib/util/number/utoa32 local.tee $145 - i32.const 15792 + i32.const 16560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 539 i32.const 1 call $~lib/builtins/abort @@ -18414,12 +18430,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $146 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 541 i32.const 1 call $~lib/builtins/abort @@ -18429,12 +18445,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $147 - i32.const 14864 + i32.const 15520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 542 i32.const 1 call $~lib/builtins/abort @@ -18444,12 +18460,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $148 - i32.const 15728 + i32.const 16464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 543 i32.const 1 call $~lib/builtins/abort @@ -18459,12 +18475,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $149 - i32.const 15824 + i32.const 16608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 544 i32.const 1 call $~lib/builtins/abort @@ -18474,12 +18490,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $150 - i32.const 15872 + i32.const 16656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 545 i32.const 1 call $~lib/builtins/abort @@ -18489,12 +18505,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $151 - i32.const 15904 + i32.const 16704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 546 i32.const 1 call $~lib/builtins/abort @@ -18504,12 +18520,12 @@ i32.const 16 call $~lib/util/number/itoa32 local.tee $152 - i32.const 15904 + i32.const 16704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 547 i32.const 1 call $~lib/builtins/abort @@ -18519,12 +18535,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $153 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 551 i32.const 1 call $~lib/builtins/abort @@ -18534,12 +18550,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $154 - i32.const 1488 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 552 i32.const 1 call $~lib/builtins/abort @@ -18549,12 +18565,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $155 - i32.const 15952 + i32.const 16752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 553 i32.const 1 call $~lib/builtins/abort @@ -18564,12 +18580,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $156 - i32.const 15984 + i32.const 16784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 554 i32.const 1 call $~lib/builtins/abort @@ -18579,12 +18595,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $157 - i32.const 16016 + i32.const 16816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 555 i32.const 1 call $~lib/builtins/abort @@ -18594,12 +18610,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $158 - i32.const 16048 + i32.const 16848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 556 i32.const 1 call $~lib/builtins/abort @@ -18609,12 +18625,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $159 - i32.const 16080 + i32.const 16880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 557 i32.const 1 call $~lib/builtins/abort @@ -18624,12 +18640,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $160 - i32.const 16112 + i32.const 16912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 558 i32.const 1 call $~lib/builtins/abort @@ -18639,12 +18655,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $161 - i32.const 16160 + i32.const 16960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 559 i32.const 1 call $~lib/builtins/abort @@ -18654,12 +18670,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $162 - i32.const 16240 + i32.const 17040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 560 i32.const 1 call $~lib/builtins/abort @@ -18669,12 +18685,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $163 - i32.const 16320 + i32.const 17136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 561 i32.const 1 call $~lib/builtins/abort @@ -18684,12 +18700,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $164 - i32.const 16400 + i32.const 17232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 562 i32.const 1 call $~lib/builtins/abort @@ -18699,12 +18715,12 @@ i32.const 2 call $~lib/util/number/utoa32 local.tee $165 - i32.const 16480 + i32.const 17328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 563 i32.const 1 call $~lib/builtins/abort @@ -18714,12 +18730,12 @@ i32.const 2 call $~lib/util/number/itoa32 local.tee $166 - i32.const 16560 + i32.const 17424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -18729,12 +18745,12 @@ i32.const 3 call $~lib/util/number/utoa32 local.tee $167 - i32.const 16608 + i32.const 17472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -18744,12 +18760,12 @@ i32.const 4 call $~lib/util/number/utoa32 local.tee $168 - i32.const 16672 + i32.const 17536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -18759,12 +18775,12 @@ i32.const 5 call $~lib/util/number/utoa32 local.tee $169 - i32.const 16720 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 571 i32.const 1 call $~lib/builtins/abort @@ -18774,12 +18790,12 @@ i32.const 8 call $~lib/util/number/utoa32 local.tee $170 - i32.const 16768 + i32.const 17648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 572 i32.const 1 call $~lib/builtins/abort @@ -18789,12 +18805,12 @@ i32.const 11 call $~lib/util/number/utoa32 local.tee $171 - i32.const 16816 + i32.const 17696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 573 i32.const 1 call $~lib/builtins/abort @@ -18804,12 +18820,12 @@ i32.const 15 call $~lib/util/number/utoa32 local.tee $172 - i32.const 16864 + i32.const 17744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 574 i32.const 1 call $~lib/builtins/abort @@ -18819,12 +18835,12 @@ i32.const 17 call $~lib/util/number/utoa32 local.tee $173 - i32.const 16912 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 575 i32.const 1 call $~lib/builtins/abort @@ -18834,12 +18850,12 @@ i32.const 21 call $~lib/util/number/utoa32 local.tee $174 - i32.const 16944 + i32.const 17840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 576 i32.const 1 call $~lib/builtins/abort @@ -18849,12 +18865,12 @@ i32.const 27 call $~lib/util/number/utoa32 local.tee $175 - i32.const 16976 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 577 i32.const 1 call $~lib/builtins/abort @@ -18864,12 +18880,12 @@ i32.const 32 call $~lib/util/number/utoa32 local.tee $176 - i32.const 17008 + i32.const 17936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 578 i32.const 1 call $~lib/builtins/abort @@ -18879,12 +18895,12 @@ i32.const 36 call $~lib/util/number/utoa32 local.tee $177 - i32.const 17040 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 579 i32.const 1 call $~lib/builtins/abort @@ -18894,12 +18910,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $178 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 583 i32.const 1 call $~lib/builtins/abort @@ -18909,12 +18925,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $179 - i32.const 14832 + i32.const 15488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -18924,12 +18940,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $180 - i32.const 864 + i32.const 928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -18939,12 +18955,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $181 - i32.const 14896 + i32.const 15552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -18954,12 +18970,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $182 - i32.const 14928 + i32.const 15584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -18969,12 +18985,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $183 - i32.const 14960 + i32.const 15616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -18984,12 +19000,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $184 - i32.const 15024 + i32.const 15696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 589 i32.const 1 call $~lib/builtins/abort @@ -18999,12 +19015,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $185 - i32.const 17072 + i32.const 18032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 590 i32.const 1 call $~lib/builtins/abort @@ -19014,12 +19030,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $186 - i32.const 17104 + i32.const 18080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 591 i32.const 1 call $~lib/builtins/abort @@ -19029,12 +19045,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $187 - i32.const 15392 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -19044,12 +19060,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $188 - i32.const 17152 + i32.const 18128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -19059,12 +19075,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $189 - i32.const 17200 + i32.const 18176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -19074,12 +19090,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $190 - i32.const 17248 + i32.const 18224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -19089,12 +19105,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $191 - i32.const 17296 + i32.const 18272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -19104,12 +19120,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $192 - i32.const 17344 + i32.const 18320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -19119,12 +19135,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $193 - i32.const 17392 + i32.const 18368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 598 i32.const 1 call $~lib/builtins/abort @@ -19134,12 +19150,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $194 - i32.const 17440 + i32.const 18432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 599 i32.const 1 call $~lib/builtins/abort @@ -19149,12 +19165,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $195 - i32.const 17488 + i32.const 18496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 600 i32.const 1 call $~lib/builtins/abort @@ -19164,12 +19180,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $196 - i32.const 17552 + i32.const 18560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 601 i32.const 1 call $~lib/builtins/abort @@ -19179,12 +19195,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $197 - i32.const 17616 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 602 i32.const 1 call $~lib/builtins/abort @@ -19194,12 +19210,12 @@ i32.const 10 call $~lib/util/number/utoa64 local.tee $198 - i32.const 17680 + i32.const 18688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 603 i32.const 1 call $~lib/builtins/abort @@ -19209,12 +19225,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $199 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 605 i32.const 1 call $~lib/builtins/abort @@ -19224,12 +19240,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $200 - i32.const 17744 + i32.const 18752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 606 i32.const 1 call $~lib/builtins/abort @@ -19239,12 +19255,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $201 - i32.const 15392 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 607 i32.const 1 call $~lib/builtins/abort @@ -19254,12 +19270,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $202 - i32.const 17152 + i32.const 18128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 608 i32.const 1 call $~lib/builtins/abort @@ -19269,12 +19285,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $203 - i32.const 17776 + i32.const 18784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 609 i32.const 1 call $~lib/builtins/abort @@ -19284,12 +19300,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $204 - i32.const 17200 + i32.const 18176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -19299,12 +19315,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $205 - i32.const 17824 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -19314,12 +19330,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $206 - i32.const 17872 + i32.const 18880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -19329,12 +19345,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $207 - i32.const 17920 + i32.const 18928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -19344,12 +19360,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $208 - i32.const 17968 + i32.const 18992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -19359,12 +19375,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $209 - i32.const 18032 + i32.const 19056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -19374,12 +19390,12 @@ i32.const 10 call $~lib/util/number/itoa64 local.tee $210 - i32.const 18096 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 616 i32.const 1 call $~lib/builtins/abort @@ -19389,12 +19405,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $211 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 620 i32.const 1 call $~lib/builtins/abort @@ -19404,12 +19420,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $212 - i32.const 1488 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 621 i32.const 1 call $~lib/builtins/abort @@ -19419,12 +19435,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $213 - i32.const 11760 + i32.const 12320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -19434,12 +19450,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $214 - i32.const 15472 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -19449,12 +19465,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $215 - i32.const 15568 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -19464,12 +19480,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $216 - i32.const 18160 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -19479,12 +19495,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $217 - i32.const 18208 + i32.const 19232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -19494,12 +19510,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $218 - i32.const 18256 + i32.const 19280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -19509,12 +19525,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $219 - i32.const 18304 + i32.const 19328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -19524,12 +19540,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $220 - i32.const 18352 + i32.const 19376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -19539,12 +19555,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $221 - i32.const 18400 + i32.const 19424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -19554,12 +19570,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $222 - i32.const 18448 + i32.const 19488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -19569,12 +19585,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $223 - i32.const 18496 + i32.const 19552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 632 i32.const 1 call $~lib/builtins/abort @@ -19584,12 +19600,12 @@ i32.const 16 call $~lib/util/number/utoa64 local.tee $224 - i32.const 18544 + i32.const 19616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -19599,12 +19615,12 @@ i32.const 16 call $~lib/util/number/itoa64 local.tee $225 - i32.const 18592 + i32.const 19680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 635 i32.const 1 call $~lib/builtins/abort @@ -19614,12 +19630,12 @@ i32.const 16 call $~lib/util/number/itoa64 local.tee $226 - i32.const 18656 + i32.const 19744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 636 i32.const 1 call $~lib/builtins/abort @@ -19629,12 +19645,12 @@ i32.const 16 call $~lib/util/number/itoa64 local.tee $227 - i32.const 18656 + i32.const 19744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 637 i32.const 1 call $~lib/builtins/abort @@ -19644,12 +19660,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $228 - i32.const 1424 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 641 i32.const 1 call $~lib/builtins/abort @@ -19659,12 +19675,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $229 - i32.const 1488 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 642 i32.const 1 call $~lib/builtins/abort @@ -19674,12 +19690,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $230 - i32.const 15984 + i32.const 16784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 643 i32.const 1 call $~lib/builtins/abort @@ -19689,12 +19705,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $231 - i32.const 16016 + i32.const 16816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -19704,12 +19720,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $232 - i32.const 16080 + i32.const 16880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -19719,12 +19735,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $233 - i32.const 16112 + i32.const 16912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -19734,12 +19750,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $234 - i32.const 16480 + i32.const 17328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -19749,12 +19765,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $235 - i32.const 18720 + i32.const 19808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 648 i32.const 1 call $~lib/builtins/abort @@ -19764,12 +19780,12 @@ i32.const 2 call $~lib/util/number/utoa64 local.tee $236 - i32.const 18848 + i32.const 19936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 649 i32.const 1 call $~lib/builtins/abort @@ -19779,12 +19795,12 @@ i32.const 2 call $~lib/util/number/itoa64 local.tee $237 - i32.const 18992 + i32.const 20096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -19794,12 +19810,12 @@ i32.const 3 call $~lib/util/number/utoa64 local.tee $238 - i32.const 19088 + i32.const 20192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 655 i32.const 1 call $~lib/builtins/abort @@ -19809,12 +19825,12 @@ i32.const 4 call $~lib/util/number/utoa64 local.tee $239 - i32.const 19200 + i32.const 20304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -19824,12 +19840,12 @@ i32.const 5 call $~lib/util/number/utoa64 local.tee $240 - i32.const 19280 + i32.const 20400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -19839,12 +19855,12 @@ i32.const 8 call $~lib/util/number/utoa64 local.tee $241 - i32.const 19360 + i32.const 20480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -19854,12 +19870,12 @@ i32.const 11 call $~lib/util/number/utoa64 local.tee $242 - i32.const 19424 + i32.const 20544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -19869,12 +19885,12 @@ i32.const 15 call $~lib/util/number/utoa64 local.tee $243 - i32.const 19488 + i32.const 20608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -19884,12 +19900,12 @@ i32.const 17 call $~lib/util/number/utoa64 local.tee $244 - i32.const 19552 + i32.const 20672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -19899,12 +19915,12 @@ i32.const 21 call $~lib/util/number/utoa64 local.tee $245 - i32.const 19600 + i32.const 20736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -19914,12 +19930,12 @@ i32.const 27 call $~lib/util/number/utoa64 local.tee $246 - i32.const 19648 + i32.const 20800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -19929,12 +19945,12 @@ i32.const 32 call $~lib/util/number/utoa64 local.tee $247 - i32.const 19696 + i32.const 20848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -19944,12 +19960,12 @@ i32.const 36 call $~lib/util/number/utoa64 local.tee $248 - i32.const 19744 + i32.const 20896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -19958,12 +19974,12 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $249 - i32.const 19792 + i32.const 20944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -19972,12 +19988,12 @@ f64.const -0 call $~lib/util/number/dtoa local.tee $250 - i32.const 19792 + i32.const 20944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 669 i32.const 1 call $~lib/builtins/abort @@ -19986,12 +20002,12 @@ f64.const nan:0x8000000000000 call $~lib/util/number/dtoa local.tee $251 - i32.const 5328 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 670 i32.const 1 call $~lib/builtins/abort @@ -20000,12 +20016,12 @@ f64.const inf call $~lib/util/number/dtoa local.tee $252 - i32.const 19824 + i32.const 20976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 671 i32.const 1 call $~lib/builtins/abort @@ -20015,12 +20031,12 @@ f64.neg call $~lib/util/number/dtoa local.tee $253 - i32.const 6544 + i32.const 7008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 672 i32.const 1 call $~lib/builtins/abort @@ -20029,12 +20045,12 @@ global.get $~lib/builtins/f64.EPSILON call $~lib/util/number/dtoa local.tee $254 - i32.const 5840 + i32.const 6224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 673 i32.const 1 call $~lib/builtins/abort @@ -20044,12 +20060,12 @@ f64.neg call $~lib/util/number/dtoa local.tee $255 - i32.const 20768 + i32.const 21984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 674 i32.const 1 call $~lib/builtins/abort @@ -20058,12 +20074,12 @@ global.get $~lib/builtins/f64.MAX_VALUE call $~lib/util/number/dtoa local.tee $256 - i32.const 5904 + i32.const 6288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 675 i32.const 1 call $~lib/builtins/abort @@ -20073,12 +20089,12 @@ f64.neg call $~lib/util/number/dtoa local.tee $257 - i32.const 20832 + i32.const 22048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 676 i32.const 1 call $~lib/builtins/abort @@ -20087,12 +20103,12 @@ f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.tee $258 - i32.const 20896 + i32.const 22128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 677 i32.const 1 call $~lib/builtins/abort @@ -20101,12 +20117,12 @@ f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.tee $259 - i32.const 20960 + i32.const 22192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 678 i32.const 1 call $~lib/builtins/abort @@ -20115,12 +20131,12 @@ f64.const 4.940656e-318 call $~lib/util/number/dtoa local.tee $260 - i32.const 21024 + i32.const 22272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -20129,12 +20145,12 @@ f64.const 9060801153433600 call $~lib/util/number/dtoa local.tee $261 - i32.const 21072 + i32.const 22320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -20143,12 +20159,12 @@ f64.const 4708356024711512064 call $~lib/util/number/dtoa local.tee $262 - i32.const 21136 + i32.const 22384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -20157,12 +20173,12 @@ f64.const 9409340012568248320 call $~lib/util/number/dtoa local.tee $263 - i32.const 21200 + i32.const 22448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -20171,12 +20187,12 @@ f64.const 5e-324 call $~lib/util/number/dtoa local.tee $264 - i32.const 5968 + i32.const 6368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 685 i32.const 1 call $~lib/builtins/abort @@ -20185,12 +20201,12 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $265 - i32.const 21264 + i32.const 22512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 691 i32.const 1 call $~lib/builtins/abort @@ -20199,12 +20215,12 @@ f64.const 0.1 call $~lib/util/number/dtoa local.tee $266 - i32.const 3104 + i32.const 3328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 692 i32.const 1 call $~lib/builtins/abort @@ -20213,12 +20229,12 @@ f64.const -1 call $~lib/util/number/dtoa local.tee $267 - i32.const 21296 + i32.const 22544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -20227,12 +20243,12 @@ f64.const -0.1 call $~lib/util/number/dtoa local.tee $268 - i32.const 21328 + i32.const 22576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -20241,12 +20257,12 @@ f64.const 1e6 call $~lib/util/number/dtoa local.tee $269 - i32.const 21360 + i32.const 22608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -20255,12 +20271,12 @@ f64.const 1e-06 call $~lib/util/number/dtoa local.tee $270 - i32.const 21408 + i32.const 22656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -20269,12 +20285,12 @@ f64.const -1e6 call $~lib/util/number/dtoa local.tee $271 - i32.const 21440 + i32.const 22704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -20283,12 +20299,12 @@ f64.const -1e-06 call $~lib/util/number/dtoa local.tee $272 - i32.const 21488 + i32.const 22752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -20297,12 +20313,12 @@ f64.const 1e7 call $~lib/util/number/dtoa local.tee $273 - i32.const 21536 + i32.const 22800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -20311,12 +20327,12 @@ f64.const 1e-07 call $~lib/util/number/dtoa local.tee $274 - i32.const 21584 + i32.const 22848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -20325,12 +20341,12 @@ f64.const 1.e+308 call $~lib/util/number/dtoa local.tee $275 - i32.const 3328 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -20339,12 +20355,12 @@ f64.const -1.e+308 call $~lib/util/number/dtoa local.tee $276 - i32.const 21616 + i32.const 22880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -20353,12 +20369,12 @@ f64.const inf call $~lib/util/number/dtoa local.tee $277 - i32.const 19824 + i32.const 20976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -20367,12 +20383,12 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $278 - i32.const 6544 + i32.const 7008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 706 i32.const 1 call $~lib/builtins/abort @@ -20381,12 +20397,12 @@ f64.const 1e-308 call $~lib/util/number/dtoa local.tee $279 - i32.const 21648 + i32.const 22928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 707 i32.const 1 call $~lib/builtins/abort @@ -20395,12 +20411,12 @@ f64.const -1e-308 call $~lib/util/number/dtoa local.tee $280 - i32.const 21680 + i32.const 22960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 708 i32.const 1 call $~lib/builtins/abort @@ -20409,12 +20425,12 @@ f64.const 1e-323 call $~lib/util/number/dtoa local.tee $281 - i32.const 21712 + i32.const 23008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -20423,12 +20439,12 @@ f64.const -1e-323 call $~lib/util/number/dtoa local.tee $282 - i32.const 21744 + i32.const 23040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -20437,12 +20453,12 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $283 - i32.const 19792 + i32.const 20944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -20451,12 +20467,12 @@ f64.const 4294967272 call $~lib/util/number/dtoa local.tee $284 - i32.const 21776 + i32.const 23088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -20465,12 +20481,12 @@ f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa local.tee $285 - i32.const 21824 + i32.const 23136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -20479,12 +20495,12 @@ f64.const 555555555.5555556 call $~lib/util/number/dtoa local.tee $286 - i32.const 21888 + i32.const 23200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -20493,12 +20509,12 @@ f64.const 0.9999999999999999 call $~lib/util/number/dtoa local.tee $287 - i32.const 21952 + i32.const 23264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -20507,12 +20523,12 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $288 - i32.const 21264 + i32.const 22512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 718 i32.const 1 call $~lib/builtins/abort @@ -20521,12 +20537,12 @@ f64.const 12.34 call $~lib/util/number/dtoa local.tee $289 - i32.const 22016 + i32.const 23328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -20537,12 +20553,12 @@ f64.div call $~lib/util/number/dtoa local.tee $290 - i32.const 22048 + i32.const 23360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 721 i32.const 1 call $~lib/builtins/abort @@ -20551,12 +20567,12 @@ f64.const 1234e17 call $~lib/util/number/dtoa local.tee $291 - i32.const 22112 + i32.const 23424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 722 i32.const 1 call $~lib/builtins/abort @@ -20565,12 +20581,12 @@ f64.const 1234e18 call $~lib/util/number/dtoa local.tee $292 - i32.const 22176 + i32.const 23504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 723 i32.const 1 call $~lib/builtins/abort @@ -20579,12 +20595,12 @@ f64.const 2.71828 call $~lib/util/number/dtoa local.tee $293 - i32.const 22224 + i32.const 23552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 724 i32.const 1 call $~lib/builtins/abort @@ -20593,12 +20609,12 @@ f64.const 0.0271828 call $~lib/util/number/dtoa local.tee $294 - i32.const 22256 + i32.const 23600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 725 i32.const 1 call $~lib/builtins/abort @@ -20607,12 +20623,12 @@ f64.const 271.828 call $~lib/util/number/dtoa local.tee $295 - i32.const 22304 + i32.const 23648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 726 i32.const 1 call $~lib/builtins/abort @@ -20621,12 +20637,12 @@ f64.const 1.1e+128 call $~lib/util/number/dtoa local.tee $296 - i32.const 22336 + i32.const 23696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 727 i32.const 1 call $~lib/builtins/abort @@ -20635,12 +20651,12 @@ f64.const 1.1e-64 call $~lib/util/number/dtoa local.tee $297 - i32.const 22368 + i32.const 23744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 728 i32.const 1 call $~lib/builtins/abort @@ -20649,12 +20665,12 @@ f64.const 0.000035689 call $~lib/util/number/dtoa local.tee $298 - i32.const 22400 + i32.const 23792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 80 + i32.const 96 i32.const 729 i32.const 1 call $~lib/builtins/abort @@ -21293,7 +21309,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 176 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -21304,7 +21320,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -21319,7 +21335,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 176 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -21336,7 +21352,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 176 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -21357,11 +21373,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -21379,14 +21390,14 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 176 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/symbol.json b/tests/compiler/std/symbol.json index b1da366ff4..bf222c4d2d 100644 --- a/tests/compiler/std/symbol.json +++ b/tests/compiler/std/symbol.json @@ -1,5 +1,6 @@ { "asc_flags": [ - "--runtime none" + "--runtime none", + "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 35c2d5f686..efc15ab6f1 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -9,32 +9,32 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1056) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") - (data (i32.const 1104) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1216) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data (i32.const 1280) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1328) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1380) "\01\00\00\00\01") - (data (i32.const 1392) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") - (data (i32.const 1440) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") - (data (i32.const 1504) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") - (data (i32.const 1536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h") - (data (i32.const 1568) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") - (data (i32.const 1600) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") - (data (i32.const 1632) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") - (data (i32.const 1664) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t") - (data (i32.const 1696) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") - (data (i32.const 1744) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") - (data (i32.const 1792) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") - (data (i32.const 1840) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") - (data (i32.const 1872) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1904) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00)") - (data (i32.const 1936) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") - (data (i32.const 1968) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") - (data (i32.const 2016) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") - (data (i32.const 2080) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") + (data (i32.const 1036) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1068) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") + (data (i32.const 1116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1164) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1228) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data (i32.const 1292) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 1340) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 1408) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 1436) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") + (data (i32.const 1484) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") + (data (i32.const 1548) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") + (data (i32.const 1596) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h") + (data (i32.const 1628) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") + (data (i32.const 1676) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") + (data (i32.const 1708) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") + (data (i32.const 1756) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t") + (data (i32.const 1788) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") + (data (i32.const 1836) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") + (data (i32.const 1884) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") + (data (i32.const 1932) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") + (data (i32.const 1980) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 2012) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00)") + (data (i32.const 2044) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") + (data (i32.const 2092) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") + (data (i32.const 2140) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") + (data (i32.const 2204) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) @@ -48,8 +48,9 @@ (global $std/symbol/key3 (mut i32) (i32.const 0)) (global $std/symbol/key4 (mut i32) (i32.const 0)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) (func $~lib/symbol/Symbol (result i32) (local $0 i32) global.get $~lib/symbol/nextId @@ -64,46 +65,49 @@ end local.get $0 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $4 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 + i32.const 4 + i32.sub + local.tee $5 i32.add - local.tee $2 + local.tee $0 memory.size - local.tee $5 + local.tee $2 i32.const 16 i32.shl - local.tee $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 i32.gt_u if - local.get $5 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -111,16 +115,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $5 - local.get $3 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -129,24 +133,43 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + local.get $5 + i32.store local.get $4 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 i32.sub local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $2 - local.get $1 + i32.const 0 i32.store offset=8 local.get $2 - local.get $0 + local.get $1 i32.store offset=12 - local.get $4 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -309,11 +332,11 @@ (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1120 - i32.const 1168 + i32.const 1136 + i32.const 1184 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -321,7 +344,7 @@ end local.get $0 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $1 local.get $0 call $~lib/memory/memory.fill @@ -329,9 +352,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -504,7 +527,7 @@ else local.get $0 i32.load - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq end if @@ -633,7 +656,7 @@ (local $3 i32) (local $4 i32) local.get $0 - i32.const 1040 + i32.const 1056 call $~lib/util/hash/hashStr local.tee $3 call $~lib/map/Map<~lib/string/String,usize>#find @@ -686,7 +709,7 @@ i32.mul i32.add local.tee $2 - i32.const 1040 + i32.const 1056 i32.store local.get $2 local.get $1 @@ -908,11 +931,11 @@ if local.get $2 i32.load offset=4 - i32.const 1040 + i32.const 1056 i32.ne if local.get $2 - i32.const 1040 + i32.const 1056 i32.store offset=4 end else @@ -962,7 +985,7 @@ local.get $1 i32.store local.get $2 - i32.const 1040 + i32.const 1056 i32.store offset=4 local.get $0 local.get $0 @@ -993,19 +1016,19 @@ global.get $~lib/symbol/stringToId if global.get $~lib/symbol/stringToId - i32.const 1040 + i32.const 1056 call $~lib/util/hash/hashStr call $~lib/map/Map<~lib/string/String,usize>#find if global.get $~lib/symbol/stringToId - i32.const 1040 + i32.const 1056 call $~lib/util/hash/hashStr call $~lib/map/Map<~lib/string/String,usize>#find local.tee $0 i32.eqz if - i32.const 1232 - i32.const 1296 + i32.const 1248 + i32.const 1312 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -1018,7 +1041,7 @@ else i32.const 24 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1043,7 +1066,7 @@ global.set $~lib/symbol/stringToId i32.const 24 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1103,8 +1126,8 @@ local.tee $0 i32.eqz if - i32.const 1232 - i32.const 1296 + i32.const 1248 + i32.const 1312 i32.const 104 i32.const 17 call $~lib/builtins/abort @@ -1309,7 +1332,7 @@ (local $4 i32) block $__inlined_func$~lib/string/String#concat local.get $0 - i32.const 1888 + i32.const 2000 local.get $0 select local.tee $3 @@ -1318,7 +1341,7 @@ i32.shl local.tee $2 local.get $1 - i32.const 1888 + i32.const 2000 local.get $1 select local.tee $1 @@ -1330,13 +1353,13 @@ local.tee $0 i32.eqz if - i32.const 1392 + i32.const 1424 local.set $0 br $__inlined_func$~lib/string/String#concat end local.get $0 i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.tee $0 local.get $3 local.get $2 @@ -1351,7 +1374,7 @@ local.get $0 ) (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) - i32.const 1856 + i32.const 1952 block $break|0 (result i32) block $case11|0 block $case10|0 @@ -1370,37 +1393,37 @@ i32.sub br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 end - i32.const 1408 + i32.const 1456 br $break|0 end - i32.const 1456 + i32.const 1504 br $break|0 end - i32.const 1520 + i32.const 1568 br $break|0 end - i32.const 1552 + i32.const 1616 br $break|0 end - i32.const 1584 + i32.const 1648 br $break|0 end - i32.const 1616 + i32.const 1696 br $break|0 end - i32.const 1648 + i32.const 1728 br $break|0 end - i32.const 1680 + i32.const 1776 br $break|0 end - i32.const 1712 + i32.const 1808 br $break|0 end - i32.const 1760 + i32.const 1856 br $break|0 end - i32.const 1808 + i32.const 1904 br $break|0 end global.get $~lib/symbol/idToString @@ -1416,11 +1439,11 @@ local.get $0 call $~lib/map/Map#get else - i32.const 1392 + i32.const 1424 end end call $~lib/string/String.__concat - i32.const 1920 + i32.const 2032 call $~lib/string/String.__concat ) (func $start:std/symbol @@ -1435,13 +1458,13 @@ i32.eq if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2160 + i32.const 2284 global.set $~lib/rt/stub/offset call $~lib/symbol/_Symbol.for global.set $std/symbol/sym3 @@ -1452,7 +1475,7 @@ i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -1467,7 +1490,7 @@ global.get $std/symbol/key1 if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -1476,7 +1499,7 @@ global.get $std/symbol/key2 if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -1488,8 +1511,8 @@ local.get $0 i32.eqz if - i32.const 1344 - i32.const 1072 + i32.const 1360 + i32.const 1088 i32.const 17 i32.const 12 call $~lib/builtins/abort @@ -1502,8 +1525,8 @@ local.get $0 i32.eqz if - i32.const 1344 - i32.const 1072 + i32.const 1360 + i32.const 1088 i32.const 18 i32.const 12 call $~lib/builtins/abort @@ -1511,12 +1534,12 @@ end global.set $std/symbol/key4 global.get $std/symbol/key3 - i32.const 1040 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -1528,7 +1551,7 @@ i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -1536,12 +1559,12 @@ end call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString - i32.const 1952 + i32.const 2064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -1549,12 +1572,12 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - i32.const 1984 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -1564,12 +1587,12 @@ global.set $std/symbol/isConcatSpreadable i32.const 1 call $~lib/symbol/_Symbol#toString - i32.const 2032 + i32.const 2160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1577,12 +1600,12 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - i32.const 2096 + i32.const 2224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -1590,6 +1613,13 @@ end ) (func $~start + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end call $start:std/symbol ) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index a5bff270c4..6829affd47 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -10,32 +10,32 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 48) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00") - (data (i32.const 96) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") - (data (i32.const 272) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 320) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 368) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 384) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00") - (data (i32.const 432) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00") - (data (i32.const 496) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00") - (data (i32.const 528) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h\00") - (data (i32.const 560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00") - (data (i32.const 592) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") - (data (i32.const 624) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00") - (data (i32.const 656) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t\00") - (data (i32.const 688) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00") - (data (i32.const 736) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00") - (data (i32.const 784) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00") - (data (i32.const 832) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00") - (data (i32.const 864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 896) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00)\00") - (data (i32.const 928) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00") - (data (i32.const 960) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00") - (data (i32.const 1008) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00") - (data (i32.const 1072) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") + (data (i32.const 12) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 44) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00") + (data (i32.const 92) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 140) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 204) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") + (data (i32.const 268) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 316) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") + (data (i32.const 380) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 412) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00") + (data (i32.const 460) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00") + (data (i32.const 524) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00") + (data (i32.const 572) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h\00") + (data (i32.const 604) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00") + (data (i32.const 652) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") + (data (i32.const 684) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00") + (data (i32.const 732) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t\00") + (data (i32.const 764) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00") + (data (i32.const 812) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00") + (data (i32.const 860) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00") + (data (i32.const 908) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00") + (data (i32.const 956) "\08\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 988) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00)\00") + (data (i32.const 1020) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00") + (data (i32.const 1068) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00") + (data (i32.const 1116) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00") + (data (i32.const 1180) "4\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") (table $0 1 funcref) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) @@ -55,9 +55,10 @@ (global $std/symbol/hasInstance (mut i32) (i32.const 0)) (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1140)) + (global $~started (mut i32) (i32.const 0)) + (global $~lib/heap/__heap_base i32 (i32.const 1252)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 ) @@ -88,6 +89,19 @@ call $~lib/rt/stub/__release local.get $1 ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -99,6 +113,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -142,60 +166,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -414,7 +445,7 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if i32.const 112 @@ -426,7 +457,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new local.set $2 local.get $2 i32.const 0 @@ -445,7 +476,7 @@ if i32.const 24 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -485,7 +516,7 @@ if i32.const 24 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -521,9 +552,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -3036,7 +3067,7 @@ i32.const 0 i32.eq if - i32.const 880 + i32.const 976 local.tee $2 local.get $1 local.tee $3 @@ -3069,7 +3100,7 @@ i32.const 0 i32.eq if - i32.const 384 + i32.const 400 call $~lib/rt/stub/__retain local.set $2 local.get $1 @@ -3079,7 +3110,7 @@ end local.get $6 i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $7 local.get $7 @@ -3107,7 +3138,7 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - i32.const 880 + i32.const 976 local.get $0 i32.const 0 i32.ne @@ -3129,7 +3160,7 @@ (local $5 i32) local.get $0 local.set $1 - i32.const 384 + i32.const 400 local.set $2 block $break|0 block $case11|0 @@ -3192,7 +3223,7 @@ br_if $case10|0 br $case11|0 end - i32.const 400 + i32.const 432 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3200,7 +3231,7 @@ local.set $2 br $break|0 end - i32.const 448 + i32.const 480 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3208,7 +3239,7 @@ local.set $2 br $break|0 end - i32.const 512 + i32.const 544 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3216,7 +3247,7 @@ local.set $2 br $break|0 end - i32.const 544 + i32.const 592 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3224,7 +3255,7 @@ local.set $2 br $break|0 end - i32.const 576 + i32.const 624 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3232,7 +3263,7 @@ local.set $2 br $break|0 end - i32.const 608 + i32.const 672 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3240,7 +3271,7 @@ local.set $2 br $break|0 end - i32.const 640 + i32.const 704 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3248,7 +3279,7 @@ local.set $2 br $break|0 end - i32.const 672 + i32.const 752 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3256,7 +3287,7 @@ local.set $2 br $break|0 end - i32.const 704 + i32.const 784 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3264,7 +3295,7 @@ local.set $2 br $break|0 end - i32.const 752 + i32.const 832 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3272,7 +3303,7 @@ local.set $2 br $break|0 end - i32.const 800 + i32.const 880 local.set $3 local.get $2 call $~lib/rt/stub/__release @@ -3302,11 +3333,11 @@ end br $break|0 end - i32.const 848 + i32.const 928 local.get $2 call $~lib/string/String.__concat local.tee $3 - i32.const 912 + i32.const 1008 call $~lib/string/String.__concat local.tee $4 local.set $5 @@ -3340,12 +3371,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -3455,7 +3490,7 @@ call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString local.tee $0 - i32.const 944 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -3469,7 +3504,7 @@ global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString local.tee $1 - i32.const 976 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if @@ -3487,7 +3522,7 @@ global.get $std/symbol/hasInstance call $~lib/symbol/_Symbol#toString local.tee $2 - i32.const 1024 + i32.const 1136 call $~lib/string/String.__eq i32.eqz if @@ -3501,7 +3536,7 @@ global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString local.tee $3 - i32.const 1088 + i32.const 1200 call $~lib/string/String.__eq i32.eqz if @@ -3526,6 +3561,13 @@ call $~lib/rt/stub/__release ) (func $~start + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end call $start:std/symbol ) ) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 7d48814cd2..2c495c2d69 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -3,14 +3,14 @@ (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") - (data (i32.const 1120) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") - (data (i32.const 1152) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") - (data (i32.const 1184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") - (data (i32.const 1232) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") - (data (i32.const 1264) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") - (data (i32.const 1296) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") + (data (i32.const 1036) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") + (data (i32.const 1132) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") + (data (i32.const 1180) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") + (data (i32.const 1228) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") + (data (i32.const 1276) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") + (data (i32.const 1324) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") + (data (i32.const 1372) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) @@ -22,7 +22,7 @@ i32.const 1 global.set $~started end - i32.const 1040 + i32.const 1056 i32.const 0 f64.const 0 f64.const 0 @@ -30,7 +30,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 1088 + i32.const 1104 i32.const 0 f64.const 0 f64.const 0 @@ -38,7 +38,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 1136 + i32.const 1152 i32.const 1 f64.const 1 f64.const 0 @@ -46,7 +46,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 1168 + i32.const 1200 i32.const 2 f64.const 1 f64.const 2 @@ -54,7 +54,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 1200 + i32.const 1248 i32.const 3 f64.const 1 f64.const 2 @@ -62,7 +62,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 1248 + i32.const 1296 i32.const 4 f64.const 1 f64.const 2 @@ -70,7 +70,7 @@ f64.const 4 f64.const 0 call $~lib/builtins/trace - i32.const 1280 + i32.const 1344 i32.const 5 f64.const 1 f64.const 2 @@ -78,7 +78,7 @@ f64.const 4 f64.const 5 call $~lib/builtins/trace - i32.const 1312 + i32.const 1392 i32.const 5 f64.const 1.1 f64.const 2.2 diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index e838b0c982..5d51ce1755 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -3,14 +3,14 @@ (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 112) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") - (data (i32.const 144) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") - (data (i32.const 176) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") - (data (i32.const 224) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") - (data (i32.const 256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") - (data (i32.const 288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") + (data (i32.const 12) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 108) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") + (data (i32.const 156) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") + (data (i32.const 204) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") + (data (i32.const 252) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") + (data (i32.const 300) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") + (data (i32.const 348) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") (table $0 1 funcref) (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) @@ -40,7 +40,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 160 + i32.const 176 i32.const 2 f64.const 1 f64.const 2 @@ -48,7 +48,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 192 + i32.const 224 i32.const 3 f64.const 1 f64.const 2 @@ -56,7 +56,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 240 + i32.const 272 i32.const 4 f64.const 1 f64.const 2 @@ -64,7 +64,7 @@ f64.const 4 f64.const 0 call $~lib/builtins/trace - i32.const 272 + i32.const 320 i32.const 5 f64.const 1 f64.const 2 @@ -72,7 +72,7 @@ f64.const 4 f64.const 5 call $~lib/builtins/trace - i32.const 304 + i32.const 368 i32.const 5 f64.const 1.1 f64.const 2.2 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 26d19565b6..4070d9865a 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -34,7 +34,6 @@ (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) @@ -44,274 +43,362 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1360) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1424) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1488) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\01") - (data (i32.const 1520) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 1552) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1600) "\05\00\00\00\01\00\00\00\00\00\00\00\05") - (data (i32.const 1632) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") - (data (i32.const 1664) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1696) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1728) "\03\00\00\00\01\00\00\00\00\00\00\00\03") - (data (i32.const 1760) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 1792) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1840) "\14\00\00\00\01\00\00\00\00\00\00\00\14") - (data (i32.const 1888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") - (data (i32.const 1936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1984) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2032) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c") - (data (i32.const 2064) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01") - (data (i32.const 2096) "\02") - (data (i32.const 2112) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2160) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2208) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2256) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2304) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2352) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2448) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2496) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2592) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2640) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2688) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\02") - (data (i32.const 2720) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\03") - (data (i32.const 2752) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\04") - (data (i32.const 2784) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\05") - (data (i32.const 2816) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\06") - (data (i32.const 2848) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\07") - (data (i32.const 2880) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\08") - (data (i32.const 2912) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\t") - (data (i32.const 2944) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\n") - (data (i32.const 2976) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\0b") - (data (i32.const 3008) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\0c") - (data (i32.const 3040) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\0d") - (data (i32.const 3072) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\0e") - (data (i32.const 3104) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\0f") - (data (i32.const 3136) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\10") - (data (i32.const 3168) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\11") - (data (i32.const 3200) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\12") - (data (i32.const 3232) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\13") - (data (i32.const 3264) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\14") - (data (i32.const 3296) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\15") - (data (i32.const 3328) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\16") - (data (i32.const 3360) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\17") - (data (i32.const 3392) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\00\18") - (data (i32.const 3424) "\08\00\00\00\01\00\00\00\1d\00\00\00\08\00\00\00\19") - (data (i32.const 3456) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\00\1a") - (data (i32.const 3488) "\08\00\00\00\01\00\00\00\1f\00\00\00\08\00\00\00\1b") - (data (i32.const 3520) "\08\00\00\00\01\00\00\00 \00\00\00\08\00\00\00\1c") - (data (i32.const 3552) "\08\00\00\00\01\00\00\00!\00\00\00\08\00\00\00\1d") - (data (i32.const 3584) "\08\00\00\00\01\00\00\00\"\00\00\00\08\00\00\00\1e") - (data (i32.const 3616) "\08\00\00\00\01\00\00\00#\00\00\00\08\00\00\00\1f") - (data (i32.const 3648) "\08\00\00\00\01\00\00\00$\00\00\00\08\00\00\00 ") - (data (i32.const 3680) "\08\00\00\00\01\00\00\00%\00\00\00\08\00\00\00!") - (data (i32.const 3712) "\08\00\00\00\01\00\00\00&\00\00\00\08\00\00\00\"") - (data (i32.const 3744) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00#") - (data (i32.const 3776) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00$") - (data (i32.const 3808) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00%") - (data (i32.const 3840) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00&") - (data (i32.const 3872) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00\'") - (data (i32.const 3904) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00(") - (data (i32.const 3936) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00)") - (data (i32.const 3968) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00*") - (data (i32.const 4000) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00+") - (data (i32.const 4032) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00,") - (data (i32.const 4064) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00-") - (data (i32.const 4096) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00.") - (data (i32.const 4128) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00/") - (data (i32.const 4160) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\000") - (data (i32.const 4192) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\001") - (data (i32.const 4224) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\002") - (data (i32.const 4256) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\003") - (data (i32.const 4288) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\004") - (data (i32.const 4320) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\005") - (data (i32.const 4352) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\006") - (data (i32.const 4384) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\007") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\008") - (data (i32.const 4448) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\009") - (data (i32.const 4480) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00:") - (data (i32.const 4512) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00;") - (data (i32.const 4544) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00<") - (data (i32.const 4576) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00=") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00>") - (data (i32.const 4640) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00?") - (data (i32.const 4672) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00@") - (data (i32.const 4704) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00A") - (data (i32.const 4736) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00B") - (data (i32.const 4768) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00C") - (data (i32.const 4800) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00D") - (data (i32.const 4832) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00E") - (data (i32.const 4864) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00F") - (data (i32.const 4896) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00G") - (data (i32.const 4928) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00H") - (data (i32.const 4960) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00I") - (data (i32.const 4992) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00J") - (data (i32.const 5024) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00K") - (data (i32.const 5056) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00L") - (data (i32.const 5088) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00M") - (data (i32.const 5120) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00N") - (data (i32.const 5152) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00O") - (data (i32.const 5184) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00P") - (data (i32.const 5216) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00Q") - (data (i32.const 5248) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00R") - (data (i32.const 5280) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00S") - (data (i32.const 5312) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00T") - (data (i32.const 5344) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00U") - (data (i32.const 5376) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00V") - (data (i32.const 5408) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00W") - (data (i32.const 5440) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00X") - (data (i32.const 5472) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00Y") - (data (i32.const 5504) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00Z") - (data (i32.const 5536) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00[") - (data (i32.const 5568) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00\\") - (data (i32.const 5600) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00]") - (data (i32.const 5632) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00^") - (data (i32.const 5664) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00_") - (data (i32.const 5696) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00`") - (data (i32.const 5728) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00a") - (data (i32.const 5760) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00b") - (data (i32.const 5792) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00c") - (data (i32.const 5824) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00d") - (data (i32.const 5856) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00e") - (data (i32.const 5888) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00f") - (data (i32.const 5920) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00g") - (data (i32.const 5952) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00h") - (data (i32.const 5984) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00i") - (data (i32.const 6016) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00j") - (data (i32.const 6048) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00k") - (data (i32.const 6080) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00l") - (data (i32.const 6112) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00m") - (data (i32.const 6144) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00n") - (data (i32.const 6176) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00o") - (data (i32.const 6208) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 6240) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00P\18\00\00P\18\00\00\0c\00\00\00\03") - (data (i32.const 6272) "\08\00\00\00\01\00\00\002\00\00\00\08\00\00\00p") - (data (i32.const 6304) "\08\00\00\00\01\00\00\003\00\00\00\08\00\00\00q") - (data (i32.const 6336) "\08\00\00\00\01\00\00\004\00\00\00\08\00\00\00r") - (data (i32.const 6368) "\08\00\00\00\01\00\00\005\00\00\00\08\00\00\00s") - (data (i32.const 6400) "\08\00\00\00\01\00\00\006\00\00\00\08\00\00\00t") - (data (i32.const 6432) "\08\00\00\00\01\00\00\007\00\00\00\08\00\00\00u") - (data (i32.const 6464) "\08\00\00\00\01\00\00\008\00\00\00\08\00\00\00v") - (data (i32.const 6496) "\08\00\00\00\01\00\00\009\00\00\00\08\00\00\00w") - (data (i32.const 6528) "\08\00\00\00\01\00\00\00:\00\00\00\08\00\00\00x") - (data (i32.const 6560) "\08\00\00\00\01\00\00\00;\00\00\00\08\00\00\00y") - (data (i32.const 6592) "\08\00\00\00\01\00\00\00<\00\00\00\08\00\00\00z") - (data (i32.const 6624) "$\00\00\00\01\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 6688) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\f0\19\00\00\f0\19\00\00$\00\00\00\t") - (data (i32.const 6720) ",\00\00\00\01\00\00\00\00\00\00\00,\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") - (data (i32.const 6784) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00P\1a\00\00P\1a\00\00,\00\00\00\0b") - (data (i32.const 6820) "\01\00\00\00\01") - (data (i32.const 6832) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 6960) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 7024) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 7056) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") - (data (i32.const 7152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 7184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") - (data (i32.const 7232) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 7264) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 7296) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7344) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7376) "\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\00\00\00\10\00\00\00\90!\00\00\90!\00\00\18\00\00\00\03") - (data (i32.const 8656) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\92\91\90") - (data (i32.const 8688) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\e0!\00\00\e0!\00\00\03\00\00\00\03") - (data (i32.const 8720) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03") - (data (i32.const 8752) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 8800) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 8832) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 8864) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 8896) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 8928) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03") - (data (i32.const 8960) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 9008) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9040) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9072) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9104) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9136) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03") - (data (i32.const 9168) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") - (data (i32.const 9232) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9264) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9296) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9328) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff") - (data (i32.const 9360) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03") - (data (i32.const 9408) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 9456) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 9504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 9552) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 9600) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 9648) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03") - (data (i32.const 9696) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 9744) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 9792) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 9840) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 9888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 9936) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10000) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 10048) "(\00\00\00\01\00\00\00\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\06") - (data (i32.const 10112) "(\00\00\00\01\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10176) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02") - (data (i32.const 10212) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10240) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 10304) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10368) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 10416) "(\00\00\00\01\00\00\00\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\06") - (data (i32.const 10480) "(\00\00\00\01\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10544) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02") - (data (i32.const 10580) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10608) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 10672) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 10768) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 10816) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data (i32.const 10912) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11008) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (i32.const 11064) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11104) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11200) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 11296) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 11344) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data (i32.const 11440) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11536) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (i32.const 11592) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11632) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11728) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 11792) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 11840) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") - (data (i32.const 11904) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") - (data (i32.const 11968) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data (i32.const 12032) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12054) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 12128) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 12176) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12198) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") - (data (i32.const 12272) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12294) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") - (data (i32.const 12368) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12390) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data (i32.const 12464) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data (i32.const 12496) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1148) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1276) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1340) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1404) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1468) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1532) "\08\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01") + (data (i32.const 1564) "\05\00\00\00\01") + (data (i32.const 1580) "\05\00\00\00\01\01\01\04\05") + (data (i32.const 1596) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1644) "\05\00\00\00\01") + (data (i32.const 1660) "\05") + (data (i32.const 1676) "\05\00\00\00\01") + (data (i32.const 1692) "\05\00\00\00\01\01") + (data (i32.const 1708) "\05\00\00\00\01") + (data (i32.const 1724) "\05\00\00\00\01\01\00\02\02") + (data (i32.const 1740) "\05\00\00\00\01") + (data (i32.const 1756) "\05\00\00\00\01\01\00\02\02") + (data (i32.const 1772) "\03\00\00\00\01") + (data (i32.const 1788) "\03") + (data (i32.const 1804) "\05\00\00\00\01") + (data (i32.const 1820) "\05\00\00\00\01\00\00\00\02") + (data (i32.const 1836) "\14\00\00\00\01") + (data (i32.const 1852) "\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 1884) "\14\00\00\00\01") + (data (i32.const 1900) "\14") + (data (i32.const 1932) "\14\00\00\00\01") + (data (i32.const 1948) "\14\00\00\00\01\00\00\00\01") + (data (i32.const 1980) "\14\00\00\00\01") + (data (i32.const 1996) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 2028) "\14\00\00\00\01") + (data (i32.const 2044) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 2076) "\0c\00\00\00\01") + (data (i32.const 2092) "\0c") + (data (i32.const 2108) "\14\00\00\00\01") + (data (i32.const 2124) "\14\00\00\00\01") + (data (i32.const 2144) "\02") + (data (i32.const 2156) "\14\00\00\00\01") + (data (i32.const 2172) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2204) "\14\00\00\00\01") + (data (i32.const 2220) "\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 2252) "\14\00\00\00\01") + (data (i32.const 2268) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 2300) "\14\00\00\00\01") + (data (i32.const 2316) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2348) "\14\00\00\00\01") + (data (i32.const 2364) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2396) "\14\00\00\00\01") + (data (i32.const 2412) "\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2444) "\14\00\00\00\01") + (data (i32.const 2460) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 2492) "\14\00\00\00\01") + (data (i32.const 2508) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2540) "\14\00\00\00\01") + (data (i32.const 2556) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2588) "\14\00\00\00\01") + (data (i32.const 2604) "\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2636) "\14\00\00\00\01") + (data (i32.const 2652) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 2684) "\14\00\00\00\01") + (data (i32.const 2700) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 2732) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\02") + (data (i32.const 2764) "\08\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\03") + (data (i32.const 2796) "\08\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\04") + (data (i32.const 2828) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\05") + (data (i32.const 2860) "\08\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\06") + (data (i32.const 2892) "\08\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\07") + (data (i32.const 2924) "\08\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\08") + (data (i32.const 2956) "\08\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\t") + (data (i32.const 2988) "\08\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\n") + (data (i32.const 3020) "\08\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\0b") + (data (i32.const 3052) "\08\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0c") + (data (i32.const 3084) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\0d") + (data (i32.const 3116) "\08\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\0e") + (data (i32.const 3148) "\08\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0f") + (data (i32.const 3180) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10") + (data (i32.const 3212) "\08\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\11") + (data (i32.const 3244) "\08\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12") + (data (i32.const 3276) "\08\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\13") + (data (i32.const 3308) "\08\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\14") + (data (i32.const 3340) "\08\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\15") + (data (i32.const 3372) "\08\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\16") + (data (i32.const 3404) "\08\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\17") + (data (i32.const 3436) "\08\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\18") + (data (i32.const 3468) "\08\00\00\00\01\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\19") + (data (i32.const 3500) "\08\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1a") + (data (i32.const 3532) "\08\00\00\00\01\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1b") + (data (i32.const 3564) "\08\00\00\00\01\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1c") + (data (i32.const 3596) "\08\00\00\00\01\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1d") + (data (i32.const 3628) "\08\00\00\00\01\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1e") + (data (i32.const 3660) "\08\00\00\00\01\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1f") + (data (i32.const 3692) "\08\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\08\00\00\00 ") + (data (i32.const 3724) "\08\00\00\00\01\00\00\00\00\00\00\00%\00\00\00\08\00\00\00!") + (data (i32.const 3756) "\08\00\00\00\01\00\00\00\00\00\00\00&\00\00\00\08\00\00\00\"") + (data (i32.const 3788) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00#") + (data (i32.const 3820) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00$") + (data (i32.const 3852) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00%") + (data (i32.const 3884) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00&") + (data (i32.const 3916) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00\'") + (data (i32.const 3948) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00(") + (data (i32.const 3980) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00)") + (data (i32.const 4012) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00*") + (data (i32.const 4044) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00+") + (data (i32.const 4076) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00,") + (data (i32.const 4108) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00-") + (data (i32.const 4140) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00.") + (data (i32.const 4172) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00/") + (data (i32.const 4204) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\000") + (data (i32.const 4236) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\001") + (data (i32.const 4268) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\002") + (data (i32.const 4300) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\003") + (data (i32.const 4332) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\004") + (data (i32.const 4364) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\005") + (data (i32.const 4396) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\006") + (data (i32.const 4428) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\007") + (data (i32.const 4460) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\008") + (data (i32.const 4492) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\009") + (data (i32.const 4524) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00:") + (data (i32.const 4556) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00;") + (data (i32.const 4588) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00<") + (data (i32.const 4620) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00=") + (data (i32.const 4652) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00>") + (data (i32.const 4684) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00?") + (data (i32.const 4716) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00@") + (data (i32.const 4748) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00A") + (data (i32.const 4780) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00B") + (data (i32.const 4812) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00C") + (data (i32.const 4844) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00D") + (data (i32.const 4876) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00E") + (data (i32.const 4908) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00F") + (data (i32.const 4940) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00G") + (data (i32.const 4972) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00H") + (data (i32.const 5004) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00I") + (data (i32.const 5036) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00J") + (data (i32.const 5068) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00K") + (data (i32.const 5100) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00L") + (data (i32.const 5132) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00M") + (data (i32.const 5164) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00N") + (data (i32.const 5196) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00O") + (data (i32.const 5228) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00P") + (data (i32.const 5260) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00Q") + (data (i32.const 5292) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00R") + (data (i32.const 5324) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00S") + (data (i32.const 5356) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00T") + (data (i32.const 5388) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00U") + (data (i32.const 5420) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00V") + (data (i32.const 5452) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00W") + (data (i32.const 5484) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00X") + (data (i32.const 5516) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00Y") + (data (i32.const 5548) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00Z") + (data (i32.const 5580) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00[") + (data (i32.const 5612) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00\\") + (data (i32.const 5644) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00]") + (data (i32.const 5676) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00^") + (data (i32.const 5708) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00_") + (data (i32.const 5740) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00`") + (data (i32.const 5772) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00a") + (data (i32.const 5804) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00b") + (data (i32.const 5836) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00c") + (data (i32.const 5868) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00d") + (data (i32.const 5900) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00e") + (data (i32.const 5932) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00f") + (data (i32.const 5964) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00g") + (data (i32.const 5996) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00h") + (data (i32.const 6028) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00i") + (data (i32.const 6060) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00j") + (data (i32.const 6092) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00k") + (data (i32.const 6124) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00l") + (data (i32.const 6156) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00m") + (data (i32.const 6188) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00n") + (data (i32.const 6220) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00o") + (data (i32.const 6252) "\0c\00\00\00\01") + (data (i32.const 6268) "\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data (i32.const 6284) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\80\18\00\00\80\18\00\00\0c\00\00\00\03") + (data (i32.const 6332) "\08\00\00\00\01\00\00\00\00\00\00\002\00\00\00\08\00\00\00p") + (data (i32.const 6364) "\08\00\00\00\01\00\00\00\00\00\00\003\00\00\00\08\00\00\00q") + (data (i32.const 6396) "\08\00\00\00\01\00\00\00\00\00\00\004\00\00\00\08\00\00\00r") + (data (i32.const 6428) "\08\00\00\00\01\00\00\00\00\00\00\005\00\00\00\08\00\00\00s") + (data (i32.const 6460) "\08\00\00\00\01\00\00\00\00\00\00\006\00\00\00\08\00\00\00t") + (data (i32.const 6492) "\08\00\00\00\01\00\00\00\00\00\00\007\00\00\00\08\00\00\00u") + (data (i32.const 6524) "\08\00\00\00\01\00\00\00\00\00\00\008\00\00\00\08\00\00\00v") + (data (i32.const 6556) "\08\00\00\00\01\00\00\00\00\00\00\009\00\00\00\08\00\00\00w") + (data (i32.const 6588) "\08\00\00\00\01\00\00\00\00\00\00\00:\00\00\00\08\00\00\00x") + (data (i32.const 6620) "\08\00\00\00\01\00\00\00\00\00\00\00;\00\00\00\08\00\00\00y") + (data (i32.const 6652) "\08\00\00\00\01\00\00\00\00\00\00\00<\00\00\00\08\00\00\00z") + (data (i32.const 6684) "$\00\00\00\01") + (data (i32.const 6700) "$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 6748) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\000\1a\00\000\1a\00\00$\00\00\00\t") + (data (i32.const 6796) ",\00\00\00\01") + (data (i32.const 6812) ",\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") + (data (i32.const 6860) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\a0\1a\00\00\a0\1a\00\00,\00\00\00\0b") + (data (i32.const 6912) "\01\00\00\00\00\00\00\00\01") + (data (i32.const 6940) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 7068) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 7132) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 7164) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 7260) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 7292) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") + (data (i32.const 7340) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 7372) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 7404) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 7452) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 7544) "\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\00\00\00\10\00\00\00p\"\00\00p\"\00\00\18\00\00\00\03") + (data (i32.const 8892) "\03\00\00\00\01") + (data (i32.const 8908) "\03\00\00\00\92\91\90") + (data (i32.const 8924) "\10\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\10\00\00\00\d0\"\00\00\d0\"\00\00\03\00\00\00\03") + (data (i32.const 8972) "\n\00\00\00\01") + (data (i32.const 8988) "\n\00\00\00\01\02\03") + (data (i32.const 9004) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 9052) "\n\00\00\00\01") + (data (i32.const 9068) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 9084) "\n\00\00\00\01") + (data (i32.const 9100) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 9116) "\n\00\00\00\01") + (data (i32.const 9132) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 9148) "\n\00\00\00\01") + (data (i32.const 9164) "\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 9180) "\n\00\00\00\01") + (data (i32.const 9196) "\n\00\00\00\01\02\03") + (data (i32.const 9212) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 9260) "\n\00\00\00\01") + (data (i32.const 9276) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 9292) "\n\00\00\00\01") + (data (i32.const 9308) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 9324) "\n\00\00\00\01") + (data (i32.const 9340) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 9356) "\n\00\00\00\01") + (data (i32.const 9372) "\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 9388) "\n\00\00\00\01") + (data (i32.const 9404) "\n\00\00\00\01\02\03") + (data (i32.const 9420) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data (i32.const 9484) "\n\00\00\00\01") + (data (i32.const 9500) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 9516) "\n\00\00\00\01") + (data (i32.const 9532) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 9548) "\n\00\00\00\01") + (data (i32.const 9564) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 9580) "\n\00\00\00\01") + (data (i32.const 9596) "\n\00\00\00defg\ff\ff\ff") + (data (i32.const 9612) "\14\00\00\00\01") + (data (i32.const 9628) "\14\00\00\00\01\00\02\00\03") + (data (i32.const 9660) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 9708) "\14\00\00\00\01") + (data (i32.const 9724) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 9756) "\14\00\00\00\01") + (data (i32.const 9772) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data (i32.const 9804) "\14\00\00\00\01") + (data (i32.const 9820) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data (i32.const 9852) "\14\00\00\00\01") + (data (i32.const 9868) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 9900) "\14\00\00\00\01") + (data (i32.const 9916) "\14\00\00\00\01\00\02\00\03") + (data (i32.const 9948) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 9996) "\14\00\00\00\01") + (data (i32.const 10012) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 10044) "\14\00\00\00\01") + (data (i32.const 10060) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data (i32.const 10092) "\14\00\00\00\01") + (data (i32.const 10108) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data (i32.const 10140) "\14\00\00\00\01") + (data (i32.const 10156) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 10188) "(\00\00\00\01") + (data (i32.const 10204) "(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 10252) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 10300) "(\00\00\00\01") + (data (i32.const 10316) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 10364) "(\00\00\00\01") + (data (i32.const 10380) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 10428) "(\00\00\00\01") + (data (i32.const 10444) "(\00\00\00\01\00\00\00\02") + (data (i32.const 10468) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 10492) "(\00\00\00\01") + (data (i32.const 10508) "(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data (i32.const 10556) "(\00\00\00\01") + (data (i32.const 10572) "(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 10620) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 10668) "(\00\00\00\01") + (data (i32.const 10684) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 10732) "(\00\00\00\01") + (data (i32.const 10748) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 10796) "(\00\00\00\01") + (data (i32.const 10812) "(\00\00\00\01\00\00\00\02") + (data (i32.const 10836) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 10860) "(\00\00\00\01") + (data (i32.const 10876) "(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data (i32.const 10924) "P\00\00\00\01") + (data (i32.const 10940) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 11036) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 11084) "P\00\00\00\01") + (data (i32.const 11100) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data (i32.const 11196) "P\00\00\00\01") + (data (i32.const 11212) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 11308) "P\00\00\00\01") + (data (i32.const 11324) "P\00\00\00\01\00\00\00\00\00\00\00\02") + (data (i32.const 11368) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 11420) "P\00\00\00\01") + (data (i32.const 11436) "P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11532) "P\00\00\00\01") + (data (i32.const 11548) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 11644) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 11692) "P\00\00\00\01") + (data (i32.const 11708) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data (i32.const 11804) "P\00\00\00\01") + (data (i32.const 11820) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 11916) "P\00\00\00\01") + (data (i32.const 11932) "P\00\00\00\01\00\00\00\00\00\00\00\02") + (data (i32.const 11976) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 12028) "P\00\00\00\01") + (data (i32.const 12044) "P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 12140) "(\00\00\00\01") + (data (i32.const 12156) "(\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 12204) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 12252) "(\00\00\00\01") + (data (i32.const 12268) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data (i32.const 12316) "(\00\00\00\01") + (data (i32.const 12332) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") + (data (i32.const 12380) "(\00\00\00\01") + (data (i32.const 12396) "(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") + (data (i32.const 12444) "P\00\00\00\01") + (data (i32.const 12460) "P") + (data (i32.const 12470) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 12556) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 12604) "P\00\00\00\01") + (data (i32.const 12620) "P") + (data (i32.const 12630) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") + (data (i32.const 12716) "P\00\00\00\01") + (data (i32.const 12732) "P") + (data (i32.const 12742) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") + (data (i32.const 12828) "P\00\00\00\01") + (data (i32.const 12844) "P") + (data (i32.const 12854) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") + (data (i32.const 12940) "\n\00\00\00\01") + (data (i32.const 12956) "\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data (i32.const 12972) "\n\00\00\00\01") + (data (i32.const 12988) "\n\00\00\00\01\ffd\ff\00\00d\n\ff") (table $0 123 funcref) (elem (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) @@ -325,11 +412,11 @@ (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 12524 + i32.const 13004 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -347,8 +434,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 277 + i32.const 1296 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -357,18 +444,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 279 + i32.const 1296 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -410,28 +497,28 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 292 + i32.const 1296 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -502,8 +589,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 205 + i32.const 1296 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -516,14 +603,14 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 207 + i32.const 1296 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -539,14 +626,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -561,7 +648,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -589,8 +676,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 228 + i32.const 1296 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -598,14 +685,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -634,33 +721,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1152 - i32.const 243 + i32.const 1296 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1152 - i32.const 244 + i32.const 1296 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -707,8 +794,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 260 + i32.const 1296 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -726,15 +813,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -772,54 +859,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 + i32.const 1296 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 396 + i32.const 1296 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -835,18 +920,17 @@ i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 408 + i32.const 1296 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -856,23 +940,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -883,116 +968,108 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 13008 + i32.const 0 + i32.store + i32.const 14576 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 13008 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 12528 - local.set $1 - i32.const 12528 - i32.const 0 - i32.store - i32.const 14096 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 12528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 12528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 13008 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 12528 - i32.const 14112 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 12528 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 13008 + i32.const 14580 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 13008 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 1200 - i32.const 1152 + i32.const 1168 + i32.const 1296 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end + i32.const 12 local.get $0 - i32.const 15 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $0 - i32.const 16 + i32.const 4 + i32.sub local.get $0 - i32.const 16 - i32.gt_u + i32.const 12 + i32.le_u select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -1019,7 +1096,7 @@ i32.sub local.get $1 local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u select local.tee $1 @@ -1050,8 +1127,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 338 + i32.const 1296 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1102,8 +1179,8 @@ i32.eqz if i32.const 0 - i32.const 1152 - i32.const 351 + i32.const 1296 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1131,12 +1208,14 @@ i32.load local.set $3 local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1152 - i32.const 365 + i32.const 1296 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1147,7 +1226,7 @@ local.get $2 i32.sub local.tee $4 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 @@ -1159,12 +1238,12 @@ i32.store local.get $2 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.tee $1 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1179,7 +1258,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -1199,149 +1278,160 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 i32.const 1 - global.set $~lib/rt/tlsf/collectLock + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz + i32.lt_s if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and - local.get $4 + local.get $2 i32.lt_u if i32.const 0 - i32.const 1152 - i32.const 520 + i32.const 1296 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 i32.const 0 i32.store offset=4 - local.get $3 local.get $2 + i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add ) @@ -1522,11 +1612,11 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 12524 + i32.const 13004 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -1541,7 +1631,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1558,7 +1648,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1575,7 +1665,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1589,13 +1679,13 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 18 i32.const 57 call $~lib/builtins/abort @@ -1606,7 +1696,7 @@ i32.shl local.tee $3 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 local.get $3 @@ -1639,7 +1729,7 @@ (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 0 @@ -1655,7 +1745,7 @@ (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 0 @@ -1664,7 +1754,7 @@ (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 0 @@ -1673,7 +1763,7 @@ (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 1 @@ -1682,7 +1772,7 @@ (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 1 @@ -1691,7 +1781,7 @@ (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 2 @@ -1700,7 +1790,7 @@ (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 2 @@ -1709,7 +1799,7 @@ (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 3 @@ -1718,7 +1808,7 @@ (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 3 @@ -1727,7 +1817,7 @@ (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 2 @@ -1736,7 +1826,7 @@ (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.get $0 i32.const 3 @@ -1760,7 +1850,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -1772,7 +1862,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -1784,7 +1874,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -1796,7 +1886,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -1808,7 +1898,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -1820,7 +1910,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -1832,7 +1922,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -1844,7 +1934,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -1856,7 +1946,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -1868,7 +1958,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -1882,7 +1972,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -1896,7 +1986,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -1908,7 +1998,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -1922,7 +2012,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -1936,7 +2026,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -1948,7 +2038,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -1962,7 +2052,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -1976,7 +2066,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -1988,7 +2078,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -2002,7 +2092,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -2016,7 +2106,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -2028,7 +2118,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2042,7 +2132,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2056,7 +2146,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -2068,7 +2158,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -2082,7 +2172,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -2096,7 +2186,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -2108,7 +2198,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -2122,7 +2212,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 78 i32.const 3 call $~lib/builtins/abort @@ -2136,7 +2226,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -2148,7 +2238,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -2162,7 +2252,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2176,7 +2266,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2213,8 +2303,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 675 i32.const 64 call $~lib/builtins/abort @@ -2237,8 +2327,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 664 i32.const 64 call $~lib/builtins/abort @@ -2308,7 +2398,7 @@ local.set $1 i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 i32.load @@ -2347,8 +2437,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1315 i32.const 64 call $~lib/builtins/abort @@ -2419,7 +2509,7 @@ local.set $1 i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 i32.load @@ -2538,7 +2628,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -2557,20 +2647,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 1152 - i32.const 585 + i32.const 1296 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -2590,8 +2671,8 @@ ) (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 f64) (local $6 f64) (local $7 i32) (local $8 i32) @@ -2606,9 +2687,8 @@ i32.const 2 i32.shl local.tee $2 - i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $5 + local.tee $4 i32.const 0 local.get $2 call $~lib/memory/memory.fill @@ -2627,7 +2707,7 @@ local.get $2 i32.const 1 i32.and - local.get $5 + local.get $4 local.get $2 i32.const 6 i32.shr_u @@ -2661,7 +2741,7 @@ i32.shl i32.add f64.load - local.set $4 + local.set $5 local.get $0 local.get $3 i32.const 3 @@ -2671,7 +2751,7 @@ local.set $6 i32.const 2 global.set $~argumentsLength - local.get $4 + local.get $5 local.get $6 local.get $7 i32.load @@ -2679,7 +2759,7 @@ i32.const 0 i32.lt_s if - local.get $5 + local.get $4 local.get $3 i32.const 5 i32.shr_u @@ -2701,7 +2781,7 @@ i32.const 3 i32.shl i32.add - local.get $4 + local.get $5 f64.store local.get $0 local.get $2 @@ -2729,7 +2809,7 @@ if local.get $0 f64.load - local.set $4 + local.set $5 local.get $0 local.get $0 local.get $3 @@ -2740,12 +2820,12 @@ f64.load f64.store local.get $1 - local.get $4 + local.get $5 f64.store i32.const 1 local.set $1 loop $while-continue|3 - local.get $5 + local.get $4 local.get $1 i32.const 5 i32.shr_u @@ -2779,7 +2859,7 @@ if local.get $0 f64.load - local.set $4 + local.set $5 local.get $0 local.get $1 i32.const 3 @@ -2789,7 +2869,7 @@ local.set $6 i32.const 2 global.set $~argumentsLength - local.get $4 + local.get $5 local.get $6 local.get $7 i32.load @@ -2797,7 +2877,7 @@ i32.const 0 i32.lt_s if - local.get $5 + local.get $4 local.get $1 i32.const 5 i32.shr_u @@ -2819,7 +2899,7 @@ i32.const 3 i32.shl i32.add - local.get $4 + local.get $5 f64.store local.get $0 local.get $6 @@ -2839,19 +2919,30 @@ br $for-loop|2 end end - call $~lib/rt/tlsf/maybeInitialize - local.get $5 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + local.get $4 + local.tee $1 + i32.const 13004 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + end local.get $0 f64.load offset=8 - local.set $4 + local.set $5 local.get $0 local.get $0 f64.load f64.store offset=8 local.get $0 - local.get $4 + local.get $5 f64.store local.get $7 call $~lib/rt/pure/__release @@ -2976,8 +3067,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -2997,8 +3088,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 291 i32.const 45 call $~lib/builtins/abort @@ -3029,8 +3120,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 280 i32.const 45 call $~lib/builtins/abort @@ -3048,8 +3139,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 35 i32.const 45 call $~lib/builtins/abort @@ -3304,12 +3395,12 @@ end end ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -3318,7 +3409,7 @@ local.set $5 local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $3 if @@ -3348,8 +3439,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 24 i32.const 45 call $~lib/builtins/abort @@ -3402,8 +3493,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1376 - i32.const 1568 + i32.const 1424 + i32.const 1616 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3489,7 +3580,7 @@ local.set $1 i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $4 i32.load @@ -3612,8 +3703,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1376 - i32.const 1568 + i32.const 1424 + i32.const 1616 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -3880,8 +3971,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 163 i32.const 45 call $~lib/builtins/abort @@ -3959,8 +4050,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 419 i32.const 64 call $~lib/builtins/abort @@ -3983,8 +4074,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 547 i32.const 64 call $~lib/builtins/abort @@ -4068,8 +4159,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 803 i32.const 64 call $~lib/builtins/abort @@ -4092,8 +4183,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 931 i32.const 64 call $~lib/builtins/abort @@ -4182,8 +4273,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1059 i32.const 64 call $~lib/builtins/abort @@ -4206,8 +4297,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1187 i32.const 64 call $~lib/builtins/abort @@ -4430,7 +4521,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 3408 + i32.const 3456 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -4441,11 +4532,11 @@ local.set $6 i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $1 @@ -4492,7 +4583,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3408 + i32.const 3456 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array#map (param $0 i32) (result i32) @@ -4506,7 +4597,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 3440 + i32.const 3488 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -4517,11 +4608,11 @@ local.set $6 i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $1 @@ -4568,7 +4659,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3440 + i32.const 3488 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) @@ -4577,8 +4668,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 152 i32.const 45 call $~lib/builtins/abort @@ -4601,7 +4692,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 3472 + i32.const 3520 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -4612,11 +4703,11 @@ local.set $6 i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $1 @@ -4663,7 +4754,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3472 + i32.const 3520 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#map (param $0 i32) (result i32) @@ -4679,7 +4770,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3504 + i32.const 3552 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -4692,14 +4783,14 @@ local.set $6 i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 1 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -4749,7 +4840,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3504 + i32.const 3552 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) @@ -4760,8 +4851,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 408 i32.const 64 call $~lib/builtins/abort @@ -4788,7 +4879,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3536 + i32.const 3584 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -4801,14 +4892,14 @@ local.set $6 i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 1 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -4858,7 +4949,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3536 + i32.const 3584 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) @@ -4869,8 +4960,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 536 i32.const 64 call $~lib/builtins/abort @@ -4897,7 +4988,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3568 + i32.const 3616 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -4910,14 +5001,14 @@ local.set $6 i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 2 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -4967,7 +5058,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3568 + i32.const 3616 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array#map (param $0 i32) (result i32) @@ -4983,7 +5074,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3600 + i32.const 3648 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -4996,14 +5087,14 @@ local.set $6 i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 2 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -5053,7 +5144,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3600 + i32.const 3648 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) @@ -5064,8 +5155,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 792 i32.const 64 call $~lib/builtins/abort @@ -5097,7 +5188,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3632 + i32.const 3680 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -5110,14 +5201,14 @@ local.set $6 i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 3 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -5167,7 +5258,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3632 + i32.const 3680 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) @@ -5178,8 +5269,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 920 i32.const 64 call $~lib/builtins/abort @@ -5206,7 +5297,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3664 + i32.const 3712 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -5219,14 +5310,14 @@ local.set $6 i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 3 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -5276,7 +5367,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3664 + i32.const 3712 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) @@ -5287,8 +5378,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1048 i32.const 64 call $~lib/builtins/abort @@ -5320,7 +5411,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3696 + i32.const 3744 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -5333,14 +5424,14 @@ local.set $6 i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 2 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -5390,7 +5481,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3696 + i32.const 3744 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) @@ -5401,8 +5492,8 @@ i32.shr_u i32.ge_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1176 i32.const 64 call $~lib/builtins/abort @@ -5434,7 +5525,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $1 - i32.const 3728 + i32.const 3776 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -5447,14 +5538,14 @@ local.set $6 i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $0 i32.const 3 i32.shl local.tee $7 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 loop $for-loop|0 local.get $3 @@ -5504,7 +5595,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 3728 + i32.const 3776 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5516,112 +5607,173 @@ i32.const 2 i32.gt_s ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 i32.load - local.tee $5 i32.const -4 i32.and - local.tee $4 - i32.le_u + call $~lib/memory/memory.copy + local.get $1 + i32.const 13004 + i32.ge_u if local.get $0 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return + call $~lib/rt/tlsf/freeBlock end + local.get $2 + ) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + i32.const 1073741804 + i32.gt_u if - local.get $4 - i32.const 16 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end + i32.const 1168 + i32.const 1232 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 + i32.const 20 + i32.sub + local.tee $2 i32.load offset=4 - i32.store offset=4 - local.get $3 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 i32.const 16 - i32.add + i32.sub + local.set $0 local.get $1 i32.const 16 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 12524 - i32.ge_u + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 13004 + i32.lt_u if + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/checkUsedBlock + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $8 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $9 + i32.load + local.tee $10 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $10 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $9 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $8 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $3 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + end end - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 4 + i32.add + local.tee $2 + i32.const 4 + i32.sub + local.tee $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -5637,7 +5789,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 3760 + i32.const 3808 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -5645,11 +5797,11 @@ local.set $0 i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $2 i32.load offset=4 @@ -5693,7 +5845,7 @@ local.get $3 local.get $6 local.get $1 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $0 call $~lib/rt/pure/__retain i32.store @@ -5709,7 +5861,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3760 + i32.const 3808 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> @@ -5746,7 +5898,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -5758,7 +5910,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -5771,7 +5923,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -5784,7 +5936,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -5797,7 +5949,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -5829,7 +5981,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 3792 + i32.const 3840 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -5837,11 +5989,11 @@ local.set $0 i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $2 i32.load offset=4 @@ -5885,7 +6037,7 @@ local.get $3 local.get $6 local.get $1 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $0 call $~lib/rt/pure/__retain i32.store @@ -5901,7 +6053,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3792 + i32.const 3840 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> @@ -5938,7 +6090,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -5950,7 +6102,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -5963,7 +6115,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -5976,7 +6128,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -5989,7 +6141,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -6014,7 +6166,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 3824 + i32.const 3872 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -6022,11 +6174,11 @@ local.set $0 i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $2 i32.load offset=4 @@ -6070,7 +6222,7 @@ local.get $3 local.get $6 local.get $1 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $0 call $~lib/rt/pure/__retain i32.store @@ -6086,7 +6238,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3824 + i32.const 3872 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> @@ -6123,7 +6275,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -6135,7 +6287,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -6148,7 +6300,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -6161,7 +6313,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -6174,7 +6326,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -6208,7 +6360,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 3856 + i32.const 3904 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -6218,13 +6370,13 @@ local.set $0 i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 1 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -6275,7 +6427,7 @@ i32.const 1 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -6291,7 +6443,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 3856 + i32.const 3904 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> @@ -6328,7 +6480,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -6342,7 +6494,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -6355,7 +6507,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -6368,7 +6520,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -6381,7 +6533,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -6413,7 +6565,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 3888 + i32.const 3936 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -6423,13 +6575,13 @@ local.set $0 i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 1 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -6480,7 +6632,7 @@ i32.const 1 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -6496,7 +6648,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 3888 + i32.const 3936 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> @@ -6533,7 +6685,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -6547,7 +6699,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -6560,7 +6712,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -6573,7 +6725,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -6586,7 +6738,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -6616,7 +6768,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 3920 + i32.const 3968 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -6626,13 +6778,13 @@ local.set $0 i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 2 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -6683,7 +6835,7 @@ i32.const 2 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -6699,7 +6851,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 3920 + i32.const 3968 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> @@ -6736,7 +6888,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -6750,7 +6902,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -6763,7 +6915,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -6776,7 +6928,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -6789,7 +6941,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -6819,7 +6971,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 3952 + i32.const 4000 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -6829,13 +6981,13 @@ local.set $0 i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 2 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -6886,7 +7038,7 @@ i32.const 2 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -6902,7 +7054,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 3952 + i32.const 4000 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> @@ -6939,7 +7091,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -6953,7 +7105,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -6966,7 +7118,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -6979,7 +7131,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -6992,7 +7144,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -7022,7 +7174,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 3984 + i32.const 4032 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -7032,13 +7184,13 @@ local.set $0 i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 3 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -7089,7 +7241,7 @@ i32.const 3 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -7105,7 +7257,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 3984 + i32.const 4032 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> @@ -7142,7 +7294,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -7156,7 +7308,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -7169,7 +7321,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -7182,7 +7334,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -7195,7 +7347,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -7225,7 +7377,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 4016 + i32.const 4064 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -7235,13 +7387,13 @@ local.set $0 i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 3 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -7292,7 +7444,7 @@ i32.const 3 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -7308,7 +7460,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 4016 + i32.const 4064 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> @@ -7345,7 +7497,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -7359,7 +7511,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -7372,7 +7524,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -7385,7 +7537,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -7398,7 +7550,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -7428,7 +7580,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 4048 + i32.const 4096 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -7438,13 +7590,13 @@ local.set $0 i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 2 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -7495,7 +7647,7 @@ i32.const 2 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -7511,7 +7663,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 4048 + i32.const 4096 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> @@ -7548,7 +7700,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -7562,7 +7714,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -7575,7 +7727,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -7588,7 +7740,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -7601,7 +7753,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -7631,7 +7783,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $3 - i32.const 4080 + i32.const 4128 call $~lib/rt/pure/__retain local.set $5 local.get $3 @@ -7641,13 +7793,13 @@ local.set $0 i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 i32.const 3 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -7698,7 +7850,7 @@ i32.const 3 i32.shl local.tee $0 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.tee $2 call $~lib/rt/pure/__retain i32.store @@ -7714,7 +7866,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - i32.const 4080 + i32.const 4128 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> @@ -7751,7 +7903,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -7765,7 +7917,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -7778,7 +7930,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -7791,7 +7943,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -7804,7 +7956,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -9871,7 +10023,7 @@ local.get $0 i32.const 255 i32.and - i32.const 6256 + i32.const 6304 local.get $1 call $~lib/array/Array#__get i32.const 255 @@ -9879,7 +10031,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -9890,7 +10042,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -9901,7 +10053,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -9972,7 +10124,7 @@ local.get $0 i32.const 65535 i32.and - i32.const 6256 + i32.const 6304 local.get $1 call $~lib/array/Array#__get i32.const 65535 @@ -9980,7 +10132,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -9991,7 +10143,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -10002,7 +10154,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -10019,14 +10171,14 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 - i32.const 6256 + i32.const 6304 local.get $1 call $~lib/array/Array#__get local.get $0 i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -10037,7 +10189,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -10048,7 +10200,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -10121,14 +10273,14 @@ call $~lib/rt/pure/__retain local.set $2 local.get $0 - i32.const 6256 + i32.const 6304 local.get $1 call $~lib/array/Array#__get i64.extend_i32_s i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -10139,7 +10291,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -10150,7 +10302,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -10223,14 +10375,14 @@ call $~lib/rt/pure/__retain local.set $2 local.get $0 - i32.const 6256 + i32.const 6304 local.get $1 call $~lib/array/Array#__get f32.convert_i32_s f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -10241,7 +10393,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -10252,7 +10404,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -10270,14 +10422,14 @@ call $~lib/rt/pure/__retain local.set $2 local.get $0 - i32.const 6256 + i32.const 6304 local.get $1 call $~lib/array/Array#__get f64.convert_i32_s f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -10288,7 +10440,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -10299,7 +10451,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -10369,7 +10521,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Int8Array#constructor @@ -10388,7 +10540,7 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 24 @@ -10398,7 +10550,7 @@ call $~lib/typedarray/Int8Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 24 @@ -10426,7 +10578,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Int8Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -10440,7 +10592,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -10466,7 +10618,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -10479,7 +10631,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -10492,7 +10644,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -10505,7 +10657,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -10517,7 +10669,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -10614,7 +10766,7 @@ local.set $0 i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -10648,7 +10800,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Uint8Array#constructor @@ -10667,7 +10819,7 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -10675,7 +10827,7 @@ call $~lib/typedarray/Uint8Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -10701,7 +10853,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Uint8Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -10713,7 +10865,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -10738,7 +10890,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -10751,7 +10903,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -10764,7 +10916,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -10777,7 +10929,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -10789,7 +10941,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -10836,7 +10988,7 @@ local.set $0 i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -10870,7 +11022,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -10889,7 +11041,7 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -10897,7 +11049,7 @@ call $~lib/typedarray/Uint8ClampedArray#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -10923,7 +11075,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -10935,7 +11087,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -10960,7 +11112,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -10973,7 +11125,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -10986,7 +11138,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -10999,7 +11151,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -11011,7 +11163,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -11116,7 +11268,7 @@ local.set $0 i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -11154,7 +11306,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Int16Array#constructor @@ -11173,7 +11325,7 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 16 @@ -11183,7 +11335,7 @@ call $~lib/typedarray/Int16Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 16 @@ -11211,7 +11363,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Int16Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -11225,7 +11377,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -11250,7 +11402,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -11263,7 +11415,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -11276,7 +11428,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -11289,7 +11441,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -11301,7 +11453,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -11406,7 +11558,7 @@ local.set $0 i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -11444,7 +11596,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Uint16Array#constructor @@ -11463,7 +11615,7 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -11471,7 +11623,7 @@ call $~lib/typedarray/Uint16Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -11497,7 +11649,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Uint16Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -11509,7 +11661,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -11534,7 +11686,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -11547,7 +11699,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -11560,7 +11712,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -11573,7 +11725,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -11585,7 +11737,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -11657,7 +11809,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Int32Array#constructor @@ -11676,13 +11828,13 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -11706,7 +11858,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Int32Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -11716,7 +11868,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -11742,7 +11894,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -11755,7 +11907,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -11768,7 +11920,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -11781,7 +11933,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -11793,7 +11945,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -11842,7 +11994,7 @@ local.set $0 i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -11880,7 +12032,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Uint32Array#constructor @@ -11899,13 +12051,13 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -11929,7 +12081,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Uint32Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -11939,7 +12091,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -11964,7 +12116,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -11977,7 +12129,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -11990,7 +12142,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -12003,7 +12155,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -12015,7 +12167,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -12120,7 +12272,7 @@ local.set $0 i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -12158,7 +12310,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Int64Array#constructor @@ -12177,14 +12329,14 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -12209,7 +12361,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Int64Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -12220,7 +12372,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -12245,7 +12397,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -12258,7 +12410,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -12271,7 +12423,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -12284,7 +12436,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -12296,7 +12448,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -12345,7 +12497,7 @@ local.set $0 i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -12383,7 +12535,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Uint64Array#constructor @@ -12402,14 +12554,14 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -12434,7 +12586,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Uint64Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -12445,7 +12597,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -12470,7 +12622,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -12483,7 +12635,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -12496,7 +12648,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -12509,7 +12661,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -12521,7 +12673,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -12626,7 +12778,7 @@ local.set $0 i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 i32.load @@ -12664,7 +12816,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Float32Array#constructor @@ -12683,14 +12835,14 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -12715,7 +12867,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Float32Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -12726,7 +12878,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -12751,7 +12903,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -12764,7 +12916,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -12777,7 +12929,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -12790,7 +12942,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -12802,7 +12954,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -12874,7 +13026,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 6716 + i32.const 6780 i32.load local.tee $1 call $~lib/typedarray/Float64Array#constructor @@ -12893,14 +13045,14 @@ if local.get $2 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $3 local.get $0 - i32.const 6704 + i32.const 6768 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -12925,7 +13077,7 @@ local.get $2 local.get $0 call $~lib/typedarray/Float64Array#__get - i32.const 6704 + i32.const 6768 local.get $1 i32.const 1 i32.sub @@ -12936,7 +13088,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -12962,7 +13114,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -12975,7 +13127,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -12988,7 +13140,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -13001,7 +13153,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -13013,7 +13165,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 6704 + i32.const 6768 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -13186,7 +13338,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -13202,7 +13354,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i32.const 24 @@ -13223,7 +13375,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -13237,7 +13389,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -13251,7 +13403,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -13265,7 +13417,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -13279,7 +13431,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -13293,7 +13445,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -13307,7 +13459,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -13321,7 +13473,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -13335,7 +13487,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -13348,7 +13500,7 @@ call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -13363,7 +13515,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -13378,7 +13530,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -13393,7 +13545,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -13407,7 +13559,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -13421,7 +13573,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -13435,7 +13587,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -13449,7 +13601,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -13463,7 +13615,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -13477,7 +13629,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -13495,7 +13647,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -13507,7 +13659,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -13521,7 +13673,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -13535,7 +13687,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -13549,7 +13701,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -13563,7 +13715,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -13577,7 +13729,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -13591,7 +13743,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -13599,7 +13751,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -13611,7 +13763,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -13627,7 +13779,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i32.const 255 @@ -13646,7 +13798,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -13660,7 +13812,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -13674,7 +13826,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -13688,7 +13840,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -13702,7 +13854,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -13716,7 +13868,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -13730,7 +13882,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -13744,7 +13896,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -13758,7 +13910,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -13771,7 +13923,7 @@ call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -13786,7 +13938,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -13801,7 +13953,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -13816,7 +13968,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -13830,7 +13982,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -13844,7 +13996,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -13858,7 +14010,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -13872,7 +14024,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -13886,7 +14038,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -13900,7 +14052,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -13917,7 +14069,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -13929,7 +14081,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -13943,7 +14095,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -13957,7 +14109,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -13971,7 +14123,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -13985,7 +14137,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -13999,7 +14151,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -14013,7 +14165,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -14021,7 +14173,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -14033,7 +14185,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -14049,7 +14201,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i32.const 255 @@ -14068,7 +14220,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -14082,7 +14234,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -14096,7 +14248,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -14110,7 +14262,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -14124,7 +14276,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -14138,7 +14290,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -14152,7 +14304,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -14166,7 +14318,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -14180,7 +14332,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -14193,7 +14345,7 @@ call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -14208,7 +14360,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -14223,7 +14375,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -14238,7 +14390,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -14252,7 +14404,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -14266,7 +14418,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -14280,7 +14432,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -14294,7 +14446,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -14308,7 +14460,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -14322,7 +14474,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -14339,7 +14491,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -14351,7 +14503,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -14365,7 +14517,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -14379,7 +14531,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -14393,7 +14545,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -14407,7 +14559,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -14421,7 +14573,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -14435,7 +14587,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -14443,7 +14595,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -14624,7 +14776,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -14640,7 +14792,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i32.const 16 @@ -14661,7 +14813,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -14675,7 +14827,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -14689,7 +14841,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -14703,7 +14855,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -14717,7 +14869,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -14731,7 +14883,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -14745,7 +14897,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -14759,7 +14911,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -14773,7 +14925,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -14786,7 +14938,7 @@ call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -14801,7 +14953,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -14816,7 +14968,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -14831,7 +14983,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -14845,7 +14997,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -14859,7 +15011,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -14873,7 +15025,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -14887,7 +15039,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -14901,7 +15053,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -14915,7 +15067,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -14932,7 +15084,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -14944,7 +15096,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -14958,7 +15110,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -14972,7 +15124,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -14986,7 +15138,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -15000,7 +15152,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -15014,7 +15166,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -15028,7 +15180,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -15036,7 +15188,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -15048,7 +15200,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -15064,7 +15216,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i32.const 65535 @@ -15083,7 +15235,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -15097,7 +15249,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -15111,7 +15263,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -15125,7 +15277,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -15139,7 +15291,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -15153,7 +15305,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -15167,7 +15319,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -15181,7 +15333,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -15195,7 +15347,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -15208,7 +15360,7 @@ call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -15223,7 +15375,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -15238,7 +15390,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -15253,7 +15405,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -15267,7 +15419,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -15281,7 +15433,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -15295,7 +15447,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -15309,7 +15461,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -15323,7 +15475,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -15337,7 +15489,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -15354,7 +15506,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -15366,7 +15518,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -15380,7 +15532,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -15394,7 +15546,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -15408,7 +15560,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -15422,7 +15574,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -15436,7 +15588,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -15450,7 +15602,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -15458,7 +15610,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -15635,7 +15787,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -15651,7 +15803,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -15668,7 +15820,7 @@ call $~lib/typedarray/Int32Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -15682,7 +15834,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -15696,7 +15848,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -15710,7 +15862,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -15724,7 +15876,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -15738,7 +15890,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -15752,7 +15904,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -15766,7 +15918,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -15780,7 +15932,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -15793,7 +15945,7 @@ call $~lib/typedarray/Int32Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -15808,7 +15960,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -15823,7 +15975,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -15838,7 +15990,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -15852,7 +16004,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -15866,7 +16018,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -15880,7 +16032,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -15894,7 +16046,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -15908,7 +16060,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -15922,7 +16074,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -15940,7 +16092,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -15952,7 +16104,7 @@ call $~lib/typedarray/Int32Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -15966,7 +16118,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -15980,7 +16132,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -15994,7 +16146,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -16008,7 +16160,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -16022,7 +16174,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -16036,7 +16188,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -16044,7 +16196,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -16056,7 +16208,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -16072,7 +16224,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -16089,7 +16241,7 @@ call $~lib/typedarray/Int32Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -16103,7 +16255,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -16117,7 +16269,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -16131,7 +16283,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -16145,7 +16297,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -16159,7 +16311,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -16173,7 +16325,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -16187,7 +16339,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -16201,7 +16353,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -16214,7 +16366,7 @@ call $~lib/typedarray/Int32Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -16229,7 +16381,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -16244,7 +16396,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -16259,7 +16411,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -16273,7 +16425,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -16287,7 +16439,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -16301,7 +16453,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -16315,7 +16467,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -16329,7 +16481,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -16343,7 +16495,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -16360,7 +16512,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -16372,7 +16524,7 @@ call $~lib/typedarray/Int32Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -16386,7 +16538,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -16400,7 +16552,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -16414,7 +16566,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -16428,7 +16580,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -16442,7 +16594,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -16456,7 +16608,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -16464,7 +16616,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -16641,7 +16793,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -16657,7 +16809,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i64.extend_i32_s @@ -16675,7 +16827,7 @@ call $~lib/typedarray/Int64Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -16689,7 +16841,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -16703,7 +16855,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -16717,7 +16869,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -16731,7 +16883,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -16745,7 +16897,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -16759,7 +16911,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -16773,7 +16925,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -16787,7 +16939,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -16800,7 +16952,7 @@ call $~lib/typedarray/Int64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -16815,7 +16967,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -16830,7 +16982,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -16845,7 +16997,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -16859,7 +17011,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -16873,7 +17025,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -16887,7 +17039,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -16901,7 +17053,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -16915,7 +17067,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -16929,7 +17081,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -16946,7 +17098,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -16958,7 +17110,7 @@ call $~lib/typedarray/Int64Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -16972,7 +17124,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -16986,7 +17138,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -17000,7 +17152,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -17014,7 +17166,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -17028,7 +17180,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -17042,7 +17194,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -17050,7 +17202,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -17062,7 +17214,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -17078,7 +17230,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get i64.extend_i32_s @@ -17096,7 +17248,7 @@ call $~lib/typedarray/Int64Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -17110,7 +17262,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -17124,7 +17276,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -17138,7 +17290,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -17152,7 +17304,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -17166,7 +17318,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -17180,7 +17332,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -17194,7 +17346,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -17208,7 +17360,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -17221,7 +17373,7 @@ call $~lib/typedarray/Int64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -17236,7 +17388,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -17251,7 +17403,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -17266,7 +17418,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -17280,7 +17432,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -17294,7 +17446,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -17308,7 +17460,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -17322,7 +17474,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -17336,7 +17488,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -17350,7 +17502,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -17367,7 +17519,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -17379,7 +17531,7 @@ call $~lib/typedarray/Int64Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -17393,7 +17545,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -17407,7 +17559,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -17421,7 +17573,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -17435,7 +17587,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -17449,7 +17601,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -17463,7 +17615,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -17471,7 +17623,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -17648,7 +17800,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -17664,7 +17816,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get f32.convert_i32_s @@ -17682,7 +17834,7 @@ call $~lib/typedarray/Float32Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -17696,7 +17848,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -17710,7 +17862,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -17724,7 +17876,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -17738,7 +17890,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -17752,7 +17904,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -17766,7 +17918,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -17780,7 +17932,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -17794,7 +17946,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -17807,7 +17959,7 @@ call $~lib/typedarray/Float32Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -17822,7 +17974,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -17837,7 +17989,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -17852,7 +18004,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -17866,7 +18018,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -17880,7 +18032,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -17894,7 +18046,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -17908,7 +18060,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -17922,7 +18074,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -17936,7 +18088,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -17953,7 +18105,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -17965,7 +18117,7 @@ call $~lib/typedarray/Float32Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -17979,7 +18131,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -17993,7 +18145,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -18007,7 +18159,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -18021,7 +18173,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -18035,7 +18187,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -18049,7 +18201,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -18057,7 +18209,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -18234,7 +18386,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6812 + i32.const 6892 i32.load local.tee $0 local.set $2 @@ -18250,7 +18402,7 @@ if local.get $0 local.get $1 - i32.const 6800 + i32.const 6880 local.get $1 call $~lib/array/Array#__get f64.convert_i32_s @@ -18268,7 +18420,7 @@ call $~lib/typedarray/Float64Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -18282,7 +18434,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -18296,7 +18448,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -18310,7 +18462,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -18324,7 +18476,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -18338,7 +18490,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -18352,7 +18504,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -18366,7 +18518,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -18380,7 +18532,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -18393,7 +18545,7 @@ call $~lib/typedarray/Float64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -18408,7 +18560,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -18423,7 +18575,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -18438,7 +18590,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -18452,7 +18604,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -18466,7 +18618,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -18480,7 +18632,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -18494,7 +18646,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -18508,7 +18660,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -18522,7 +18674,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -18540,7 +18692,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -18552,7 +18704,7 @@ call $~lib/typedarray/Float64Array#indexOf if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -18566,7 +18718,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -18580,7 +18732,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -18594,7 +18746,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -18608,7 +18760,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -18622,7 +18774,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -18636,7 +18788,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -18644,7 +18796,7 @@ end local.get $3 call $~lib/rt/pure/__release - i32.const 6800 + i32.const 6880 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -18727,7 +18879,7 @@ local.get $0 i32.eqz if - i32.const 7040 + i32.const 7152 return end local.get $0 @@ -18748,7 +18900,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $3 @@ -18764,9 +18916,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -18877,7 +19029,7 @@ local.tee $3 i32.eqz if - i32.const 6832 + i32.const 6928 return end i32.const 0 @@ -18895,7 +19047,7 @@ end local.get $3 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -18912,7 +19064,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -18924,7 +19076,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -18950,7 +19102,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -19030,7 +19182,7 @@ local.get $0 i32.load offset=8 call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -19179,7 +19331,7 @@ local.get $0 i32.eqz if - i32.const 7040 + i32.const 7152 return end local.get $0 @@ -19188,7 +19340,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 local.get $1 @@ -19233,7 +19385,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -19245,7 +19397,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -19271,7 +19423,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -19351,7 +19503,7 @@ local.get $0 i32.load offset=8 call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -19422,7 +19574,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -19434,7 +19586,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -19460,7 +19612,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -19546,7 +19698,7 @@ i32.const 1 i32.shr_u call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -19586,7 +19738,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -19598,7 +19750,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -19624,7 +19776,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -19710,7 +19862,7 @@ i32.const 1 i32.shr_u call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -19763,7 +19915,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -19775,7 +19927,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -19801,7 +19953,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -19887,7 +20039,7 @@ i32.const 2 i32.shr_u call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -19918,7 +20070,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -19930,7 +20082,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -19956,7 +20108,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -20042,7 +20194,7 @@ i32.const 2 i32.shr_u call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) @@ -20190,7 +20342,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -20202,14 +20354,14 @@ if local.get $4 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $5 i32.eqz if block $__inlined_func$~lib/util/number/itoa64 (result i32) - i32.const 7040 + i32.const 7152 local.get $0 i64.load i32.wrap_i64 @@ -20243,7 +20395,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $2 local.get $5 @@ -20257,7 +20409,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $3 local.get $2 @@ -20289,7 +20441,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -20375,7 +20527,7 @@ i32.const 3 i32.shr_u call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) @@ -20424,7 +20576,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -20436,14 +20588,14 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 i32.eqz if block $__inlined_func$~lib/util/number/utoa64 (result i32) - i32.const 7040 + i32.const 7152 local.get $0 i64.load local.tee $5 @@ -20462,7 +20614,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 local.get $1 local.get $2 @@ -20474,7 +20626,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $0 local.get $5 local.get $1 @@ -20500,7 +20652,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -20586,7 +20738,7 @@ i32.const 3 i32.shr_u call $~lib/util/string/joinIntegerArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) @@ -20786,7 +20938,7 @@ local.get $9 i32.const 2 i32.shl - i32.const 8248 + i32.const 8416 i32.add i64.load32_u local.get $11 @@ -20913,7 +21065,7 @@ i32.sub i32.const 2 i32.shl - i32.const 8248 + i32.const 8416 i32.add i64.load32_u i64.mul @@ -21331,14 +21483,14 @@ i32.sub global.set $~lib/util/number/_K local.get $10 - i32.const 7376 + i32.const 7544 i32.add i64.load global.set $~lib/util/number/_frc_pow local.get $4 i32.const 1 i32.shl - i32.const 8072 + i32.const 8240 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow @@ -21504,7 +21656,7 @@ f64.const 0 f64.eq if - i32.const 7248 + i32.const 7360 return end local.get $0 @@ -21517,11 +21669,11 @@ local.get $0 f64.ne if - i32.const 7280 + i32.const 7392 return end - i32.const 7312 - i32.const 7360 + i32.const 7424 + i32.const 7472 local.get $0 f64.const 0 f64.lt @@ -21529,27 +21681,20 @@ call $~lib/rt/pure/__retain return end - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 + i32.const 7488 local.get $0 call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/pure/__new local.tee $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end + i32.const 7488 local.get $1 + call $~lib/memory/memory.copy local.get $2 - call $~lib/string/String#substring - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/pure/__retain ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) @@ -21628,7 +21773,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -21640,7 +21785,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -21667,7 +21812,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -21755,7 +21900,7 @@ i32.const 2 i32.shr_u call $~lib/util/string/joinFloatArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) @@ -21765,7 +21910,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -21777,7 +21922,7 @@ if local.get $3 call $~lib/rt/pure/__release - i32.const 6832 + i32.const 6928 return end local.get $4 @@ -21803,7 +21948,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 @@ -21889,17 +22034,17 @@ i32.const 3 i32.shr_u call $~lib/util/string/joinFloatArray - i32.const 7168 + i32.const 7280 call $~lib/rt/pure/__release ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if - i32.const 1040 - i32.const 1088 + i32.const 1056 + i32.const 1104 i32.const 49 i32.const 43 call $~lib/builtins/abort @@ -21907,7 +22052,7 @@ end local.get $0 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 i32.const 0 local.get $0 @@ -21925,14 +22070,14 @@ local.tee $5 call $~lib/rt/pure/__retain local.tee $3 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $4 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -21950,8 +22095,8 @@ local.get $1 i32.sub else - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -21966,8 +22111,8 @@ local.get $4 i32.gt_s if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -21976,7 +22121,7 @@ end i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $3 call $~lib/rt/pure/__retain @@ -22023,9 +22168,9 @@ (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.set $3 local.get $1 i32.const 0 @@ -22080,7 +22225,7 @@ select local.tee $2 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $3 local.get $0 local.get $1 @@ -22099,7 +22244,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Int8Array#constructor @@ -22113,7 +22258,7 @@ if local.get $2 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i32.const 24 @@ -22146,17 +22291,17 @@ local.tee $6 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $1 local.set $7 i32.const 0 local.get $1 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -22164,7 +22309,7 @@ end i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $0 call $~lib/rt/pure/__retain @@ -22198,7 +22343,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22213,7 +22358,7 @@ end local.get $5 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -22229,7 +22374,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $2 call $~lib/typedarray/Uint8Array#constructor @@ -22243,7 +22388,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -22289,7 +22434,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22304,7 +22449,7 @@ end local.get $5 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -22322,7 +22467,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -22336,7 +22481,7 @@ if local.get $2 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -22367,17 +22512,17 @@ local.tee $6 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $1 local.set $7 i32.const 0 local.get $1 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -22385,7 +22530,7 @@ end i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $1 local.get $0 call $~lib/rt/pure/__retain @@ -22419,7 +22564,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22434,7 +22579,7 @@ end local.get $5 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -22452,7 +22597,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Int16Array#constructor @@ -22466,7 +22611,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i32.const 16 @@ -22500,14 +22645,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -22517,8 +22662,8 @@ i32.const 1 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -22526,7 +22671,7 @@ end i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -22560,7 +22705,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22575,7 +22720,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -22593,7 +22738,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Uint16Array#constructor @@ -22607,7 +22752,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -22639,14 +22784,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -22656,8 +22801,8 @@ i32.const 1 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -22665,7 +22810,7 @@ end i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -22699,7 +22844,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22714,7 +22859,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -22732,7 +22877,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Int32Array#constructor @@ -22746,7 +22891,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -22776,14 +22921,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -22793,8 +22938,8 @@ i32.const 3 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -22802,7 +22947,7 @@ end i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -22836,7 +22981,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22851,7 +22996,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -22869,7 +23014,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Uint32Array#constructor @@ -22883,7 +23028,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -22913,14 +23058,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -22930,8 +23075,8 @@ i32.const 3 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -22939,7 +23084,7 @@ end i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -22973,7 +23118,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -22988,7 +23133,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -23006,7 +23151,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Int64Array#constructor @@ -23020,7 +23165,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -23051,14 +23196,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -23068,8 +23213,8 @@ i32.const 7 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -23077,7 +23222,7 @@ end i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -23111,7 +23256,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -23126,7 +23271,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -23144,7 +23289,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Uint64Array#constructor @@ -23158,7 +23303,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -23189,14 +23334,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -23206,8 +23351,8 @@ i32.const 7 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -23215,7 +23360,7 @@ end i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -23249,7 +23394,7 @@ i64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -23264,7 +23409,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -23282,7 +23427,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Float32Array#constructor @@ -23296,7 +23441,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -23327,14 +23472,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -23344,8 +23489,8 @@ i32.const 3 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -23353,7 +23498,7 @@ end i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -23387,7 +23532,7 @@ f32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -23402,7 +23547,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -23420,7 +23565,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 8444 + i32.const 8620 i32.load local.tee $3 call $~lib/typedarray/Float64Array#constructor @@ -23434,7 +23579,7 @@ if local.get $1 local.get $0 - i32.const 8432 + i32.const 8608 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -23465,14 +23610,14 @@ local.tee $7 call $~lib/rt/pure/__retain local.tee $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 local.tee $5 i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -23482,8 +23627,8 @@ i32.const 7 i32.and if - i32.const 1040 - i32.const 1440 + i32.const 1056 + i32.const 1488 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -23491,7 +23636,7 @@ end i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.tee $2 local.get $0 call $~lib/rt/pure/__retain @@ -23525,7 +23670,7 @@ f64.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -23540,7 +23685,7 @@ end local.get $6 call $~lib/rt/pure/__release - i32.const 8432 + i32.const 8608 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -23558,7 +23703,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -23566,8 +23711,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -23608,7 +23753,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release ) (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) @@ -23630,7 +23775,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -23653,7 +23798,7 @@ local.tee $5 i32.ne if - i32.const 8768 + i32.const 9024 i32.const 3 local.get $2 f64.convert_i32_s @@ -23665,7 +23810,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -23693,7 +23838,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -23703,8 +23848,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -23758,7 +23903,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) @@ -23785,8 +23930,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -23844,7 +23989,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -23854,8 +23999,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -23909,7 +24054,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) @@ -23928,8 +24073,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -23973,8 +24118,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24027,7 +24172,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -24037,8 +24182,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24057,7 +24202,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> @@ -24126,8 +24271,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 8736 - call $~lib/rt/__allocArray + i32.const 8992 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -24137,8 +24282,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 8816 - call $~lib/rt/__allocArray + i32.const 9072 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -24149,8 +24294,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 8848 - call $~lib/rt/__allocArray + i32.const 9104 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -24160,8 +24305,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 8880 - call $~lib/rt/__allocArray + i32.const 9136 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -24179,8 +24324,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 8912 - call $~lib/rt/__allocArray + i32.const 9168 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -24236,7 +24381,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -24257,7 +24402,7 @@ local.tee $5 i32.ne if - i32.const 8976 + i32.const 9232 i32.const 3 local.get $2 f64.convert_i32_s @@ -24269,7 +24414,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -24297,7 +24442,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -24307,8 +24452,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24362,7 +24507,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) @@ -24375,7 +24520,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -24385,8 +24530,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24440,7 +24585,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> @@ -24509,8 +24654,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 8944 - call $~lib/rt/__allocArray + i32.const 9200 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -24520,8 +24665,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9024 - call $~lib/rt/__allocArray + i32.const 9280 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -24532,8 +24677,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9056 - call $~lib/rt/__allocArray + i32.const 9312 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -24543,8 +24688,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9088 - call $~lib/rt/__allocArray + i32.const 9344 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -24562,8 +24707,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9120 - call $~lib/rt/__allocArray + i32.const 9376 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -24596,7 +24741,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -24604,8 +24749,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24659,7 +24804,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release ) (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) @@ -24681,7 +24826,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -24702,7 +24847,7 @@ local.tee $5 i32.ne if - i32.const 9184 + i32.const 9440 i32.const 3 local.get $2 f64.convert_i32_s @@ -24714,7 +24859,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -24742,7 +24887,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -24752,8 +24897,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24811,7 +24956,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) @@ -24833,8 +24978,8 @@ i32.const 0 i32.lt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -24850,8 +24995,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24926,7 +25071,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -24936,8 +25081,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -24995,7 +25140,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) @@ -25017,8 +25162,8 @@ i32.const 0 i32.lt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -25034,8 +25179,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25106,7 +25251,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -25116,8 +25261,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25171,7 +25316,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> @@ -25242,8 +25387,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9152 - call $~lib/rt/__allocArray + i32.const 9408 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -25253,8 +25398,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9248 - call $~lib/rt/__allocArray + i32.const 9504 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -25266,8 +25411,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9280 - call $~lib/rt/__allocArray + i32.const 9536 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -25277,8 +25422,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9312 - call $~lib/rt/__allocArray + i32.const 9568 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -25298,8 +25443,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25328,8 +25473,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9344 - call $~lib/rt/__allocArray + i32.const 9600 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -25361,7 +25506,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -25371,8 +25516,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25415,7 +25560,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) @@ -25448,7 +25593,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -25469,7 +25614,7 @@ local.tee $5 i32.ne if - i32.const 9424 + i32.const 9680 i32.const 3 local.get $2 f64.convert_i32_s @@ -25481,7 +25626,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -25509,7 +25654,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -25521,8 +25666,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25578,7 +25723,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) @@ -25607,8 +25752,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25668,7 +25813,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -25680,8 +25825,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25737,7 +25882,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) @@ -25762,8 +25907,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25829,8 +25974,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25861,7 +26006,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -25873,8 +26018,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -25917,7 +26062,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> @@ -25986,8 +26131,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9376 - call $~lib/rt/__allocArray + i32.const 9632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -25997,8 +26142,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9472 - call $~lib/rt/__allocArray + i32.const 9728 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -26009,8 +26154,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9520 - call $~lib/rt/__allocArray + i32.const 9776 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -26020,8 +26165,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9568 - call $~lib/rt/__allocArray + i32.const 9824 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -26039,8 +26184,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9616 - call $~lib/rt/__allocArray + i32.const 9872 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -26093,7 +26238,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -26114,7 +26259,7 @@ local.tee $5 i32.ne if - i32.const 9712 + i32.const 9968 i32.const 3 local.get $2 f64.convert_i32_s @@ -26126,7 +26271,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -26154,7 +26299,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -26166,8 +26311,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26223,7 +26368,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) @@ -26236,7 +26381,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -26248,8 +26393,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26305,7 +26450,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> @@ -26374,8 +26519,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 9664 - call $~lib/rt/__allocArray + i32.const 9920 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -26385,8 +26530,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 9760 - call $~lib/rt/__allocArray + i32.const 10016 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -26397,8 +26542,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 9808 - call $~lib/rt/__allocArray + i32.const 10064 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -26408,8 +26553,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 9856 - call $~lib/rt/__allocArray + i32.const 10112 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -26427,8 +26572,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 9904 - call $~lib/rt/__allocArray + i32.const 10160 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -26456,7 +26601,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -26466,8 +26611,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26484,7 +26629,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release ) (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) @@ -26508,7 +26653,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -26529,7 +26674,7 @@ local.tee $5 i32.ne if - i32.const 10016 + i32.const 10272 i32.const 3 local.get $2 f64.convert_i32_s @@ -26541,7 +26686,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -26570,7 +26715,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -26582,8 +26727,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26638,7 +26783,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) @@ -26667,8 +26812,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26728,7 +26873,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -26740,8 +26885,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26797,7 +26942,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) @@ -26822,8 +26967,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26893,8 +27038,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -26953,7 +27098,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -26965,8 +27110,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27009,7 +27154,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> @@ -27078,8 +27223,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 9952 - call $~lib/rt/__allocArray + i32.const 10208 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -27089,8 +27234,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10064 - call $~lib/rt/__allocArray + i32.const 10320 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -27101,8 +27246,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10128 - call $~lib/rt/__allocArray + i32.const 10384 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -27112,8 +27257,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10192 - call $~lib/rt/__allocArray + i32.const 10448 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -27131,8 +27276,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10256 - call $~lib/rt/__allocArray + i32.const 10512 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -27176,7 +27321,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -27197,7 +27342,7 @@ local.tee $5 i32.ne if - i32.const 10384 + i32.const 10640 i32.const 3 local.get $2 f64.convert_i32_s @@ -27209,7 +27354,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -27238,7 +27383,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -27250,8 +27395,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27306,7 +27451,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) @@ -27319,7 +27464,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -27331,8 +27476,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27388,7 +27533,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> @@ -27457,8 +27602,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10320 - call $~lib/rt/__allocArray + i32.const 10576 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -27468,8 +27613,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10432 - call $~lib/rt/__allocArray + i32.const 10688 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -27480,8 +27625,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10496 - call $~lib/rt/__allocArray + i32.const 10752 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -27491,8 +27636,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10560 - call $~lib/rt/__allocArray + i32.const 10816 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -27510,8 +27655,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10624 - call $~lib/rt/__allocArray + i32.const 10880 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -27543,7 +27688,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -27553,8 +27698,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27597,7 +27742,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) @@ -27630,7 +27775,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -27651,7 +27796,7 @@ local.tee $5 i64.ne if - i32.const 10784 + i32.const 11056 i32.const 3 local.get $2 f64.convert_i32_s @@ -27663,7 +27808,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -27691,7 +27836,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -27703,8 +27848,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27760,7 +27905,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) @@ -27785,8 +27930,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27819,7 +27964,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -27831,8 +27976,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27887,7 +28032,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) @@ -27912,8 +28057,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -27983,8 +28128,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -28043,7 +28188,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -28055,8 +28200,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -28099,7 +28244,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> @@ -28168,8 +28313,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 10688 - call $~lib/rt/__allocArray + i32.const 10944 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -28179,8 +28324,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 10832 - call $~lib/rt/__allocArray + i32.const 11104 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -28191,8 +28336,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 10928 - call $~lib/rt/__allocArray + i32.const 11216 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -28202,8 +28347,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11024 - call $~lib/rt/__allocArray + i32.const 11328 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -28221,8 +28366,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11120 - call $~lib/rt/__allocArray + i32.const 11440 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -28266,7 +28411,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -28287,7 +28432,7 @@ local.tee $5 i64.ne if - i32.const 11312 + i32.const 11664 i32.const 3 local.get $2 f64.convert_i32_s @@ -28299,7 +28444,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -28327,7 +28472,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -28339,8 +28484,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -28396,7 +28541,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) @@ -28410,7 +28555,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -28422,8 +28567,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -28478,7 +28623,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8640 + i32.const 8864 call $~lib/rt/pure/__release ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> @@ -28547,8 +28692,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11216 - call $~lib/rt/__allocArray + i32.const 11552 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -28558,8 +28703,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11360 - call $~lib/rt/__allocArray + i32.const 11712 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -28570,8 +28715,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11456 - call $~lib/rt/__allocArray + i32.const 11824 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -28581,8 +28726,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11552 - call $~lib/rt/__allocArray + i32.const 11936 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -28600,8 +28745,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11648 - call $~lib/rt/__allocArray + i32.const 12048 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -28654,7 +28799,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -28675,7 +28820,7 @@ local.tee $5 f32.ne if - i32.const 11808 + i32.const 12224 i32.const 3 local.get $2 f64.convert_i32_s @@ -28687,7 +28832,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -28731,8 +28876,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -28809,8 +28954,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -28931,7 +29076,7 @@ call $~lib/rt/pure/__retain local.set $1 block $folding-inner0 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -28978,21 +29123,21 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release local.get $3 i32.const 10 i32.const 2 i32.const 61 - i32.const 11744 - call $~lib/rt/__allocArray + i32.const 12160 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> local.get $3 call $~lib/rt/pure/__retain local.set $0 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=12 @@ -29017,14 +29162,14 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release local.get $3 i32.const 10 i32.const 2 i32.const 61 - i32.const 11856 - call $~lib/rt/__allocArray + i32.const 12272 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -29035,8 +29180,8 @@ i32.const 10 i32.const 2 i32.const 61 - i32.const 11920 - call $~lib/rt/__allocArray + i32.const 12336 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $11 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -29104,7 +29249,7 @@ local.get $3 call $~lib/rt/pure/__retain local.set $1 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -29154,14 +29299,14 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release local.get $3 i32.const 10 i32.const 2 i32.const 61 - i32.const 11984 - call $~lib/rt/__allocArray + i32.const 12400 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -29185,8 +29330,8 @@ call $~lib/rt/pure/__release return end - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -29222,7 +29367,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -29243,7 +29388,7 @@ local.tee $5 f64.ne if - i32.const 12144 + i32.const 12576 i32.const 3 local.get $2 f64.convert_i32_s @@ -29253,7 +29398,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -29298,8 +29443,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -29375,8 +29520,8 @@ i32.shr_u i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -29497,7 +29642,7 @@ call $~lib/rt/pure/__retain local.set $1 block $folding-inner1 - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -29545,14 +29690,14 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 8496 + i32.const 8688 call $~lib/rt/pure/__release local.get $3 i32.const 10 i32.const 3 i32.const 62 - i32.const 12048 - call $~lib/rt/__allocArray + i32.const 12464 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -29561,7 +29706,7 @@ local.get $3 call $~lib/rt/pure/__retain local.set $1 - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -29613,14 +29758,14 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 8560 + i32.const 8768 call $~lib/rt/pure/__release local.get $3 i32.const 10 i32.const 3 i32.const 62 - i32.const 12192 - call $~lib/rt/__allocArray + i32.const 12624 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -29631,8 +29776,8 @@ i32.const 10 i32.const 3 i32.const 62 - i32.const 12288 - call $~lib/rt/__allocArray + i32.const 12736 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -29700,7 +29845,7 @@ local.get $3 call $~lib/rt/pure/__retain local.set $1 - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -29750,14 +29895,14 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 8704 + i32.const 8944 call $~lib/rt/pure/__release local.get $3 i32.const 10 i32.const 3 i32.const 62 - i32.const 12384 - call $~lib/rt/__allocArray + i32.const 12848 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -29781,8 +29926,8 @@ call $~lib/rt/pure/__release return end - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -29813,8 +29958,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -29902,8 +30047,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -29987,8 +30132,8 @@ i32.load offset=8 i32.gt_s if - i32.const 1376 - i32.const 1440 + i32.const 1424 + i32.const 1488 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -30097,7 +30242,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -30107,7 +30252,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -30119,7 +30264,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -30132,7 +30277,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -30145,7 +30290,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -30158,7 +30303,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 100 i32.const 3 call $~lib/builtins/abort @@ -30179,7 +30324,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -30191,7 +30336,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -30203,7 +30348,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -30216,7 +30361,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -30273,7 +30418,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -30285,7 +30430,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -30297,7 +30442,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -30306,9 +30451,9 @@ i32.const 0 global.set $~argumentsLength local.get $1 - i32.const 1504 + i32.const 1552 call $~lib/typedarray/Float64Array#sort - i32.const 1504 + i32.const 1552 call $~lib/rt/pure/__release call $~lib/rt/pure/__release local.get $1 @@ -30346,7 +30491,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -30373,7 +30518,7 @@ call $~lib/typedarray/Uint8ClampedArray#__get if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -30386,7 +30531,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -30399,7 +30544,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -30439,15 +30584,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 1536 - call $~lib/rt/__allocArray + i32.const 1584 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -30463,15 +30608,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 1616 - call $~lib/rt/__allocArray + i32.const 1664 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -30487,15 +30632,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 1648 - call $~lib/rt/__allocArray + i32.const 1696 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -30511,15 +30656,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 1680 - call $~lib/rt/__allocArray + i32.const 1728 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -30535,15 +30680,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 1712 - call $~lib/rt/__allocArray + i32.const 1760 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -30565,7 +30710,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -30577,7 +30722,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -30589,7 +30734,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -30599,15 +30744,15 @@ i32.const 3 i32.const 0 i32.const 15 - i32.const 1744 - call $~lib/rt/__allocArray + i32.const 1792 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -30617,15 +30762,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 1776 - call $~lib/rt/__allocArray + i32.const 1824 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -30681,15 +30826,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1808 - call $~lib/rt/__allocArray + i32.const 1856 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -30705,15 +30850,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1856 - call $~lib/rt/__allocArray + i32.const 1904 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -30729,15 +30874,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1904 - call $~lib/rt/__allocArray + i32.const 1952 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -30753,15 +30898,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1952 - call $~lib/rt/__allocArray + i32.const 2000 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 190 i32.const 3 call $~lib/builtins/abort @@ -30777,15 +30922,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2000 - call $~lib/rt/__allocArray + i32.const 2048 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -30809,7 +30954,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 197 i32.const 3 call $~lib/builtins/abort @@ -30821,7 +30966,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -30833,7 +30978,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -30843,15 +30988,15 @@ i32.const 3 i32.const 2 i32.const 16 - i32.const 2048 - call $~lib/rt/__allocArray + i32.const 2096 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -30861,15 +31006,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2080 - call $~lib/rt/__allocArray + i32.const 2128 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -30930,7 +31075,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -30942,7 +31087,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 223 i32.const 3 call $~lib/builtins/abort @@ -30954,7 +31099,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 224 i32.const 3 call $~lib/builtins/abort @@ -30966,7 +31111,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -30983,7 +31128,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -30995,7 +31140,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -31007,7 +31152,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -31019,7 +31164,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -31036,7 +31181,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -31048,7 +31193,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -31060,7 +31205,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 236 i32.const 3 call $~lib/builtins/abort @@ -31072,7 +31217,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -31122,15 +31267,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2128 - call $~lib/rt/__allocArray + i32.const 2176 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 248 i32.const 3 call $~lib/builtins/abort @@ -31152,15 +31297,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2176 - call $~lib/rt/__allocArray + i32.const 2224 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 250 i32.const 3 call $~lib/builtins/abort @@ -31181,15 +31326,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2224 - call $~lib/rt/__allocArray + i32.const 2272 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 252 i32.const 3 call $~lib/builtins/abort @@ -31210,15 +31355,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2272 - call $~lib/rt/__allocArray + i32.const 2320 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $14 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 254 i32.const 3 call $~lib/builtins/abort @@ -31239,15 +31384,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2320 - call $~lib/rt/__allocArray + i32.const 2368 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $16 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -31268,15 +31413,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2368 - call $~lib/rt/__allocArray + i32.const 2416 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $18 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 258 i32.const 3 call $~lib/builtins/abort @@ -31297,15 +31442,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2416 - call $~lib/rt/__allocArray + i32.const 2464 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $20 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 260 i32.const 3 call $~lib/builtins/abort @@ -31326,15 +31471,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2464 - call $~lib/rt/__allocArray + i32.const 2512 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $22 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 262 i32.const 3 call $~lib/builtins/abort @@ -31355,15 +31500,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2512 - call $~lib/rt/__allocArray + i32.const 2560 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $24 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 264 i32.const 3 call $~lib/builtins/abort @@ -31384,15 +31529,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2560 - call $~lib/rt/__allocArray + i32.const 2608 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $26 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 266 i32.const 3 call $~lib/builtins/abort @@ -31413,15 +31558,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2608 - call $~lib/rt/__allocArray + i32.const 2656 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $28 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 268 i32.const 3 call $~lib/builtins/abort @@ -31443,15 +31588,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 2656 - call $~lib/rt/__allocArray + i32.const 2704 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $29 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -31543,7 +31688,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 282 i32.const 3 call $~lib/builtins/abort @@ -31555,7 +31700,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 283 i32.const 3 call $~lib/builtins/abort @@ -31567,7 +31712,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 284 i32.const 3 call $~lib/builtins/abort @@ -31584,7 +31729,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 287 i32.const 3 call $~lib/builtins/abort @@ -31597,7 +31742,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 288 i32.const 3 call $~lib/builtins/abort @@ -31611,7 +31756,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -31621,7 +31766,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 290 i32.const 3 call $~lib/builtins/abort @@ -31633,7 +31778,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 291 i32.const 3 call $~lib/builtins/abort @@ -31650,7 +31795,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 294 i32.const 3 call $~lib/builtins/abort @@ -31664,7 +31809,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -31674,7 +31819,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 296 i32.const 3 call $~lib/builtins/abort @@ -31686,7 +31831,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 297 i32.const 3 call $~lib/builtins/abort @@ -31701,7 +31846,7 @@ i32.eq if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 300 i32.const 3 call $~lib/builtins/abort @@ -31718,7 +31863,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -31731,7 +31876,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 302 i32.const 3 call $~lib/builtins/abort @@ -31744,7 +31889,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 303 i32.const 3 call $~lib/builtins/abort @@ -31783,7 +31928,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 2704 + i32.const 2752 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -31823,7 +31968,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 2704 + i32.const 2752 call $~lib/rt/pure/__release block $folding-inner18 block $folding-inner0 @@ -31868,7 +32013,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 2736 + i32.const 2784 call $~lib/typedarray/Uint8Array#reduce i32.const 255 i32.and @@ -31896,7 +32041,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 2768 + i32.const 2816 call $~lib/typedarray/Uint8Array#reduce i32.const 255 i32.and @@ -31930,7 +32075,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 2800 + i32.const 2848 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -31974,7 +32119,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 2800 + i32.const 2848 call $~lib/rt/pure/__release local.get $3 i32.const 65535 @@ -32009,7 +32154,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 2832 + i32.const 2880 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -32053,7 +32198,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 2832 + i32.const 2880 call $~lib/rt/pure/__release local.get $3 i32.const 65535 @@ -32082,7 +32227,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 2864 + i32.const 2912 call $~lib/typedarray/Int32Array#reduce i32.const 6 i32.ne @@ -32108,7 +32253,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 2896 + i32.const 2944 call $~lib/typedarray/Int32Array#reduce i32.const 6 i32.ne @@ -32134,7 +32279,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 2928 + i32.const 2976 call $~lib/typedarray/Int64Array#reduce i64.const 6 i64.ne @@ -32160,7 +32305,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 2960 + i32.const 3008 call $~lib/typedarray/Int64Array#reduce i64.const 6 i64.ne @@ -32190,7 +32335,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 2992 + i32.const 3040 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -32234,7 +32379,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 2992 + i32.const 3040 call $~lib/rt/pure/__release local.get $9 f32.const 6 @@ -32265,7 +32410,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 3024 + i32.const 3072 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -32309,7 +32454,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3024 + i32.const 3072 call $~lib/rt/pure/__release local.get $10 f64.const 6 @@ -32340,7 +32485,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 3056 + i32.const 3104 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -32382,7 +32527,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3056 + i32.const 3104 call $~lib/rt/pure/__release local.get $3 i32.const 255 @@ -32411,7 +32556,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 3088 + i32.const 3136 call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 i32.and @@ -32439,7 +32584,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 3120 + i32.const 3168 call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 i32.and @@ -32471,7 +32616,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 3152 + i32.const 3200 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -32517,7 +32662,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3152 + i32.const 3200 call $~lib/rt/pure/__release local.get $3 i32.const 65535 @@ -32550,7 +32695,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 3184 + i32.const 3232 call $~lib/rt/pure/__retain local.set $5 local.get $2 @@ -32596,7 +32741,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3184 + i32.const 3232 call $~lib/rt/pure/__release local.get $3 i32.const 65535 @@ -32626,7 +32771,7 @@ call $~lib/typedarray/Int32Array#__set block $folding-inner1 local.get $0 - i32.const 3216 + i32.const 3264 call $~lib/typedarray/Int32Array#reduceRight i32.const 6 i32.ne @@ -32652,7 +32797,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 3248 + i32.const 3296 call $~lib/typedarray/Int32Array#reduceRight i32.const 6 i32.ne @@ -32678,7 +32823,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 3280 + i32.const 3328 call $~lib/typedarray/Int64Array#reduceRight i64.const 6 i64.ne @@ -32704,7 +32849,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 3312 + i32.const 3360 call $~lib/typedarray/Int64Array#reduceRight i64.const 6 i64.ne @@ -32734,7 +32879,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 3344 + i32.const 3392 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -32780,7 +32925,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3344 + i32.const 3392 call $~lib/rt/pure/__release local.get $9 f32.const 6 @@ -32811,7 +32956,7 @@ local.get $1 call $~lib/rt/pure/__retain local.set $2 - i32.const 3376 + i32.const 3424 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -32857,7 +33002,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 3376 + i32.const 3424 call $~lib/rt/pure/__release local.get $10 f64.const 6 @@ -33357,12 +33502,12 @@ i32.const 6 call $~lib/typedarray/Int8Array#__set local.get $0 - i32.const 4112 + i32.const 4160 call $~lib/typedarray/Int8Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4144 + i32.const 4192 call $~lib/typedarray/Int8Array#some br_if $folding-inner8 local.get $1 @@ -33386,12 +33531,12 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 4176 + i32.const 4224 call $~lib/typedarray/Uint8Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4208 + i32.const 4256 call $~lib/typedarray/Uint8Array#some br_if $folding-inner8 local.get $1 @@ -33415,12 +33560,12 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 4240 + i32.const 4288 call $~lib/typedarray/Uint8Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4272 + i32.const 4320 call $~lib/typedarray/Uint8Array#some br_if $folding-inner8 local.get $1 @@ -33444,12 +33589,12 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $0 - i32.const 4304 + i32.const 4352 call $~lib/typedarray/Int16Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4336 + i32.const 4384 call $~lib/typedarray/Int16Array#some br_if $folding-inner8 local.get $1 @@ -33473,12 +33618,12 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.const 4368 + i32.const 4416 call $~lib/typedarray/Uint16Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4400 + i32.const 4448 call $~lib/typedarray/Uint16Array#some br_if $folding-inner8 local.get $1 @@ -33502,12 +33647,12 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 4432 + i32.const 4480 call $~lib/typedarray/Int32Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4464 + i32.const 4512 call $~lib/typedarray/Int32Array#some br_if $folding-inner8 local.get $1 @@ -33531,12 +33676,12 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 4496 + i32.const 4544 call $~lib/typedarray/Int32Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4528 + i32.const 4576 call $~lib/typedarray/Int32Array#some br_if $folding-inner8 local.get $1 @@ -33560,12 +33705,12 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 4560 + i32.const 4608 call $~lib/typedarray/Int64Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4592 + i32.const 4640 call $~lib/typedarray/Int64Array#some br_if $folding-inner8 local.get $1 @@ -33589,12 +33734,12 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 4624 + i32.const 4672 call $~lib/typedarray/Int64Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4656 + i32.const 4704 call $~lib/typedarray/Int64Array#some br_if $folding-inner8 local.get $1 @@ -33618,12 +33763,12 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $0 - i32.const 4688 + i32.const 4736 call $~lib/typedarray/Float32Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4720 + i32.const 4768 call $~lib/typedarray/Float32Array#some br_if $folding-inner8 local.get $1 @@ -33647,12 +33792,12 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $0 - i32.const 4752 + i32.const 4800 call $~lib/typedarray/Float64Array#some i32.eqz br_if $folding-inner7 local.get $0 - i32.const 4784 + i32.const 4832 call $~lib/typedarray/Float64Array#some br_if $folding-inner8 local.get $1 @@ -33676,13 +33821,13 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $0 - i32.const 4816 + i32.const 4864 call $~lib/typedarray/Int8Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 4848 + i32.const 4896 call $~lib/typedarray/Int8Array#findIndex i32.const -1 i32.ne @@ -33708,13 +33853,13 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 4880 + i32.const 4928 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 4912 + i32.const 4960 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne @@ -33740,13 +33885,13 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 4944 + i32.const 4992 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 4976 + i32.const 5024 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne @@ -33772,13 +33917,13 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $0 - i32.const 5008 + i32.const 5056 call $~lib/typedarray/Int16Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5040 + i32.const 5088 call $~lib/typedarray/Int16Array#findIndex i32.const -1 i32.ne @@ -33804,13 +33949,13 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.const 5072 + i32.const 5120 call $~lib/typedarray/Uint16Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5104 + i32.const 5152 call $~lib/typedarray/Uint16Array#findIndex i32.const -1 i32.ne @@ -33836,13 +33981,13 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 5136 + i32.const 5184 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5168 + i32.const 5216 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne @@ -33868,13 +34013,13 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 5200 + i32.const 5248 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5232 + i32.const 5280 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne @@ -33900,13 +34045,13 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 5264 + i32.const 5312 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5296 + i32.const 5344 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne @@ -33932,13 +34077,13 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 5328 + i32.const 5376 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5360 + i32.const 5408 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne @@ -33964,13 +34109,13 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $0 - i32.const 5392 + i32.const 5440 call $~lib/typedarray/Float32Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5424 + i32.const 5472 call $~lib/typedarray/Float32Array#findIndex i32.const -1 i32.ne @@ -33996,13 +34141,13 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $0 - i32.const 5456 + i32.const 5504 call $~lib/typedarray/Float64Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 local.get $0 - i32.const 5488 + i32.const 5536 call $~lib/typedarray/Float64Array#findIndex i32.const -1 i32.ne @@ -34028,12 +34173,12 @@ i32.const 6 call $~lib/typedarray/Int8Array#__set local.get $0 - i32.const 5520 + i32.const 5568 call $~lib/typedarray/Int8Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5552 + i32.const 5600 call $~lib/typedarray/Int8Array#every br_if $folding-inner12 local.get $1 @@ -34057,12 +34202,12 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 5584 + i32.const 5632 call $~lib/typedarray/Uint8Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5616 + i32.const 5664 call $~lib/typedarray/Uint8Array#every br_if $folding-inner12 local.get $1 @@ -34086,12 +34231,12 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 5648 + i32.const 5696 call $~lib/typedarray/Uint8Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5680 + i32.const 5728 call $~lib/typedarray/Uint8Array#every br_if $folding-inner12 local.get $1 @@ -34115,12 +34260,12 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $0 - i32.const 5712 + i32.const 5760 call $~lib/typedarray/Int16Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5744 + i32.const 5792 call $~lib/typedarray/Int16Array#every br_if $folding-inner12 local.get $1 @@ -34144,12 +34289,12 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.const 5776 + i32.const 5824 call $~lib/typedarray/Uint16Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5808 + i32.const 5856 call $~lib/typedarray/Uint16Array#every br_if $folding-inner12 local.get $1 @@ -34173,12 +34318,12 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 5840 + i32.const 5888 call $~lib/typedarray/Int32Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5872 + i32.const 5920 call $~lib/typedarray/Int32Array#every br_if $folding-inner12 local.get $1 @@ -34202,12 +34347,12 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 5904 + i32.const 5952 call $~lib/typedarray/Int32Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 5936 + i32.const 5984 call $~lib/typedarray/Int32Array#every br_if $folding-inner12 local.get $1 @@ -34231,12 +34376,12 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 5968 + i32.const 6016 call $~lib/typedarray/Int64Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 6000 + i32.const 6048 call $~lib/typedarray/Int64Array#every br_if $folding-inner12 local.get $1 @@ -34260,12 +34405,12 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 6032 + i32.const 6080 call $~lib/typedarray/Int64Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 6064 + i32.const 6112 call $~lib/typedarray/Int64Array#every br_if $folding-inner12 local.get $1 @@ -34289,12 +34434,12 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $0 - i32.const 6096 + i32.const 6144 call $~lib/typedarray/Float32Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 6128 + i32.const 6176 call $~lib/typedarray/Float32Array#every br_if $folding-inner12 local.get $1 @@ -34318,12 +34463,12 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $0 - i32.const 6160 + i32.const 6208 call $~lib/typedarray/Float64Array#every i32.eqz br_if $folding-inner11 local.get $0 - i32.const 6192 + i32.const 6240 call $~lib/typedarray/Float64Array#every br_if $folding-inner12 local.get $1 @@ -34340,7 +34485,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i32.const 24 @@ -34350,7 +34495,7 @@ call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i32.const 24 @@ -34360,7 +34505,7 @@ call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i32.const 24 @@ -34373,7 +34518,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 6288 + i32.const 6352 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -34409,7 +34554,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 6288 + i32.const 6352 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34429,7 +34574,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i32.const 255 @@ -34437,7 +34582,7 @@ call $~lib/typedarray/Uint8Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i32.const 255 @@ -34445,14 +34590,14 @@ call $~lib/typedarray/Uint8Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 6320 + i32.const 6384 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34472,7 +34617,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i32.const 255 @@ -34480,7 +34625,7 @@ call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i32.const 255 @@ -34488,14 +34633,14 @@ call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 6352 + i32.const 6416 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34515,7 +34660,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i32.const 16 @@ -34525,7 +34670,7 @@ call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i32.const 16 @@ -34535,7 +34680,7 @@ call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i32.const 16 @@ -34548,7 +34693,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 6384 + i32.const 6448 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -34588,7 +34733,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 6384 + i32.const 6448 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34608,7 +34753,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i32.const 65535 @@ -34616,7 +34761,7 @@ call $~lib/typedarray/Uint16Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i32.const 65535 @@ -34624,7 +34769,7 @@ call $~lib/typedarray/Uint16Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i32.const 65535 @@ -34635,7 +34780,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 6416 + i32.const 6480 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -34675,7 +34820,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 6416 + i32.const 6480 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34695,24 +34840,24 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 6448 + i32.const 6512 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34732,24 +34877,24 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 6480 + i32.const 6544 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34769,27 +34914,27 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 6512 + i32.const 6576 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34809,27 +34954,27 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 6544 + i32.const 6608 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34849,21 +34994,21 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get f32.convert_i32_s @@ -34873,7 +35018,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 6576 + i32.const 6640 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -34913,7 +35058,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 6576 + i32.const 6640 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 @@ -34933,21 +35078,21 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 6256 + i32.const 6304 i32.const 0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 1 - i32.const 6256 + i32.const 6304 i32.const 1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 2 - i32.const 6256 + i32.const 6304 i32.const 2 call $~lib/array/Array#__get f64.convert_i32_s @@ -34957,7 +35102,7 @@ local.get $0 call $~lib/rt/pure/__retain local.set $2 - i32.const 6608 + i32.const 6672 call $~lib/rt/pure/__retain local.set $4 local.get $2 @@ -34997,7 +35142,7 @@ call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - i32.const 6608 + i32.const 6672 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 @@ -35043,7 +35188,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -35112,7 +35257,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -35132,7 +35277,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -35201,7 +35346,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -35238,14 +35383,14 @@ local.get $0 call $~lib/typedarray/Int8Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Int8Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35284,7 +35429,7 @@ local.get $0 call $~lib/typedarray/Uint8Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 @@ -35292,7 +35437,7 @@ call $~lib/typedarray/Uint8Array#join local.tee $3 local.get $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35330,7 +35475,7 @@ local.get $0 call $~lib/typedarray/Uint8Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 @@ -35338,7 +35483,7 @@ call $~lib/typedarray/Uint8Array#join local.tee $3 local.get $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35376,14 +35521,14 @@ local.get $0 call $~lib/typedarray/Int16Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Int16Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35422,14 +35567,14 @@ local.get $0 call $~lib/typedarray/Uint16Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Uint16Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35468,14 +35613,14 @@ local.get $0 call $~lib/typedarray/Int32Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Int32Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35514,14 +35659,14 @@ local.get $0 call $~lib/typedarray/Uint32Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Uint32Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35560,14 +35705,14 @@ local.get $0 call $~lib/typedarray/Int64Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Int64Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35606,14 +35751,14 @@ local.get $0 call $~lib/typedarray/Uint64Array#join local.tee $2 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 local.get $0 call $~lib/typedarray/Uint64Array#join local.tee $3 - i32.const 7200 + i32.const 7312 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -35652,14 +35797,14 @@ local.get $0 call $~lib/typedarray/Float32Array#join local.tee $2 - i32.const 8304 + i32.const 8480 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 local.get $0 call $~lib/typedarray/Float32Array#join local.tee $3 - i32.const 8304 + i32.const 8480 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 @@ -35698,14 +35843,14 @@ local.get $0 call $~lib/typedarray/Float64Array#join local.tee $2 - i32.const 8304 + i32.const 8480 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 local.get $0 call $~lib/typedarray/Float64Array#join local.tee $3 - i32.const 8304 + i32.const 8480 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 @@ -35729,7 +35874,7 @@ i32.load offset=8 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 691 i32.const 3 call $~lib/builtins/abort @@ -35752,7 +35897,7 @@ i32.load offset=8 if i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 695 i32.const 3 call $~lib/builtins/abort @@ -35843,8 +35988,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 12480 - call $~lib/rt/__allocArray + i32.const 12960 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -35895,8 +36040,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 12512 - call $~lib/rt/__allocArray + i32.const 12992 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -35921,112 +36066,112 @@ br $folding-inner3 end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 626 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 627 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 629 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1312 + i32.const 1360 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -36050,7 +36195,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -36066,13 +36211,13 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 @@ -36083,12 +36228,12 @@ unreachable end local.get $0 - i32.load offset=20 + i32.load offset=24 call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $0 - i32.load offset=16 + i32.load offset=20 call $~lib/rt/pure/__visit end local.get $2 @@ -36096,7 +36241,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -36111,7 +36256,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1232 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -36130,13 +36275,13 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) local.get $0 - i32.const 12524 + i32.const 13004 i32.lt_u if return end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index db7d0a8c7a..811c25579b 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -39,7 +39,6 @@ (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) @@ -49,262 +48,263 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 352) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 416) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 480) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 512) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 544) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 592) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 624) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 656) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 688) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 720) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\00\00") - (data (i32.const 752) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 784) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 832) "\14\00\00\00\01\00\00\00\00\00\00\00\14\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 880) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 928) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 976) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1056) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 1104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1152) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1200) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1248) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1296) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1344) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1392) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1488) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1536) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1584) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1632) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1680) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 1712) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 1744) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 1776) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 1808) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 1840) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 1872) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (data (i32.const 1904) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 1936) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") - (data (i32.const 1968) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") - (data (i32.const 2000) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") - (data (i32.const 2032) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") - (data (i32.const 2064) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") - (data (i32.const 2096) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 2128) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 2160) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") - (data (i32.const 2192) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00") - (data (i32.const 2224) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00") - (data (i32.const 2256) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00") - (data (i32.const 2288) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00") - (data (i32.const 2320) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00") - (data (i32.const 2352) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00") - (data (i32.const 2384) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00") - (data (i32.const 2416) "\08\00\00\00\01\00\00\00\1d\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00") - (data (i32.const 2448) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00") - (data (i32.const 2480) "\08\00\00\00\01\00\00\00\1f\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00") - (data (i32.const 2512) "\08\00\00\00\01\00\00\00 \00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00") - (data (i32.const 2544) "\08\00\00\00\01\00\00\00!\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00") - (data (i32.const 2576) "\08\00\00\00\01\00\00\00\"\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00") - (data (i32.const 2608) "\08\00\00\00\01\00\00\00#\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00") - (data (i32.const 2640) "\08\00\00\00\01\00\00\00$\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") - (data (i32.const 2672) "\08\00\00\00\01\00\00\00%\00\00\00\08\00\00\00!\00\00\00\00\00\00\00") - (data (i32.const 2704) "\08\00\00\00\01\00\00\00&\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00") - (data (i32.const 2736) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00#\00\00\00\00\00\00\00") - (data (i32.const 2768) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00$\00\00\00\00\00\00\00") - (data (i32.const 2800) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00%\00\00\00\00\00\00\00") - (data (i32.const 2832) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00&\00\00\00\00\00\00\00") - (data (i32.const 2864) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00") - (data (i32.const 2896) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00(\00\00\00\00\00\00\00") - (data (i32.const 2928) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00)\00\00\00\00\00\00\00") - (data (i32.const 2960) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00*\00\00\00\00\00\00\00") - (data (i32.const 2992) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00+\00\00\00\00\00\00\00") - (data (i32.const 3024) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00,\00\00\00\00\00\00\00") - (data (i32.const 3056) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00-\00\00\00\00\00\00\00") - (data (i32.const 3088) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00.\00\00\00\00\00\00\00") - (data (i32.const 3120) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00/\00\00\00\00\00\00\00") - (data (i32.const 3152) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\000\00\00\00\00\00\00\00") - (data (i32.const 3184) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\001\00\00\00\00\00\00\00") - (data (i32.const 3216) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\002\00\00\00\00\00\00\00") - (data (i32.const 3248) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\003\00\00\00\00\00\00\00") - (data (i32.const 3280) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\004\00\00\00\00\00\00\00") - (data (i32.const 3312) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\005\00\00\00\00\00\00\00") - (data (i32.const 3344) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\006\00\00\00\00\00\00\00") - (data (i32.const 3376) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\007\00\00\00\00\00\00\00") - (data (i32.const 3408) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\008\00\00\00\00\00\00\00") - (data (i32.const 3440) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\009\00\00\00\00\00\00\00") - (data (i32.const 3472) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00:\00\00\00\00\00\00\00") - (data (i32.const 3504) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00;\00\00\00\00\00\00\00") - (data (i32.const 3536) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00<\00\00\00\00\00\00\00") - (data (i32.const 3568) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00=\00\00\00\00\00\00\00") - (data (i32.const 3600) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00>\00\00\00\00\00\00\00") - (data (i32.const 3632) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00?\00\00\00\00\00\00\00") - (data (i32.const 3664) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00@\00\00\00\00\00\00\00") - (data (i32.const 3696) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00A\00\00\00\00\00\00\00") - (data (i32.const 3728) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00B\00\00\00\00\00\00\00") - (data (i32.const 3760) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00C\00\00\00\00\00\00\00") - (data (i32.const 3792) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00D\00\00\00\00\00\00\00") - (data (i32.const 3824) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00E\00\00\00\00\00\00\00") - (data (i32.const 3856) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00F\00\00\00\00\00\00\00") - (data (i32.const 3888) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00G\00\00\00\00\00\00\00") - (data (i32.const 3920) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00H\00\00\00\00\00\00\00") - (data (i32.const 3952) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00I\00\00\00\00\00\00\00") - (data (i32.const 3984) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00J\00\00\00\00\00\00\00") - (data (i32.const 4016) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00K\00\00\00\00\00\00\00") - (data (i32.const 4048) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00L\00\00\00\00\00\00\00") - (data (i32.const 4080) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00M\00\00\00\00\00\00\00") - (data (i32.const 4112) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00N\00\00\00\00\00\00\00") - (data (i32.const 4144) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00O\00\00\00\00\00\00\00") - (data (i32.const 4176) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00P\00\00\00\00\00\00\00") - (data (i32.const 4208) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00") - (data (i32.const 4240) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00R\00\00\00\00\00\00\00") - (data (i32.const 4272) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00S\00\00\00\00\00\00\00") - (data (i32.const 4304) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00T\00\00\00\00\00\00\00") - (data (i32.const 4336) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00U\00\00\00\00\00\00\00") - (data (i32.const 4368) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00V\00\00\00\00\00\00\00") - (data (i32.const 4400) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00W\00\00\00\00\00\00\00") - (data (i32.const 4432) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00X\00\00\00\00\00\00\00") - (data (i32.const 4464) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00") - (data (i32.const 4496) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00") - (data (i32.const 4528) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00[\00\00\00\00\00\00\00") - (data (i32.const 4560) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00") - (data (i32.const 4592) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00]\00\00\00\00\00\00\00") - (data (i32.const 4624) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00^\00\00\00\00\00\00\00") - (data (i32.const 4656) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00_\00\00\00\00\00\00\00") - (data (i32.const 4688) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00`\00\00\00\00\00\00\00") - (data (i32.const 4720) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00a\00\00\00\00\00\00\00") - (data (i32.const 4752) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00b\00\00\00\00\00\00\00") - (data (i32.const 4784) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00c\00\00\00\00\00\00\00") - (data (i32.const 4816) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00d\00\00\00\00\00\00\00") - (data (i32.const 4848) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00e\00\00\00\00\00\00\00") - (data (i32.const 4880) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00f\00\00\00\00\00\00\00") - (data (i32.const 4912) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00g\00\00\00\00\00\00\00") - (data (i32.const 4944) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00h\00\00\00\00\00\00\00") - (data (i32.const 4976) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00i\00\00\00\00\00\00\00") - (data (i32.const 5008) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00j\00\00\00\00\00\00\00") - (data (i32.const 5040) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00k\00\00\00\00\00\00\00") - (data (i32.const 5072) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00l\00\00\00\00\00\00\00") - (data (i32.const 5104) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00m\00\00\00\00\00\00\00") - (data (i32.const 5136) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00n\00\00\00\00\00\00\00") - (data (i32.const 5168) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00o\00\00\00\00\00\00\00") - (data (i32.const 5200) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 5232) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00`\14\00\00`\14\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 5264) "\08\00\00\00\01\00\00\002\00\00\00\08\00\00\00p\00\00\00\00\00\00\00") - (data (i32.const 5296) "\08\00\00\00\01\00\00\003\00\00\00\08\00\00\00q\00\00\00\00\00\00\00") - (data (i32.const 5328) "\08\00\00\00\01\00\00\004\00\00\00\08\00\00\00r\00\00\00\00\00\00\00") - (data (i32.const 5360) "\08\00\00\00\01\00\00\005\00\00\00\08\00\00\00s\00\00\00\00\00\00\00") - (data (i32.const 5392) "\08\00\00\00\01\00\00\006\00\00\00\08\00\00\00t\00\00\00\00\00\00\00") - (data (i32.const 5424) "\08\00\00\00\01\00\00\007\00\00\00\08\00\00\00u\00\00\00\00\00\00\00") - (data (i32.const 5456) "\08\00\00\00\01\00\00\008\00\00\00\08\00\00\00v\00\00\00\00\00\00\00") - (data (i32.const 5488) "\08\00\00\00\01\00\00\009\00\00\00\08\00\00\00w\00\00\00\00\00\00\00") - (data (i32.const 5520) "\08\00\00\00\01\00\00\00:\00\00\00\08\00\00\00x\00\00\00\00\00\00\00") - (data (i32.const 5552) "\08\00\00\00\01\00\00\00;\00\00\00\08\00\00\00y\00\00\00\00\00\00\00") - (data (i32.const 5584) "\08\00\00\00\01\00\00\00<\00\00\00\08\00\00\00z\00\00\00\00\00\00\00") - (data (i32.const 5616) "$\00\00\00\01\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 5680) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\00\16\00\00\00\16\00\00$\00\00\00\t\00\00\00") - (data (i32.const 5712) ",\00\00\00\01\00\00\00\00\00\00\00,\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") - (data (i32.const 5776) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00`\16\00\00`\16\00\00,\00\00\00\0b\00\00\00") - (data (i32.const 5808) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 5824) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 5952) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 6016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 6036) "0\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") - (data (i32.const 6448) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 7488) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") - (data (i32.const 7584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 7616) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00") - (data (i32.const 7664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 7696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 7728) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 7776) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 7808) "\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\00\00\00\10\00\00\00@#\00\00@#\00\00\18\00\00\00\03\00\00\00") - (data (i32.const 9088) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\92\91\90") - (data (i32.const 9120) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\90#\00\00\90#\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 9152) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") - (data (i32.const 9184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 9232) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") - (data (i32.const 9264) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") - (data (i32.const 9296) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") - (data (i32.const 9328) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9360) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") - (data (i32.const 9392) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 9440) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") - (data (i32.const 9472) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") - (data (i32.const 9504) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") - (data (i32.const 9536) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9568) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") - (data (i32.const 9600) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00") - (data (i32.const 9664) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") - (data (i32.const 9696) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") - (data (i32.const 9728) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") - (data (i32.const 9760) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00") - (data (i32.const 9792) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9840) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00") - (data (i32.const 9888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00") - (data (i32.const 9936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 9984) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 10032) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 10080) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10128) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00") - (data (i32.const 10176) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00") - (data (i32.const 10224) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 10272) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 10320) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 10368) "(\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10432) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00") - (data (i32.const 10480) "(\00\00\00\01\00\00\00\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\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10544) "(\00\00\00\01\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 10608) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 10672) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 10736) "(\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10800) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00") - (data (i32.const 10848) "(\00\00\00\01\00\00\00\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\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10912) "(\00\00\00\01\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 10976) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 11040) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 11104) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11200) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00") - (data (i32.const 11248) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11344) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11440) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11536) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11632) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11728) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00") - (data (i32.const 11776) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11872) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11968) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12064) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 12160) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\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 12224) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00") - (data (i32.const 12272) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12336) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00") - (data (i32.const 12400) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data (i32.const 12464) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12560) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00") - (data (i32.const 12608) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\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 12704) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00") - (data (i32.const 12800) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data (i32.const 12896) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00") - (data (i32.const 12928) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00") + (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 124) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 252) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 316) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 380) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 444) "$\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 508) "\08\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 540) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 572) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 620) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") + (data (i32.const 652) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 684) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 716) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 748) "\03\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\00\00\00") + (data (i32.const 780) "\05\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") + (data (i32.const 812) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 860) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\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 908) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 956) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 1004) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 1052) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1084) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") + (data (i32.const 1132) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1180) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1228) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1276) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1324) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1372) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1420) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1468) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1516) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1564) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1612) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1660) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1708) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 1740) "\08\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") + (data (i32.const 1772) "\08\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 1804) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") + (data (i32.const 1836) "\08\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") + (data (i32.const 1868) "\08\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") + (data (i32.const 1900) "\08\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 1932) "\08\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 1964) "\08\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") + (data (i32.const 1996) "\08\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") + (data (i32.const 2028) "\08\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") + (data (i32.const 2060) "\08\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") + (data (i32.const 2092) "\08\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") + (data (i32.const 2124) "\08\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") + (data (i32.const 2156) "\08\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 2188) "\08\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") + (data (i32.const 2220) "\08\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00") + (data (i32.const 2252) "\08\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00") + (data (i32.const 2284) "\08\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00") + (data (i32.const 2316) "\08\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00") + (data (i32.const 2348) "\08\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00") + (data (i32.const 2380) "\08\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00") + (data (i32.const 2412) "\08\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00") + (data (i32.const 2444) "\08\00\00\00\01\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00") + (data (i32.const 2476) "\08\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00") + (data (i32.const 2508) "\08\00\00\00\01\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00") + (data (i32.const 2540) "\08\00\00\00\01\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00") + (data (i32.const 2572) "\08\00\00\00\01\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00") + (data (i32.const 2604) "\08\00\00\00\01\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00") + (data (i32.const 2636) "\08\00\00\00\01\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00") + (data (i32.const 2668) "\08\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") + (data (i32.const 2700) "\08\00\00\00\01\00\00\00\00\00\00\00%\00\00\00\08\00\00\00!\00\00\00\00\00\00\00") + (data (i32.const 2732) "\08\00\00\00\01\00\00\00\00\00\00\00&\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00") + (data (i32.const 2764) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00#\00\00\00\00\00\00\00") + (data (i32.const 2796) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00$\00\00\00\00\00\00\00") + (data (i32.const 2828) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00%\00\00\00\00\00\00\00") + (data (i32.const 2860) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00&\00\00\00\00\00\00\00") + (data (i32.const 2892) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00") + (data (i32.const 2924) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00(\00\00\00\00\00\00\00") + (data (i32.const 2956) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00)\00\00\00\00\00\00\00") + (data (i32.const 2988) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00*\00\00\00\00\00\00\00") + (data (i32.const 3020) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00+\00\00\00\00\00\00\00") + (data (i32.const 3052) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00,\00\00\00\00\00\00\00") + (data (i32.const 3084) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00-\00\00\00\00\00\00\00") + (data (i32.const 3116) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00.\00\00\00\00\00\00\00") + (data (i32.const 3148) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00/\00\00\00\00\00\00\00") + (data (i32.const 3180) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\000\00\00\00\00\00\00\00") + (data (i32.const 3212) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\001\00\00\00\00\00\00\00") + (data (i32.const 3244) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\002\00\00\00\00\00\00\00") + (data (i32.const 3276) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\003\00\00\00\00\00\00\00") + (data (i32.const 3308) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\004\00\00\00\00\00\00\00") + (data (i32.const 3340) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\005\00\00\00\00\00\00\00") + (data (i32.const 3372) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\006\00\00\00\00\00\00\00") + (data (i32.const 3404) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\007\00\00\00\00\00\00\00") + (data (i32.const 3436) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\008\00\00\00\00\00\00\00") + (data (i32.const 3468) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\009\00\00\00\00\00\00\00") + (data (i32.const 3500) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00:\00\00\00\00\00\00\00") + (data (i32.const 3532) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00;\00\00\00\00\00\00\00") + (data (i32.const 3564) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00<\00\00\00\00\00\00\00") + (data (i32.const 3596) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00=\00\00\00\00\00\00\00") + (data (i32.const 3628) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00>\00\00\00\00\00\00\00") + (data (i32.const 3660) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00?\00\00\00\00\00\00\00") + (data (i32.const 3692) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00@\00\00\00\00\00\00\00") + (data (i32.const 3724) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00A\00\00\00\00\00\00\00") + (data (i32.const 3756) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00B\00\00\00\00\00\00\00") + (data (i32.const 3788) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00C\00\00\00\00\00\00\00") + (data (i32.const 3820) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00D\00\00\00\00\00\00\00") + (data (i32.const 3852) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00E\00\00\00\00\00\00\00") + (data (i32.const 3884) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00F\00\00\00\00\00\00\00") + (data (i32.const 3916) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00G\00\00\00\00\00\00\00") + (data (i32.const 3948) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00H\00\00\00\00\00\00\00") + (data (i32.const 3980) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00I\00\00\00\00\00\00\00") + (data (i32.const 4012) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00J\00\00\00\00\00\00\00") + (data (i32.const 4044) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00K\00\00\00\00\00\00\00") + (data (i32.const 4076) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00L\00\00\00\00\00\00\00") + (data (i32.const 4108) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00M\00\00\00\00\00\00\00") + (data (i32.const 4140) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00N\00\00\00\00\00\00\00") + (data (i32.const 4172) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00O\00\00\00\00\00\00\00") + (data (i32.const 4204) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00P\00\00\00\00\00\00\00") + (data (i32.const 4236) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00") + (data (i32.const 4268) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00R\00\00\00\00\00\00\00") + (data (i32.const 4300) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00S\00\00\00\00\00\00\00") + (data (i32.const 4332) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00T\00\00\00\00\00\00\00") + (data (i32.const 4364) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00U\00\00\00\00\00\00\00") + (data (i32.const 4396) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00V\00\00\00\00\00\00\00") + (data (i32.const 4428) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00W\00\00\00\00\00\00\00") + (data (i32.const 4460) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00X\00\00\00\00\00\00\00") + (data (i32.const 4492) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00") + (data (i32.const 4524) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00") + (data (i32.const 4556) "\08\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00[\00\00\00\00\00\00\00") + (data (i32.const 4588) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00") + (data (i32.const 4620) "\08\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00]\00\00\00\00\00\00\00") + (data (i32.const 4652) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00^\00\00\00\00\00\00\00") + (data (i32.const 4684) "\08\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00_\00\00\00\00\00\00\00") + (data (i32.const 4716) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00`\00\00\00\00\00\00\00") + (data (i32.const 4748) "\08\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00a\00\00\00\00\00\00\00") + (data (i32.const 4780) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00b\00\00\00\00\00\00\00") + (data (i32.const 4812) "\08\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00c\00\00\00\00\00\00\00") + (data (i32.const 4844) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00d\00\00\00\00\00\00\00") + (data (i32.const 4876) "\08\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00e\00\00\00\00\00\00\00") + (data (i32.const 4908) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00f\00\00\00\00\00\00\00") + (data (i32.const 4940) "\08\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00g\00\00\00\00\00\00\00") + (data (i32.const 4972) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00h\00\00\00\00\00\00\00") + (data (i32.const 5004) "\08\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00i\00\00\00\00\00\00\00") + (data (i32.const 5036) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00j\00\00\00\00\00\00\00") + (data (i32.const 5068) "\08\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00k\00\00\00\00\00\00\00") + (data (i32.const 5100) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00l\00\00\00\00\00\00\00") + (data (i32.const 5132) "\08\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00m\00\00\00\00\00\00\00") + (data (i32.const 5164) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00n\00\00\00\00\00\00\00") + (data (i32.const 5196) "\08\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00o\00\00\00\00\00\00\00") + (data (i32.const 5228) "\0c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data (i32.const 5260) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\80\14\00\00\80\14\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 5308) "\08\00\00\00\01\00\00\00\00\00\00\002\00\00\00\08\00\00\00p\00\00\00\00\00\00\00") + (data (i32.const 5340) "\08\00\00\00\01\00\00\00\00\00\00\003\00\00\00\08\00\00\00q\00\00\00\00\00\00\00") + (data (i32.const 5372) "\08\00\00\00\01\00\00\00\00\00\00\004\00\00\00\08\00\00\00r\00\00\00\00\00\00\00") + (data (i32.const 5404) "\08\00\00\00\01\00\00\00\00\00\00\005\00\00\00\08\00\00\00s\00\00\00\00\00\00\00") + (data (i32.const 5436) "\08\00\00\00\01\00\00\00\00\00\00\006\00\00\00\08\00\00\00t\00\00\00\00\00\00\00") + (data (i32.const 5468) "\08\00\00\00\01\00\00\00\00\00\00\007\00\00\00\08\00\00\00u\00\00\00\00\00\00\00") + (data (i32.const 5500) "\08\00\00\00\01\00\00\00\00\00\00\008\00\00\00\08\00\00\00v\00\00\00\00\00\00\00") + (data (i32.const 5532) "\08\00\00\00\01\00\00\00\00\00\00\009\00\00\00\08\00\00\00w\00\00\00\00\00\00\00") + (data (i32.const 5564) "\08\00\00\00\01\00\00\00\00\00\00\00:\00\00\00\08\00\00\00x\00\00\00\00\00\00\00") + (data (i32.const 5596) "\08\00\00\00\01\00\00\00\00\00\00\00;\00\00\00\08\00\00\00y\00\00\00\00\00\00\00") + (data (i32.const 5628) "\08\00\00\00\01\00\00\00\00\00\00\00<\00\00\00\08\00\00\00z\00\00\00\00\00\00\00") + (data (i32.const 5660) "$\00\00\00\01\00\00\00\00\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 5724) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\000\16\00\000\16\00\00$\00\00\00\t\00\00\00") + (data (i32.const 5772) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00,\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") + (data (i32.const 5836) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\a0\16\00\00\a0\16\00\00,\00\00\00\0b\00\00\00") + (data (i32.const 5884) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 5916) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") + (data (i32.const 6044) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") + (data (i32.const 6108) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 6132) "0\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") + (data (i32.const 6540) "\00\04\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") + (data (i32.const 7596) "H\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\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\00") + (data (i32.const 7692) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 7724) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00") + (data (i32.const 7772) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") + (data (i32.const 7804) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") + (data (i32.const 7836) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 7884) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 7920) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 7976) "\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\00\00\00\10\00\00\00 $\00\00 $\00\00\18\00\00\00\03\00\00\00") + (data (i32.const 9324) "\03\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\92\91\90") + (data (i32.const 9356) "\10\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\10\00\00\00\80$\00\00\80$\00\00\03\00\00\00\03\00\00\00") + (data (i32.const 9404) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") + (data (i32.const 9436) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 9484) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") + (data (i32.const 9516) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") + (data (i32.const 9548) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") + (data (i32.const 9580) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 9612) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") + (data (i32.const 9644) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 9692) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") + (data (i32.const 9724) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") + (data (i32.const 9756) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") + (data (i32.const 9788) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 9820) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") + (data (i32.const 9852) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00") + (data (i32.const 9916) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") + (data (i32.const 9948) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") + (data (i32.const 9980) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") + (data (i32.const 10012) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00") + (data (i32.const 10044) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10092) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00") + (data (i32.const 10140) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00") + (data (i32.const 10188) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00") + (data (i32.const 10236) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00") + (data (i32.const 10284) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 10332) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10380) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00") + (data (i32.const 10428) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00") + (data (i32.const 10476) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00") + (data (i32.const 10524) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00") + (data (i32.const 10572) "\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 10620) "(\00\00\00\01\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10684) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00") + (data (i32.const 10732) "(\00\00\00\01\00\00\00\00\00\00\00\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\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10796) "(\00\00\00\01\00\00\00\00\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 10860) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 10924) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data (i32.const 10988) "(\00\00\00\01\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11052) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00") + (data (i32.const 11100) "(\00\00\00\01\00\00\00\00\00\00\00\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\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11164) "(\00\00\00\01\00\00\00\00\00\00\00\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\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 11228) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") + (data (i32.const 11292) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data (i32.const 11356) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11468) "\14\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00") + (data (i32.const 11516) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11628) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11740) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11852) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11964) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12076) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00") + (data (i32.const 12124) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12236) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12348) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12460) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 12572) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\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 12636) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00") + (data (i32.const 12684) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12748) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00") + (data (i32.const 12812) "(\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") + (data (i32.const 12876) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12988) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00") + (data (i32.const 13036) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\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 13148) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00") + (data (i32.const 13260) "P\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") + (data (i32.const 13372) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00") + (data (i32.const 13404) "\n\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00") (table $0 123 funcref) (elem (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -320,16 +320,14 @@ (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues i32 (i32.const 5248)) - (global $std/typedarray/testArrayReverseValues i32 (i32.const 5696)) - (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 5792)) + (global $std/typedarray/forEachValues i32 (i32.const 5280)) + (global $std/typedarray/testArrayReverseValues i32 (i32.const 5744)) + (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 5856)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -337,12 +335,12 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $std/typedarray/testArrayWrapValues i32 (i32.const 8864)) - (global $std/typedarray/setSource1 (mut i32) (i32.const 8928)) - (global $std/typedarray/setSource2 (mut i32) (i32.const 8992)) - (global $std/typedarray/setSource3 (mut i32) (i32.const 9072)) - (global $std/typedarray/setSource7 (mut i32) (i32.const 9136)) - (global $~lib/heap/__heap_base i32 (i32.const 12956)) + (global $std/typedarray/testArrayWrapValues i32 (i32.const 9040)) + (global $std/typedarray/setSource1 (mut i32) (i32.const 9120)) + (global $std/typedarray/setSource2 (mut i32) (i32.const 9200)) + (global $std/typedarray/setSource3 (mut i32) (i32.const 9296)) + (global $std/typedarray/setSource7 (mut i32) (i32.const 9376)) + (global $~lib/heap/__heap_base i32 (i32.const 13436)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) @@ -351,7 +349,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -378,8 +376,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 277 + i32.const 272 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -393,11 +391,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -405,8 +403,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 279 + i32.const 272 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -459,29 +457,29 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 292 + i32.const 272 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -591,8 +589,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 205 + i32.const 272 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -608,8 +606,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 207 + i32.const 272 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -617,7 +615,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -639,7 +637,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -649,7 +647,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -666,7 +664,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -703,8 +701,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 228 + i32.const 272 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -714,7 +712,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -724,7 +722,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -756,11 +754,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -768,8 +766,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 243 + i32.const 272 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -777,7 +775,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -786,8 +784,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 244 + i32.const 272 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -845,8 +843,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 260 + i32.const 272 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -870,15 +868,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -947,31 +945,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 + i32.const 272 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -985,14 +985,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 396 + i32.const 272 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -1024,8 +1024,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 408 + i32.const 272 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -1036,10 +1036,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -1047,9 +1047,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -1065,15 +1065,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -1092,7 +1092,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -1105,127 +1105,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1233,49 +1252,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 192 i32.const 144 + i32.const 272 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1298,7 +1292,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1352,8 +1346,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 338 + i32.const 272 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1417,8 +1411,8 @@ i32.eqz if i32.const 0 - i32.const 144 - i32.const 351 + i32.const 272 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1474,7 +1468,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1492,11 +1486,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1560,14 +1554,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 144 - i32.const 365 + i32.const 272 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1581,8 +1577,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1594,14 +1590,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1620,7 +1616,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1632,7 +1628,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1649,136 +1645,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 272 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 520 + i32.const 272 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 144 + i32.const 208 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -2016,7 +1993,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2039,7 +2016,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -2052,7 +2029,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -2068,7 +2045,7 @@ if i32.const 12 i32.const 2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2082,7 +2059,7 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1073741808 + i32.const 1073741820 local.get $2 i32.shr_u i32.gt_u @@ -2099,7 +2076,7 @@ i32.shl local.tee $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 i32.const 0 @@ -2136,7 +2113,7 @@ if i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2164,7 +2141,7 @@ if i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2185,7 +2162,7 @@ if i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2206,7 +2183,7 @@ if i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2229,7 +2206,7 @@ if i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2252,7 +2229,7 @@ if i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2275,7 +2252,7 @@ if i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2298,7 +2275,7 @@ if i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2321,7 +2298,7 @@ if i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2344,7 +2321,7 @@ if i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2367,7 +2344,7 @@ if i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -2407,7 +2384,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -2422,7 +2399,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -2435,7 +2412,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -2452,7 +2429,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -2467,7 +2444,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -2480,7 +2457,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -2497,7 +2474,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -2512,7 +2489,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -2525,7 +2502,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -2542,7 +2519,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -2557,7 +2534,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -2570,7 +2547,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -2587,7 +2564,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -2602,7 +2579,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -2615,7 +2592,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -2632,7 +2609,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -2647,7 +2624,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -2660,7 +2637,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -2677,7 +2654,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -2692,7 +2669,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -2705,7 +2682,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -2722,7 +2699,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2737,7 +2714,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2750,7 +2727,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -2767,7 +2744,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -2782,7 +2759,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -2795,7 +2772,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -2812,7 +2789,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -2827,7 +2804,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 78 i32.const 3 call $~lib/builtins/abort @@ -2840,7 +2817,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -2857,7 +2834,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -2872,7 +2849,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2885,7 +2862,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2922,8 +2899,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 675 i32.const 64 call $~lib/builtins/abort @@ -2946,8 +2923,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 664 i32.const 64 call $~lib/builtins/abort @@ -3039,7 +3016,7 @@ local.set $3 i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -3076,8 +3053,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1315 i32.const 64 call $~lib/builtins/abort @@ -3170,7 +3147,7 @@ local.set $3 i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -3298,7 +3275,7 @@ (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 16 + i32.const 4 i32.sub local.set $1 local.get $0 @@ -3321,22 +3298,11 @@ else i32.const 0 end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 144 - i32.const 585 + i32.const 272 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3344,12 +3310,9 @@ local.get $1 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -3360,7 +3323,18 @@ call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock @@ -3388,7 +3362,6 @@ i32.shl local.set $3 local.get $3 - i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -3821,7 +3794,7 @@ i32.const 4 i32.eq drop - i32.const 496 + i32.const 528 call $~lib/rt/pure/__retain br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -3844,8 +3817,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -3865,8 +3838,8 @@ i32.load offset=8 i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 291 i32.const 45 call $~lib/builtins/abort @@ -3897,8 +3870,8 @@ i32.load offset=8 i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 280 i32.const 45 call $~lib/builtins/abort @@ -3916,8 +3889,8 @@ i32.load offset=8 i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 35 i32.const 45 call $~lib/builtins/abort @@ -5276,11 +5249,11 @@ end end ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $2 if @@ -5291,13 +5264,13 @@ end local.get $3 ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $4 local.get $0 local.get $1 @@ -5306,7 +5279,7 @@ local.get $5 i32.const 0 local.get $3 - call $~lib/rt/__allocBuffer + call $~lib/rt/__newBuffer local.set $6 local.get $4 local.get $6 @@ -5333,8 +5306,8 @@ i32.load offset=8 i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 24 i32.const 45 call $~lib/builtins/abort @@ -5362,8 +5335,8 @@ i32.load offset=12 i32.ge_u if - i32.const 368 - i32.const 560 + i32.const 400 + i32.const 592 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -5525,7 +5498,7 @@ local.set $3 i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -5675,8 +5648,8 @@ i32.load offset=12 i32.ge_u if - i32.const 368 - i32.const 560 + i32.const 400 + i32.const 592 i32.const 104 i32.const 42 call $~lib/builtins/abort @@ -6109,7 +6082,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 1696 + i32.const 1728 i32.const 0 call $~lib/typedarray/Int8Array#reduce local.set $2 @@ -6123,7 +6096,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6140,8 +6113,8 @@ i32.load offset=8 i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 163 i32.const 45 call $~lib/builtins/abort @@ -6258,7 +6231,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 1728 + i32.const 1760 i32.const 0 call $~lib/typedarray/Uint8Array#reduce local.set $2 @@ -6270,7 +6243,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6385,7 +6358,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 1760 + i32.const 1792 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#reduce local.set $2 @@ -6397,7 +6370,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6416,8 +6389,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 419 i32.const 64 call $~lib/builtins/abort @@ -6536,7 +6509,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 1792 + i32.const 1824 i32.const 0 call $~lib/typedarray/Int16Array#reduce local.set $2 @@ -6550,7 +6523,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6569,8 +6542,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 547 i32.const 64 call $~lib/builtins/abort @@ -6689,7 +6662,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 1824 + i32.const 1856 i32.const 0 call $~lib/typedarray/Uint16Array#reduce local.set $2 @@ -6701,7 +6674,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6816,7 +6789,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 1856 + i32.const 1888 i32.const 0 call $~lib/typedarray/Int32Array#reduce local.set $2 @@ -6826,7 +6799,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6845,8 +6818,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 803 i32.const 64 call $~lib/builtins/abort @@ -6965,7 +6938,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 1888 + i32.const 1920 i32.const 0 call $~lib/typedarray/Uint32Array#reduce local.set $2 @@ -6975,7 +6948,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -6994,8 +6967,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 931 i32.const 64 call $~lib/builtins/abort @@ -7115,7 +7088,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 1920 + i32.const 1952 i64.const 0 call $~lib/typedarray/Int64Array#reduce local.set $2 @@ -7125,7 +7098,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -7144,8 +7117,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1059 i32.const 64 call $~lib/builtins/abort @@ -7265,7 +7238,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 1952 + i32.const 1984 i64.const 0 call $~lib/typedarray/Uint64Array#reduce local.set $2 @@ -7275,7 +7248,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -7294,8 +7267,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1187 i32.const 64 call $~lib/builtins/abort @@ -7415,7 +7388,7 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 1984 + i32.const 2016 f32.const 0 call $~lib/typedarray/Float32Array#reduce local.set $2 @@ -7425,7 +7398,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -7541,7 +7514,7 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 2016 + i32.const 2048 f64.const 0 call $~lib/typedarray/Float64Array#reduce local.set $2 @@ -7551,7 +7524,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -7665,7 +7638,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 2048 + i32.const 2080 i32.const 0 call $~lib/typedarray/Int8Array#reduceRight local.set $2 @@ -7679,7 +7652,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -7793,7 +7766,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 2080 + i32.const 2112 i32.const 0 call $~lib/typedarray/Uint8Array#reduceRight local.set $2 @@ -7805,7 +7778,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -7919,7 +7892,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 2112 + i32.const 2144 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#reduceRight local.set $2 @@ -7931,7 +7904,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8045,7 +8018,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 2144 + i32.const 2176 i32.const 0 call $~lib/typedarray/Int16Array#reduceRight local.set $2 @@ -8059,7 +8032,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8173,7 +8146,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 2176 + i32.const 2208 i32.const 0 call $~lib/typedarray/Uint16Array#reduceRight local.set $2 @@ -8185,7 +8158,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8299,7 +8272,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 2208 + i32.const 2240 i32.const 0 call $~lib/typedarray/Int32Array#reduceRight local.set $2 @@ -8309,7 +8282,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8423,7 +8396,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 2240 + i32.const 2272 i32.const 0 call $~lib/typedarray/Uint32Array#reduceRight local.set $2 @@ -8433,7 +8406,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8548,7 +8521,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 2272 + i32.const 2304 i64.const 0 call $~lib/typedarray/Int64Array#reduceRight local.set $2 @@ -8558,7 +8531,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8673,7 +8646,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 2304 + i32.const 2336 i64.const 0 call $~lib/typedarray/Uint64Array#reduceRight local.set $2 @@ -8683,7 +8656,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8798,7 +8771,7 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 2336 + i32.const 2368 f32.const 0 call $~lib/typedarray/Float32Array#reduceRight local.set $2 @@ -8808,7 +8781,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8923,7 +8896,7 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 2368 + i32.const 2400 f64.const 0 call $~lib/typedarray/Float64Array#reduceRight local.set $2 @@ -8933,7 +8906,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -8988,11 +8961,11 @@ local.set $6 i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -9075,7 +9048,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 2400 + i32.const 2432 call $~lib/typedarray/Int8Array#map local.set $2 local.get $2 @@ -9086,7 +9059,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -9100,7 +9073,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -9114,7 +9087,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -9171,11 +9144,11 @@ local.set $6 i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -9241,8 +9214,8 @@ i32.load offset=8 i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 152 i32.const 45 call $~lib/builtins/abort @@ -9277,7 +9250,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 2432 + i32.const 2464 call $~lib/typedarray/Uint8Array#map local.set $2 local.get $2 @@ -9288,7 +9261,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -9302,7 +9275,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -9316,7 +9289,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -9373,11 +9346,11 @@ local.set $6 i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -9460,7 +9433,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 2464 + i32.const 2496 call $~lib/typedarray/Uint8ClampedArray#map local.set $2 local.get $2 @@ -9471,7 +9444,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -9485,7 +9458,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -9499,7 +9472,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -9556,11 +9529,11 @@ local.set $6 i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -9628,8 +9601,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 408 i32.const 64 call $~lib/builtins/abort @@ -9666,7 +9639,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 2496 + i32.const 2528 call $~lib/typedarray/Int16Array#map local.set $2 local.get $2 @@ -9677,7 +9650,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -9691,7 +9664,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -9705,7 +9678,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -9762,11 +9735,11 @@ local.set $6 i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -9834,8 +9807,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 536 i32.const 64 call $~lib/builtins/abort @@ -9872,7 +9845,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 2528 + i32.const 2560 call $~lib/typedarray/Uint16Array#map local.set $2 local.get $2 @@ -9883,7 +9856,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -9897,7 +9870,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -9911,7 +9884,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -9968,11 +9941,11 @@ local.set $6 i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -10055,7 +10028,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 2560 + i32.const 2592 call $~lib/typedarray/Int32Array#map local.set $2 local.get $2 @@ -10066,7 +10039,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -10080,7 +10053,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -10094,7 +10067,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -10151,11 +10124,11 @@ local.set $6 i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -10223,8 +10196,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 792 i32.const 64 call $~lib/builtins/abort @@ -10261,7 +10234,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 2592 + i32.const 2624 call $~lib/typedarray/Uint32Array#map local.set $2 local.get $2 @@ -10272,7 +10245,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -10286,7 +10259,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -10300,7 +10273,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -10357,11 +10330,11 @@ local.set $6 i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -10429,8 +10402,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 920 i32.const 64 call $~lib/builtins/abort @@ -10467,7 +10440,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 2624 + i32.const 2656 call $~lib/typedarray/Int64Array#map local.set $2 local.get $2 @@ -10478,7 +10451,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -10492,7 +10465,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -10506,7 +10479,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -10563,11 +10536,11 @@ local.set $6 i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -10635,8 +10608,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1048 i32.const 64 call $~lib/builtins/abort @@ -10673,7 +10646,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 2656 + i32.const 2688 call $~lib/typedarray/Uint64Array#map local.set $2 local.get $2 @@ -10684,7 +10657,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -10698,7 +10671,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -10712,7 +10685,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -10769,11 +10742,11 @@ local.set $6 i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -10841,8 +10814,8 @@ i32.shr_u i32.ge_u if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1176 i32.const 64 call $~lib/builtins/abort @@ -10879,7 +10852,7 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 2688 + i32.const 2720 call $~lib/typedarray/Float32Array#map local.set $2 local.get $2 @@ -10890,7 +10863,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -10904,7 +10877,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -10918,7 +10891,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -10975,11 +10948,11 @@ local.set $6 i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 i32.const 0 local.set $9 @@ -11062,7 +11035,7 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 2720 + i32.const 2752 call $~lib/typedarray/Float64Array#map local.set $2 local.get $2 @@ -11073,7 +11046,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 365 i32.const 3 call $~lib/builtins/abort @@ -11087,7 +11060,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 366 i32.const 3 call $~lib/builtins/abort @@ -11101,7 +11074,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -11131,6 +11104,37 @@ call $~lib/rt/pure/__release local.get $3 ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -11138,7 +11142,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 @@ -11159,9 +11162,6 @@ local.get $1 local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 i32.const 0 drop local.get $1 @@ -11170,7 +11170,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -11188,7 +11188,7 @@ i32.and if local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.const 3 @@ -11211,9 +11211,6 @@ local.get $6 i32.or i32.store - local.get $1 - local.get $2 - i32.store offset=12 local.get $0 local.get $1 local.get $3 @@ -11225,41 +11222,86 @@ end end local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $9 - local.get $9 local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $9 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - drop + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock end - local.get $9 + i32.const 4 + i32.add ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 144 + i32.const 208 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + i32.const 20 + i32.sub + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $4 + local.get $0 + i32.const 16 + i32.sub + i32.const 16 + local.get $1 + i32.add + call $~lib/rt/tlsf/__realloc + local.set $5 + local.get $5 + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + local.get $2 local.get $1 - call $~lib/rt/tlsf/reallocateBlock + i32.store offset=16 + local.get $5 i32.const 16 i32.add ) @@ -11289,13 +11331,13 @@ local.set $4 i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 0 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -11353,7 +11395,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -11409,7 +11451,7 @@ i32.const 5 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 2752 + i32.const 2784 call $~lib/typedarray/Int8Array#filter local.set $2 local.get $2 @@ -11419,7 +11461,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -11432,7 +11474,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -11446,7 +11488,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -11460,7 +11502,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -11474,7 +11516,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -11528,13 +11570,13 @@ local.set $4 i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 0 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -11592,7 +11634,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -11648,7 +11690,7 @@ i32.const 5 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 2784 + i32.const 2816 call $~lib/typedarray/Uint8Array#filter local.set $2 local.get $2 @@ -11658,7 +11700,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -11671,7 +11713,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -11685,7 +11727,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -11699,7 +11741,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -11713,7 +11755,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -11767,13 +11809,13 @@ local.set $4 i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 0 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -11831,7 +11873,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -11887,7 +11929,7 @@ i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 2816 + i32.const 2848 call $~lib/typedarray/Uint8ClampedArray#filter local.set $2 local.get $2 @@ -11897,7 +11939,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -11910,7 +11952,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -11924,7 +11966,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -11938,7 +11980,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -11952,7 +11994,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -12008,13 +12050,13 @@ local.set $4 i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 1 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -12072,7 +12114,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -12128,7 +12170,7 @@ i32.const 5 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 2848 + i32.const 2880 call $~lib/typedarray/Int16Array#filter local.set $2 local.get $2 @@ -12138,7 +12180,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -12151,7 +12193,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -12165,7 +12207,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -12179,7 +12221,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -12193,7 +12235,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -12247,13 +12289,13 @@ local.set $4 i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 1 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -12311,7 +12353,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -12367,7 +12409,7 @@ i32.const 5 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 2880 + i32.const 2912 call $~lib/typedarray/Uint16Array#filter local.set $2 local.get $2 @@ -12377,7 +12419,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -12390,7 +12432,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -12404,7 +12446,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -12418,7 +12460,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -12432,7 +12474,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -12484,13 +12526,13 @@ local.set $4 i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 2 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -12548,7 +12590,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -12604,7 +12646,7 @@ i32.const 5 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 2912 + i32.const 2944 call $~lib/typedarray/Int32Array#filter local.set $2 local.get $2 @@ -12614,7 +12656,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -12627,7 +12669,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -12641,7 +12683,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -12655,7 +12697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -12669,7 +12711,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -12721,13 +12763,13 @@ local.set $4 i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 2 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -12785,7 +12827,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -12841,7 +12883,7 @@ i32.const 5 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 2944 + i32.const 2976 call $~lib/typedarray/Uint32Array#filter local.set $2 local.get $2 @@ -12851,7 +12893,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -12864,7 +12906,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -12878,7 +12920,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -12892,7 +12934,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -12906,7 +12948,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -12958,13 +13000,13 @@ local.set $4 i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 3 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -13022,7 +13064,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -13078,7 +13120,7 @@ i64.const 5 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 2976 + i32.const 3008 call $~lib/typedarray/Int64Array#filter local.set $2 local.get $2 @@ -13088,7 +13130,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -13101,7 +13143,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -13115,7 +13157,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -13129,7 +13171,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -13143,7 +13185,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -13195,13 +13237,13 @@ local.set $4 i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 3 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -13259,7 +13301,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -13315,7 +13357,7 @@ i64.const 5 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 3008 + i32.const 3040 call $~lib/typedarray/Uint64Array#filter local.set $2 local.get $2 @@ -13325,7 +13367,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -13338,7 +13380,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -13352,7 +13394,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -13366,7 +13408,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -13380,7 +13422,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -13432,13 +13474,13 @@ local.set $4 i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 2 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -13496,7 +13538,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -13552,7 +13594,7 @@ f32.const 5 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 3040 + i32.const 3072 call $~lib/typedarray/Float32Array#filter local.set $2 local.get $2 @@ -13562,7 +13604,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -13575,7 +13617,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -13589,7 +13631,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -13603,7 +13645,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -13617,7 +13659,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -13669,13 +13711,13 @@ local.set $4 i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $5 local.get $4 i32.const 3 i32.shl i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $6 local.get $3 i32.load offset=4 @@ -13733,7 +13775,7 @@ local.set $9 local.get $6 local.get $9 - call $~lib/rt/tlsf/__realloc + call $~lib/rt/pure/__renew local.set $10 local.get $5 local.get $10 @@ -13789,7 +13831,7 @@ f64.const 5 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 3072 + i32.const 3104 call $~lib/typedarray/Float64Array#filter local.set $2 local.get $2 @@ -13799,7 +13841,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -13812,7 +13854,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -13826,7 +13868,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -13840,7 +13882,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -13854,7 +13896,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -14001,7 +14043,7 @@ i32.const 6 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 3104 + i32.const 3136 call $~lib/typedarray/Int8Array#some local.set $2 local.get $2 @@ -14010,14 +14052,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3136 + i32.const 3168 call $~lib/typedarray/Int8Array#some local.set $3 local.get $3 @@ -14025,7 +14067,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14166,7 +14208,7 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 3168 + i32.const 3200 call $~lib/typedarray/Uint8Array#some local.set $2 local.get $2 @@ -14175,14 +14217,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3200 + i32.const 3232 call $~lib/typedarray/Uint8Array#some local.set $3 local.get $3 @@ -14190,7 +14232,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14331,7 +14373,7 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 3232 + i32.const 3264 call $~lib/typedarray/Uint8ClampedArray#some local.set $2 local.get $2 @@ -14340,14 +14382,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3264 + i32.const 3296 call $~lib/typedarray/Uint8ClampedArray#some local.set $3 local.get $3 @@ -14355,7 +14397,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14500,7 +14542,7 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 3296 + i32.const 3328 call $~lib/typedarray/Int16Array#some local.set $2 local.get $2 @@ -14509,14 +14551,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3328 + i32.const 3360 call $~lib/typedarray/Int16Array#some local.set $3 local.get $3 @@ -14524,7 +14566,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14665,7 +14707,7 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 3360 + i32.const 3392 call $~lib/typedarray/Uint16Array#some local.set $2 local.get $2 @@ -14674,14 +14716,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3392 + i32.const 3424 call $~lib/typedarray/Uint16Array#some local.set $3 local.get $3 @@ -14689,7 +14731,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14826,7 +14868,7 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 3424 + i32.const 3456 call $~lib/typedarray/Int32Array#some local.set $2 local.get $2 @@ -14835,14 +14877,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3456 + i32.const 3488 call $~lib/typedarray/Int32Array#some local.set $3 local.get $3 @@ -14850,7 +14892,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -14987,7 +15029,7 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 3488 + i32.const 3520 call $~lib/typedarray/Uint32Array#some local.set $2 local.get $2 @@ -14996,14 +15038,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3520 + i32.const 3552 call $~lib/typedarray/Uint32Array#some local.set $3 local.get $3 @@ -15011,7 +15053,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -15148,7 +15190,7 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 3552 + i32.const 3584 call $~lib/typedarray/Int64Array#some local.set $2 local.get $2 @@ -15157,14 +15199,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3584 + i32.const 3616 call $~lib/typedarray/Int64Array#some local.set $3 local.get $3 @@ -15172,7 +15214,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -15309,7 +15351,7 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 3616 + i32.const 3648 call $~lib/typedarray/Uint64Array#some local.set $2 local.get $2 @@ -15318,14 +15360,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3648 + i32.const 3680 call $~lib/typedarray/Uint64Array#some local.set $3 local.get $3 @@ -15333,7 +15375,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -15470,7 +15512,7 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 3680 + i32.const 3712 call $~lib/typedarray/Float32Array#some local.set $2 local.get $2 @@ -15479,14 +15521,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3712 + i32.const 3744 call $~lib/typedarray/Float32Array#some local.set $3 local.get $3 @@ -15494,7 +15536,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -15631,7 +15673,7 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 3744 + i32.const 3776 call $~lib/typedarray/Float64Array#some local.set $2 local.get $2 @@ -15640,14 +15682,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3776 + i32.const 3808 call $~lib/typedarray/Float64Array#some local.set $3 local.get $3 @@ -15655,7 +15697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -15800,7 +15842,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 3808 + i32.const 3840 call $~lib/typedarray/Int8Array#findIndex local.set $2 local.get $2 @@ -15809,14 +15851,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3840 + i32.const 3872 call $~lib/typedarray/Int8Array#findIndex local.set $3 local.get $3 @@ -15825,7 +15867,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -15966,7 +16008,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 3872 + i32.const 3904 call $~lib/typedarray/Uint8Array#findIndex local.set $2 local.get $2 @@ -15975,14 +16017,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3904 + i32.const 3936 call $~lib/typedarray/Uint8Array#findIndex local.set $3 local.get $3 @@ -15991,7 +16033,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -16132,7 +16174,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 3936 + i32.const 3968 call $~lib/typedarray/Uint8ClampedArray#findIndex local.set $2 local.get $2 @@ -16141,14 +16183,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 3968 + i32.const 4000 call $~lib/typedarray/Uint8ClampedArray#findIndex local.set $3 local.get $3 @@ -16157,7 +16199,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -16302,7 +16344,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 4000 + i32.const 4032 call $~lib/typedarray/Int16Array#findIndex local.set $2 local.get $2 @@ -16311,14 +16353,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4032 + i32.const 4064 call $~lib/typedarray/Int16Array#findIndex local.set $3 local.get $3 @@ -16327,7 +16369,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -16468,7 +16510,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 4064 + i32.const 4096 call $~lib/typedarray/Uint16Array#findIndex local.set $2 local.get $2 @@ -16477,14 +16519,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4096 + i32.const 4128 call $~lib/typedarray/Uint16Array#findIndex local.set $3 local.get $3 @@ -16493,7 +16535,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -16630,7 +16672,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 4128 + i32.const 4160 call $~lib/typedarray/Int32Array#findIndex local.set $2 local.get $2 @@ -16639,14 +16681,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4160 + i32.const 4192 call $~lib/typedarray/Int32Array#findIndex local.set $3 local.get $3 @@ -16655,7 +16697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -16792,7 +16834,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 4192 + i32.const 4224 call $~lib/typedarray/Uint32Array#findIndex local.set $2 local.get $2 @@ -16801,14 +16843,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4224 + i32.const 4256 call $~lib/typedarray/Uint32Array#findIndex local.set $3 local.get $3 @@ -16817,7 +16859,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -16954,7 +16996,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 4256 + i32.const 4288 call $~lib/typedarray/Int64Array#findIndex local.set $2 local.get $2 @@ -16963,14 +17005,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4288 + i32.const 4320 call $~lib/typedarray/Int64Array#findIndex local.set $3 local.get $3 @@ -16979,7 +17021,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -17116,7 +17158,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 4320 + i32.const 4352 call $~lib/typedarray/Uint64Array#findIndex local.set $2 local.get $2 @@ -17125,14 +17167,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4352 + i32.const 4384 call $~lib/typedarray/Uint64Array#findIndex local.set $3 local.get $3 @@ -17141,7 +17183,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -17278,7 +17320,7 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 4384 + i32.const 4416 call $~lib/typedarray/Float32Array#findIndex local.set $2 local.get $2 @@ -17287,14 +17329,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4416 + i32.const 4448 call $~lib/typedarray/Float32Array#findIndex local.set $3 local.get $3 @@ -17303,7 +17345,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -17440,7 +17482,7 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 4448 + i32.const 4480 call $~lib/typedarray/Float64Array#findIndex local.set $2 local.get $2 @@ -17449,14 +17491,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4480 + i32.const 4512 call $~lib/typedarray/Float64Array#findIndex local.set $3 local.get $3 @@ -17465,7 +17507,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -17615,7 +17657,7 @@ i32.const 6 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 4512 + i32.const 4544 call $~lib/typedarray/Int8Array#every local.set $2 local.get $2 @@ -17624,14 +17666,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4544 + i32.const 4576 call $~lib/typedarray/Int8Array#every local.set $3 local.get $3 @@ -17639,7 +17681,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -17785,7 +17827,7 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 4576 + i32.const 4608 call $~lib/typedarray/Uint8Array#every local.set $2 local.get $2 @@ -17794,14 +17836,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4608 + i32.const 4640 call $~lib/typedarray/Uint8Array#every local.set $3 local.get $3 @@ -17809,7 +17851,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -17955,7 +17997,7 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 4640 + i32.const 4672 call $~lib/typedarray/Uint8ClampedArray#every local.set $2 local.get $2 @@ -17964,14 +18006,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4672 + i32.const 4704 call $~lib/typedarray/Uint8ClampedArray#every local.set $3 local.get $3 @@ -17979,7 +18021,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -18129,7 +18171,7 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 4704 + i32.const 4736 call $~lib/typedarray/Int16Array#every local.set $2 local.get $2 @@ -18138,14 +18180,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4736 + i32.const 4768 call $~lib/typedarray/Int16Array#every local.set $3 local.get $3 @@ -18153,7 +18195,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -18299,7 +18341,7 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 4768 + i32.const 4800 call $~lib/typedarray/Uint16Array#every local.set $2 local.get $2 @@ -18308,14 +18350,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4800 + i32.const 4832 call $~lib/typedarray/Uint16Array#every local.set $3 local.get $3 @@ -18323,7 +18365,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -18465,7 +18507,7 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 4832 + i32.const 4864 call $~lib/typedarray/Int32Array#every local.set $2 local.get $2 @@ -18474,14 +18516,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4864 + i32.const 4896 call $~lib/typedarray/Int32Array#every local.set $3 local.get $3 @@ -18489,7 +18531,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -18631,7 +18673,7 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 4896 + i32.const 4928 call $~lib/typedarray/Uint32Array#every local.set $2 local.get $2 @@ -18640,14 +18682,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4928 + i32.const 4960 call $~lib/typedarray/Uint32Array#every local.set $3 local.get $3 @@ -18655,7 +18697,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -18797,7 +18839,7 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 4960 + i32.const 4992 call $~lib/typedarray/Int64Array#every local.set $2 local.get $2 @@ -18806,14 +18848,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4992 + i32.const 5024 call $~lib/typedarray/Int64Array#every local.set $3 local.get $3 @@ -18821,7 +18863,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -18963,7 +19005,7 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 5024 + i32.const 5056 call $~lib/typedarray/Uint64Array#every local.set $2 local.get $2 @@ -18972,14 +19014,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5056 + i32.const 5088 call $~lib/typedarray/Uint64Array#every local.set $3 local.get $3 @@ -18987,7 +19029,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -19390,7 +19432,7 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 5088 + i32.const 5120 call $~lib/typedarray/Float32Array#every local.set $2 local.get $2 @@ -19399,14 +19441,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5120 + i32.const 5152 call $~lib/typedarray/Float32Array#every local.set $3 local.get $3 @@ -19414,7 +19456,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -19823,7 +19865,7 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 5152 + i32.const 5184 call $~lib/typedarray/Float64Array#every local.set $2 local.get $2 @@ -19832,14 +19874,14 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5184 + i32.const 5216 call $~lib/typedarray/Float64Array#every local.set $3 local.get $3 @@ -19847,7 +19889,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -19881,7 +19923,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -19893,7 +19935,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -19905,7 +19947,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -20020,7 +20062,7 @@ i32.shr_s call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 5280 + i32.const 5328 call $~lib/typedarray/Int8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -20028,7 +20070,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -20058,7 +20100,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -20070,7 +20112,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -20082,7 +20124,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -20191,7 +20233,7 @@ i32.and call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 5312 + i32.const 5360 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -20199,7 +20241,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -20229,7 +20271,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -20241,7 +20283,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -20253,7 +20295,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -20362,7 +20404,7 @@ i32.and call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 5344 + i32.const 5392 call $~lib/typedarray/Uint8ClampedArray#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -20370,7 +20412,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -20404,7 +20446,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -20416,7 +20458,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -20428,7 +20470,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -20543,7 +20585,7 @@ i32.shr_s call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 5376 + i32.const 5424 call $~lib/typedarray/Int16Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -20551,7 +20593,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -20581,7 +20623,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -20593,7 +20635,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -20605,7 +20647,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -20714,7 +20756,7 @@ i32.and call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 5408 + i32.const 5456 call $~lib/typedarray/Uint16Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -20722,7 +20764,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -20748,7 +20790,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -20760,7 +20802,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -20772,7 +20814,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -20875,7 +20917,7 @@ call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 5440 + i32.const 5488 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -20883,7 +20925,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -20909,7 +20951,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -20921,7 +20963,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -20933,7 +20975,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -21036,7 +21078,7 @@ call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 5472 + i32.const 5520 call $~lib/typedarray/Uint32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -21044,7 +21086,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -21071,7 +21113,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -21083,7 +21125,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -21095,7 +21137,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -21201,7 +21243,7 @@ i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 5504 + i32.const 5552 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -21209,7 +21251,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -21236,7 +21278,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -21248,7 +21290,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -21260,7 +21302,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -21366,7 +21408,7 @@ i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 5536 + i32.const 5584 call $~lib/typedarray/Uint64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -21374,7 +21416,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -21401,7 +21443,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -21413,7 +21455,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -21425,7 +21467,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -21531,7 +21573,7 @@ f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 5568 + i32.const 5616 call $~lib/typedarray/Float32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -21539,7 +21581,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -21566,7 +21608,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 490 i32.const 5 call $~lib/builtins/abort @@ -21578,7 +21620,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 491 i32.const 5 call $~lib/builtins/abort @@ -21590,7 +21632,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 492 i32.const 5 call $~lib/builtins/abort @@ -21696,7 +21738,7 @@ f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 5600 + i32.const 5648 call $~lib/typedarray/Float64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -21704,7 +21746,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -21873,7 +21915,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -21901,7 +21943,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -21915,7 +21957,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -21929,7 +21971,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -21943,7 +21985,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -22106,7 +22148,7 @@ local.set $3 i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -22223,7 +22265,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -22251,7 +22293,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -22265,7 +22307,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -22279,7 +22321,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -22293,7 +22335,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -22456,7 +22498,7 @@ local.set $3 i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -22573,7 +22615,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -22601,7 +22643,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -22615,7 +22657,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -22629,7 +22671,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -22643,7 +22685,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -22806,7 +22848,7 @@ local.set $3 i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -22929,7 +22971,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -22957,7 +22999,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -22971,7 +23013,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -22985,7 +23027,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -22999,7 +23041,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -23162,7 +23204,7 @@ local.set $3 i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -23279,7 +23321,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -23307,7 +23349,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -23321,7 +23363,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -23335,7 +23377,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -23349,7 +23391,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -23516,7 +23558,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -23544,7 +23586,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -23558,7 +23600,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -23572,7 +23614,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -23586,7 +23628,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -23749,7 +23791,7 @@ local.set $3 i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -23860,7 +23902,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -23888,7 +23930,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -23902,7 +23944,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -23916,7 +23958,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -23930,7 +23972,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -24093,7 +24135,7 @@ local.set $3 i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -24207,7 +24249,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -24235,7 +24277,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -24249,7 +24291,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -24263,7 +24305,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -24277,7 +24319,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -24440,7 +24482,7 @@ local.set $3 i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -24554,7 +24596,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -24582,7 +24624,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -24596,7 +24638,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -24610,7 +24652,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -24624,7 +24666,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -24787,7 +24829,7 @@ local.set $3 i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $5 @@ -24901,7 +24943,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -24929,7 +24971,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -24943,7 +24985,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -24957,7 +24999,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -24971,7 +25013,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -25141,7 +25183,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 524 i32.const 5 call $~lib/builtins/abort @@ -25169,7 +25211,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -25183,7 +25225,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -25197,7 +25239,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -25211,7 +25253,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -25503,7 +25545,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -25518,7 +25560,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -25533,7 +25575,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -25548,7 +25590,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -25563,7 +25605,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -25578,7 +25620,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -25593,7 +25635,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -25608,7 +25650,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -25623,7 +25665,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -25640,7 +25682,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -25657,7 +25699,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -25674,7 +25716,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -25691,7 +25733,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -25706,7 +25748,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -25721,7 +25763,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -25736,7 +25778,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -25751,7 +25793,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -25766,7 +25808,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -25781,7 +25823,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -25801,7 +25843,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -25818,7 +25860,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -25835,7 +25877,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -25850,7 +25892,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -25865,7 +25907,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -25880,7 +25922,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -25897,7 +25939,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -25912,7 +25954,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -26192,7 +26234,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -26207,7 +26249,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -26222,7 +26264,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -26237,7 +26279,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -26252,7 +26294,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -26267,7 +26309,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -26282,7 +26324,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -26297,7 +26339,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -26312,7 +26354,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -26329,7 +26371,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -26346,7 +26388,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -26363,7 +26405,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -26380,7 +26422,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -26395,7 +26437,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -26410,7 +26452,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -26425,7 +26467,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -26440,7 +26482,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -26455,7 +26497,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -26470,7 +26512,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -26490,7 +26532,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -26507,7 +26549,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -26524,7 +26566,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -26539,7 +26581,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -26554,7 +26596,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -26569,7 +26611,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -26586,7 +26628,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -26601,7 +26643,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -26881,7 +26923,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -26896,7 +26938,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -26911,7 +26953,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -26926,7 +26968,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -26941,7 +26983,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -26956,7 +26998,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -26971,7 +27013,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -26986,7 +27028,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -27001,7 +27043,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -27018,7 +27060,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -27035,7 +27077,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -27052,7 +27094,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -27069,7 +27111,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -27084,7 +27126,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -27099,7 +27141,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -27114,7 +27156,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -27129,7 +27171,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -27144,7 +27186,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -27159,7 +27201,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -27179,7 +27221,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -27196,7 +27238,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -27213,7 +27255,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -27228,7 +27270,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -27243,7 +27285,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -27258,7 +27300,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -27275,7 +27317,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -27290,7 +27332,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -27576,7 +27618,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -27591,7 +27633,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -27606,7 +27648,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -27621,7 +27663,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -27636,7 +27678,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -27651,7 +27693,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -27666,7 +27708,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -27681,7 +27723,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -27696,7 +27738,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -27713,7 +27755,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -27730,7 +27772,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -27747,7 +27789,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -27764,7 +27806,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -27779,7 +27821,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -27794,7 +27836,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -27809,7 +27851,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -27824,7 +27866,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -27839,7 +27881,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -27854,7 +27896,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -27874,7 +27916,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -27891,7 +27933,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -27908,7 +27950,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -27923,7 +27965,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -27938,7 +27980,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -27953,7 +27995,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -27970,7 +28012,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -27985,7 +28027,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -28265,7 +28307,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -28280,7 +28322,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -28295,7 +28337,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -28310,7 +28352,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -28325,7 +28367,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -28340,7 +28382,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -28355,7 +28397,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -28370,7 +28412,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -28385,7 +28427,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -28402,7 +28444,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -28419,7 +28461,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -28436,7 +28478,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -28453,7 +28495,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -28468,7 +28510,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -28483,7 +28525,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -28498,7 +28540,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -28513,7 +28555,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -28528,7 +28570,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -28543,7 +28585,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -28563,7 +28605,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -28580,7 +28622,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -28597,7 +28639,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -28612,7 +28654,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -28627,7 +28669,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -28642,7 +28684,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -28659,7 +28701,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -28674,7 +28716,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -28948,7 +28990,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -28963,7 +29005,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -28978,7 +29020,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -28993,7 +29035,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -29008,7 +29050,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -29023,7 +29065,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -29038,7 +29080,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -29053,7 +29095,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -29068,7 +29110,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -29085,7 +29127,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -29102,7 +29144,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -29119,7 +29161,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -29136,7 +29178,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -29151,7 +29193,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -29166,7 +29208,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -29181,7 +29223,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -29196,7 +29238,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -29211,7 +29253,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -29226,7 +29268,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -29246,7 +29288,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -29263,7 +29305,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -29280,7 +29322,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -29295,7 +29337,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -29310,7 +29352,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -29325,7 +29367,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -29342,7 +29384,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -29357,7 +29399,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -29631,7 +29673,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -29646,7 +29688,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -29661,7 +29703,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -29676,7 +29718,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -29691,7 +29733,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -29706,7 +29748,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -29721,7 +29763,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -29736,7 +29778,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -29751,7 +29793,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -29768,7 +29810,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -29785,7 +29827,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -29802,7 +29844,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -29819,7 +29861,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -29834,7 +29876,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -29849,7 +29891,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -29864,7 +29906,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -29879,7 +29921,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -29894,7 +29936,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -29909,7 +29951,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -29929,7 +29971,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -29946,7 +29988,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -29963,7 +30005,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -29978,7 +30020,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -29993,7 +30035,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -30008,7 +30050,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -30025,7 +30067,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -30040,7 +30082,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -30315,7 +30357,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -30330,7 +30372,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -30345,7 +30387,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -30360,7 +30402,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -30375,7 +30417,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -30390,7 +30432,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -30405,7 +30447,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -30420,7 +30462,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -30435,7 +30477,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -30452,7 +30494,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -30469,7 +30511,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -30486,7 +30528,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -30503,7 +30545,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -30518,7 +30560,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -30533,7 +30575,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -30548,7 +30590,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -30563,7 +30605,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -30578,7 +30620,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -30593,7 +30635,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -30613,7 +30655,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -30630,7 +30672,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -30647,7 +30689,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -30662,7 +30704,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -30677,7 +30719,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -30692,7 +30734,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -30709,7 +30751,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -30724,7 +30766,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -30999,7 +31041,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -31014,7 +31056,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -31029,7 +31071,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -31044,7 +31086,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -31059,7 +31101,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -31074,7 +31116,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -31089,7 +31131,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -31104,7 +31146,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -31119,7 +31161,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -31136,7 +31178,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -31153,7 +31195,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -31170,7 +31212,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -31187,7 +31229,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -31202,7 +31244,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -31217,7 +31259,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -31232,7 +31274,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -31247,7 +31289,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -31262,7 +31304,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -31277,7 +31319,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -31297,7 +31339,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -31314,7 +31356,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -31331,7 +31373,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -31346,7 +31388,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -31361,7 +31403,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -31376,7 +31418,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -31393,7 +31435,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -31408,7 +31450,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -31683,7 +31725,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -31698,7 +31740,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -31713,7 +31755,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -31728,7 +31770,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -31743,7 +31785,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -31758,7 +31800,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -31773,7 +31815,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -31788,7 +31830,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -31803,7 +31845,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -31820,7 +31862,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -31837,7 +31879,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -31854,7 +31896,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -31871,7 +31913,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -31886,7 +31928,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -31901,7 +31943,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -31916,7 +31958,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -31931,7 +31973,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -31946,7 +31988,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -31961,7 +32003,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -31981,7 +32023,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -31998,7 +32040,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -32015,7 +32057,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -32030,7 +32072,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -32045,7 +32087,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -32060,7 +32102,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -32077,7 +32119,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -32092,7 +32134,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -32367,7 +32409,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -32382,7 +32424,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 558 i32.const 3 call $~lib/builtins/abort @@ -32397,7 +32439,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -32412,7 +32454,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -32427,7 +32469,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -32442,7 +32484,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -32457,7 +32499,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -32472,7 +32514,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 564 i32.const 3 call $~lib/builtins/abort @@ -32487,7 +32529,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -32504,7 +32546,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -32521,7 +32563,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -32538,7 +32580,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -32555,7 +32597,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -32570,7 +32612,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 571 i32.const 3 call $~lib/builtins/abort @@ -32585,7 +32627,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 572 i32.const 3 call $~lib/builtins/abort @@ -32600,7 +32642,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 573 i32.const 3 call $~lib/builtins/abort @@ -32615,7 +32657,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -32630,7 +32672,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -32645,7 +32687,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -32665,7 +32707,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -32682,7 +32724,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -32699,7 +32741,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -32714,7 +32756,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -32729,7 +32771,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -32744,7 +32786,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -32761,7 +32803,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -32776,7 +32818,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -33107,14 +33149,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 6036 + i32.const 6132 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 6036 + i32.const 6132 local.get $7 i32.const 2 i32.shl @@ -33157,7 +33199,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 6036 + i32.const 6132 local.get $10 i32.const 2 i32.shl @@ -33180,7 +33222,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 6036 + i32.const 6132 local.get $1 i32.const 2 i32.shl @@ -33230,7 +33272,7 @@ i32.const 1 i32.shl i32.add - i32.const 6464 + i32.const 6560 local.get $1 i32.wrap_i64 i32.const 255 @@ -33252,7 +33294,7 @@ i32.and if local.get $0 - i32.const 6464 + i32.const 6560 local.get $1 i32.wrap_i64 i32.const 6 @@ -33375,7 +33417,7 @@ i32.const 1 i32.shl i32.add - i32.const 7504 + i32.const 7616 local.get $1 local.get $6 i64.and @@ -33411,7 +33453,7 @@ i32.const 1 i32.shl i32.add - i32.const 7504 + i32.const 7616 local.get $1 local.get $6 local.get $4 @@ -33452,8 +33494,8 @@ i32.gt_s end if - i32.const 5840 - i32.const 5968 + i32.const 5936 + i32.const 6064 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -33462,7 +33504,7 @@ local.get $0 i32.eqz if - i32.const 6032 + i32.const 6128 return end local.get $0 @@ -33491,7 +33533,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -33527,7 +33569,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -33558,7 +33600,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $4 @@ -33579,9 +33621,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -33758,7 +33800,7 @@ local.get $10 i32.eqz if - i32.const 5824 + i32.const 5904 call $~lib/rt/pure/__retain return end @@ -33780,7 +33822,7 @@ end local.get $10 i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $11 local.get $11 local.get $0 @@ -33812,7 +33854,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -33856,7 +33898,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -34167,7 +34209,7 @@ ) (func $~lib/typedarray/Int8Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int8Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> @@ -34204,15 +34246,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int8Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -34221,12 +34263,12 @@ local.get $1 call $~lib/typedarray/Int8Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -34258,8 +34300,8 @@ i32.gt_s end if - i32.const 5840 - i32.const 5968 + i32.const 5936 + i32.const 6064 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -34268,7 +34310,7 @@ local.get $0 i32.eqz if - i32.const 6032 + i32.const 6128 return end i32.const 0 @@ -34284,7 +34326,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -34318,7 +34360,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -34345,7 +34387,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -34442,7 +34484,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -34486,7 +34528,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -34598,7 +34640,7 @@ ) (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint8Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> @@ -34635,15 +34677,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint8Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -34652,12 +34694,12 @@ local.get $1 call $~lib/typedarray/Uint8Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -34690,7 +34732,7 @@ ) (func $~lib/typedarray/Uint8ClampedArray#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint8ClampedArray#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> @@ -34727,15 +34769,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint8ClampedArray#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -34744,12 +34786,12 @@ local.get $1 call $~lib/typedarray/Uint8ClampedArray#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -34884,7 +34926,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -34928,7 +34970,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -35040,7 +35082,7 @@ ) (func $~lib/typedarray/Int16Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int16Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> @@ -35077,15 +35119,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int16Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -35094,12 +35136,12 @@ local.get $1 call $~lib/typedarray/Int16Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -35198,7 +35240,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -35242,7 +35284,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -35354,7 +35396,7 @@ ) (func $~lib/typedarray/Uint16Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint16Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> @@ -35391,15 +35433,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint16Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -35408,12 +35450,12 @@ local.get $1 call $~lib/typedarray/Uint16Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -35528,7 +35570,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -35572,7 +35614,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -35684,7 +35726,7 @@ ) (func $~lib/typedarray/Int32Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int32Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> @@ -35721,15 +35763,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int32Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -35738,12 +35780,12 @@ local.get $1 call $~lib/typedarray/Int32Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -35834,7 +35876,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -35878,7 +35920,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -35990,7 +36032,7 @@ ) (func $~lib/typedarray/Uint32Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint32Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> @@ -36027,15 +36069,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint32Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -36044,12 +36086,12 @@ local.get $1 call $~lib/typedarray/Uint32Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -36179,14 +36221,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 6036 + i32.const 6132 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 6036 + i32.const 6132 local.get $11 i32.const 2 i32.shl @@ -36208,14 +36250,14 @@ i64.shl i64.or i64.store - i32.const 6036 + i32.const 6132 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 6036 + i32.const 6132 local.get $9 i32.const 2 i32.shl @@ -36266,8 +36308,8 @@ i32.gt_s end if - i32.const 5840 - i32.const 5968 + i32.const 5936 + i32.const 6064 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -36278,7 +36320,7 @@ i64.ne i32.eqz if - i32.const 6032 + i32.const 6128 return end local.get $0 @@ -36316,7 +36358,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $8 @@ -36342,7 +36384,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $7 @@ -36380,7 +36422,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.set $4 @@ -36407,7 +36449,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $3 local.get $3 local.get $0 @@ -36556,7 +36598,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -36602,7 +36644,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -36714,7 +36756,7 @@ ) (func $~lib/typedarray/Int64Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int64Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> @@ -36751,15 +36793,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Int64Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -36768,12 +36810,12 @@ local.get $1 call $~lib/typedarray/Int64Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -36807,8 +36849,8 @@ i32.gt_s end if - i32.const 5840 - i32.const 5968 + i32.const 5936 + i32.const 6064 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -36819,7 +36861,7 @@ i64.ne i32.eqz if - i32.const 6032 + i32.const 6128 return end i32.const 0 @@ -36843,7 +36885,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $7 @@ -36867,7 +36909,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $6 @@ -36903,7 +36945,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.set $3 @@ -36928,7 +36970,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 local.get $0 @@ -37047,7 +37089,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -37091,7 +37133,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $9 i32.const 0 @@ -37203,7 +37245,7 @@ ) (func $~lib/typedarray/Uint64Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint64Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> @@ -37240,15 +37282,15 @@ i32.const 0 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Uint64Array#join local.tee $2 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 629 i32.const 5 call $~lib/builtins/abort @@ -37257,12 +37299,12 @@ local.get $1 call $~lib/typedarray/Uint64Array#toString local.tee $3 - i32.const 7632 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 630 i32.const 5 call $~lib/builtins/abort @@ -37543,7 +37585,7 @@ local.set $22 local.get $18 local.set $21 - i32.const 8680 + i32.const 8848 local.get $13 i32.const 2 i32.shl @@ -37684,7 +37726,7 @@ i32.add global.set $~lib/util/number/_K local.get $10 - i32.const 8680 + i32.const 8848 i32.const 0 local.get $13 i32.sub @@ -38265,14 +38307,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 7808 + i32.const 7976 local.get $14 i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 8504 + i32.const 8672 local.get $14 i32.const 1 i32.shl @@ -38531,12 +38573,11 @@ (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 f64.const 0 f64.eq if - i32.const 7680 + i32.const 7792 return end local.get $0 @@ -38550,11 +38591,11 @@ local.get $0 f64.ne if - i32.const 7712 + i32.const 7824 return end - i32.const 7744 - i32.const 7792 + i32.const 7856 + i32.const 7904 local.get $0 f64.const 0 f64.lt @@ -38562,32 +38603,22 @@ call $~lib/rt/pure/__retain return end - i32.const 28 + i32.const 7920 + local.get $0 + call $~lib/util/number/dtoa_core i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc local.set $1 local.get $1 - local.get $0 - call $~lib/util/number/dtoa_core + i32.const 1 + call $~lib/rt/pure/__new local.set $2 local.get $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end + i32.const 7920 local.get $1 - i32.const 0 + call $~lib/memory/memory.copy local.get $2 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/tlsf/__free - local.get $3 + call $~lib/rt/pure/__retain ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) @@ -38681,7 +38712,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -38717,7 +38748,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $8 i32.const 0 @@ -38831,7 +38862,7 @@ ) (func $~lib/typedarray/Float32Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Float32Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> @@ -38868,15 +38899,15 @@ i32.const 1 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Float32Array#join local.tee $2 - i32.const 8736 + i32.const 8912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 626 i32.const 5 call $~lib/builtins/abort @@ -38885,12 +38916,12 @@ local.get $1 call $~lib/typedarray/Float32Array#toString local.tee $3 - i32.const 8736 + i32.const 8912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 627 i32.const 5 call $~lib/builtins/abort @@ -38925,7 +38956,7 @@ i32.const 0 i32.lt_s if - i32.const 5824 + i32.const 5904 local.set $4 local.get $2 call $~lib/rt/pure/__release @@ -38960,7 +38991,7 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $8 i32.const 0 @@ -39072,7 +39103,7 @@ ) (func $~lib/typedarray/Float64Array#toString (param $0 i32) (result i32) local.get $0 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Float64Array#join ) (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> @@ -39109,15 +39140,15 @@ i32.const 1 drop local.get $1 - i32.const 7600 + i32.const 7712 call $~lib/typedarray/Float64Array#join local.tee $2 - i32.const 8736 + i32.const 8912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 626 i32.const 5 call $~lib/builtins/abort @@ -39126,12 +39157,12 @@ local.get $1 call $~lib/typedarray/Float64Array#toString local.tee $3 - i32.const 8736 + i32.const 8912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 627 i32.const 5 call $~lib/builtins/abort @@ -39150,7 +39181,7 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if i32.const 32 @@ -39162,7 +39193,7 @@ end local.get $1 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $2 local.get $2 i32.const 0 @@ -39177,9 +39208,9 @@ ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 ) (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -39210,8 +39241,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -39230,7 +39261,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -39242,7 +39273,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -39260,7 +39291,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -39269,7 +39300,7 @@ end i32.const 12 i32.const 4 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -39389,7 +39420,7 @@ local.set $6 local.get $6 i32.const 0 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $7 local.get $7 local.get $0 @@ -39429,8 +39460,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -39449,7 +39480,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -39461,7 +39492,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -39479,7 +39510,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -39488,7 +39519,7 @@ end i32.const 12 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -39628,7 +39659,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -39744,7 +39775,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -39797,8 +39828,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -39817,7 +39848,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -39829,7 +39860,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -39847,7 +39878,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -39856,7 +39887,7 @@ end i32.const 12 i32.const 5 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -39998,7 +40029,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -40051,8 +40082,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -40071,7 +40102,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -40083,7 +40114,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -40101,7 +40132,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -40110,7 +40141,7 @@ end i32.const 12 i32.const 6 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -40256,7 +40287,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -40309,8 +40340,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -40329,7 +40360,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -40341,7 +40372,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -40359,7 +40390,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -40368,7 +40399,7 @@ end i32.const 12 i32.const 7 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -40514,7 +40545,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -40567,8 +40598,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -40587,7 +40618,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -40599,7 +40630,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -40617,7 +40648,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -40626,7 +40657,7 @@ end i32.const 12 i32.const 8 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -40772,7 +40803,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -40825,8 +40856,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -40845,7 +40876,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -40857,7 +40888,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -40875,7 +40906,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -40884,7 +40915,7 @@ end i32.const 12 i32.const 9 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -41032,7 +41063,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -41085,8 +41116,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -41105,7 +41136,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -41117,7 +41148,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -41135,7 +41166,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -41144,7 +41175,7 @@ end i32.const 12 i32.const 10 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -41295,7 +41326,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -41348,8 +41379,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -41368,7 +41399,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -41380,7 +41411,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -41398,7 +41429,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -41407,7 +41438,7 @@ end i32.const 12 i32.const 11 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -41560,7 +41591,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -41613,8 +41644,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -41633,7 +41664,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -41645,7 +41676,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -41663,7 +41694,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -41672,7 +41703,7 @@ end i32.const 12 i32.const 12 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -41827,7 +41858,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -41880,8 +41911,8 @@ i32.and i32.or if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1741 i32.const 5 call $~lib/builtins/abort @@ -41900,7 +41931,7 @@ i32.and if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1746 i32.const 9 call $~lib/builtins/abort @@ -41912,7 +41943,7 @@ local.set $6 else i32.const 32 - i32.const 432 + i32.const 464 i32.const 1750 i32.const 7 call $~lib/builtins/abort @@ -41930,7 +41961,7 @@ i32.gt_s if i32.const 32 - i32.const 432 + i32.const 464 i32.const 1755 i32.const 7 call $~lib/builtins/abort @@ -41939,7 +41970,7 @@ end i32.const 12 i32.const 13 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new local.set $8 local.get $8 local.get $5 @@ -42096,7 +42127,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 684 i32.const 5 call $~lib/builtins/abort @@ -42146,8 +42177,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -42161,8 +42192,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -42285,7 +42316,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -42312,7 +42343,7 @@ local.get $6 i32.ne if - i32.const 9200 + i32.const 9456 i32.const 3 local.get $3 f64.convert_i32_s @@ -42327,7 +42358,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -42377,8 +42408,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -42392,8 +42423,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -42517,8 +42548,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -42532,8 +42563,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -42658,8 +42689,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -42673,8 +42704,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -42793,8 +42824,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -42808,8 +42839,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -42881,8 +42912,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -42896,8 +42927,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -43012,8 +43043,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -43027,8 +43058,8 @@ call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -43151,8 +43182,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 9168 - call $~lib/rt/__allocArray + i32.const 9424 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -43164,8 +43195,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 9248 - call $~lib/rt/__allocArray + i32.const 9504 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -43177,8 +43208,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 9280 - call $~lib/rt/__allocArray + i32.const 9536 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -43192,8 +43223,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 9312 - call $~lib/rt/__allocArray + i32.const 9568 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -43217,8 +43248,8 @@ i32.const 10 i32.const 0 i32.const 15 - i32.const 9344 - call $~lib/rt/__allocArray + i32.const 9600 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> @@ -43267,8 +43298,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -43282,8 +43313,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -43419,7 +43450,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -43446,7 +43477,7 @@ local.get $6 i32.ne if - i32.const 9408 + i32.const 9664 i32.const 3 local.get $3 f64.convert_i32_s @@ -43461,7 +43492,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -43507,8 +43538,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -43522,8 +43553,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -43647,8 +43678,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -43662,8 +43693,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -43784,8 +43815,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -43799,8 +43830,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -43919,8 +43950,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -43934,8 +43965,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -44007,8 +44038,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -44022,8 +44053,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -44138,8 +44169,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -44153,8 +44184,8 @@ call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -44277,8 +44308,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9376 - call $~lib/rt/__allocArray + i32.const 9632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -44290,8 +44321,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9456 - call $~lib/rt/__allocArray + i32.const 9712 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -44303,8 +44334,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9488 - call $~lib/rt/__allocArray + i32.const 9744 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -44318,8 +44349,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9520 - call $~lib/rt/__allocArray + i32.const 9776 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -44343,8 +44374,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9552 - call $~lib/rt/__allocArray + i32.const 9808 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> @@ -44394,8 +44425,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -44409,8 +44440,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -44540,7 +44571,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -44567,7 +44598,7 @@ local.get $6 i32.ne if - i32.const 9616 + i32.const 9872 i32.const 3 local.get $3 f64.convert_i32_s @@ -44582,7 +44613,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -44628,8 +44659,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -44643,8 +44674,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -44767,8 +44798,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -44782,8 +44813,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -44915,8 +44946,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -44930,8 +44961,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -45048,8 +45079,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -45063,8 +45094,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -45137,8 +45168,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -45152,8 +45183,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -45281,8 +45312,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -45296,8 +45327,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -45475,8 +45506,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9584 - call $~lib/rt/__allocArray + i32.const 9840 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -45488,8 +45519,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9680 - call $~lib/rt/__allocArray + i32.const 9936 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -45501,8 +45532,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9712 - call $~lib/rt/__allocArray + i32.const 9968 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -45516,8 +45547,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9744 - call $~lib/rt/__allocArray + i32.const 10000 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -45541,8 +45572,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 9776 - call $~lib/rt/__allocArray + i32.const 10032 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -45591,8 +45622,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -45606,8 +45637,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -45745,7 +45776,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -45772,7 +45803,7 @@ local.get $6 i32.ne if - i32.const 9856 + i32.const 10112 i32.const 3 local.get $3 f64.convert_i32_s @@ -45787,7 +45818,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -45833,8 +45864,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -45848,8 +45879,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -45973,8 +46004,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -45988,8 +46019,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -46110,8 +46141,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -46125,8 +46156,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -46250,8 +46281,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -46265,8 +46296,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -46381,8 +46412,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -46396,8 +46427,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -46469,8 +46500,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -46484,8 +46515,8 @@ call $~lib/typedarray/Int16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -46656,8 +46687,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9808 - call $~lib/rt/__allocArray + i32.const 10064 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -46669,8 +46700,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9904 - call $~lib/rt/__allocArray + i32.const 10160 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -46682,8 +46713,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 9952 - call $~lib/rt/__allocArray + i32.const 10208 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -46697,8 +46728,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 10000 - call $~lib/rt/__allocArray + i32.const 10256 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -46722,8 +46753,8 @@ i32.const 10 i32.const 1 i32.const 64 - i32.const 10048 - call $~lib/rt/__allocArray + i32.const 10304 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> @@ -46772,8 +46803,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -46787,8 +46818,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -46926,7 +46957,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -46953,7 +46984,7 @@ local.get $6 i32.ne if - i32.const 10144 + i32.const 10400 i32.const 3 local.get $3 f64.convert_i32_s @@ -46968,7 +46999,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -47014,8 +47045,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47029,8 +47060,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -47154,8 +47185,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47169,8 +47200,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -47291,8 +47322,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47306,8 +47337,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -47431,8 +47462,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47446,8 +47477,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -47562,8 +47593,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47577,8 +47608,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -47650,8 +47681,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47665,8 +47696,8 @@ call $~lib/typedarray/Uint16Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -47837,8 +47868,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10096 - call $~lib/rt/__allocArray + i32.const 10352 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -47850,8 +47881,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10192 - call $~lib/rt/__allocArray + i32.const 10448 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -47863,8 +47894,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10240 - call $~lib/rt/__allocArray + i32.const 10496 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -47878,8 +47909,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10288 - call $~lib/rt/__allocArray + i32.const 10544 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -47903,8 +47934,8 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10336 - call $~lib/rt/__allocArray + i32.const 10592 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> @@ -47948,8 +47979,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -47963,8 +47994,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -48041,7 +48072,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -48068,7 +48099,7 @@ local.get $6 i32.ne if - i32.const 10448 + i32.const 10704 i32.const 3 local.get $3 f64.convert_i32_s @@ -48083,7 +48114,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -48129,8 +48160,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -48144,8 +48175,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -48269,8 +48300,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -48284,8 +48315,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -48406,8 +48437,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -48421,8 +48452,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -48546,8 +48577,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -48561,8 +48592,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -48682,8 +48713,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -48697,8 +48728,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -48818,8 +48849,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -48833,8 +48864,8 @@ call $~lib/typedarray/Int32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49005,8 +49036,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10384 - call $~lib/rt/__allocArray + i32.const 10640 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -49018,8 +49049,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10496 - call $~lib/rt/__allocArray + i32.const 10752 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -49031,8 +49062,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10560 - call $~lib/rt/__allocArray + i32.const 10816 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -49046,8 +49077,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10624 - call $~lib/rt/__allocArray + i32.const 10880 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -49071,8 +49102,8 @@ i32.const 10 i32.const 2 i32.const 16 - i32.const 10688 - call $~lib/rt/__allocArray + i32.const 10944 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> @@ -49116,8 +49147,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -49131,8 +49162,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49222,7 +49253,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -49249,7 +49280,7 @@ local.get $6 i32.ne if - i32.const 10816 + i32.const 11072 i32.const 3 local.get $3 f64.convert_i32_s @@ -49264,7 +49295,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -49310,8 +49341,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -49325,8 +49356,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49450,8 +49481,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -49465,8 +49496,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49587,8 +49618,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -49602,8 +49633,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49727,8 +49758,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -49742,8 +49773,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49863,8 +49894,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -49878,8 +49909,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -49999,8 +50030,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -50014,8 +50045,8 @@ call $~lib/typedarray/Uint32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -50186,8 +50217,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10752 - call $~lib/rt/__allocArray + i32.const 11008 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -50199,8 +50230,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10864 - call $~lib/rt/__allocArray + i32.const 11120 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -50212,8 +50243,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10928 - call $~lib/rt/__allocArray + i32.const 11184 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -50227,8 +50258,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 10992 - call $~lib/rt/__allocArray + i32.const 11248 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -50252,8 +50283,8 @@ i32.const 10 i32.const 2 i32.const 66 - i32.const 11056 - call $~lib/rt/__allocArray + i32.const 11312 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> @@ -50302,8 +50333,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -50317,8 +50348,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -50456,7 +50487,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -50483,7 +50514,7 @@ local.get $6 i64.ne if - i32.const 11216 + i32.const 11488 i32.const 3 local.get $3 f64.convert_i32_s @@ -50498,7 +50529,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -50544,8 +50575,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -50559,8 +50590,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -50679,8 +50710,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -50694,8 +50725,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -50768,8 +50799,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -50783,8 +50814,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -50908,8 +50939,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -50923,8 +50954,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -51044,8 +51075,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -51059,8 +51090,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -51180,8 +51211,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -51195,8 +51226,8 @@ call $~lib/typedarray/Int64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -51367,8 +51398,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11120 - call $~lib/rt/__allocArray + i32.const 11376 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -51380,8 +51411,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11264 - call $~lib/rt/__allocArray + i32.const 11536 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -51393,8 +51424,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11360 - call $~lib/rt/__allocArray + i32.const 11648 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -51408,8 +51439,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11456 - call $~lib/rt/__allocArray + i32.const 11760 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -51433,8 +51464,8 @@ i32.const 10 i32.const 3 i32.const 67 - i32.const 11552 - call $~lib/rt/__allocArray + i32.const 11872 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> @@ -51483,8 +51514,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -51498,8 +51529,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -51637,7 +51668,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -51664,7 +51695,7 @@ local.get $6 i64.ne if - i32.const 11744 + i32.const 12096 i32.const 3 local.get $3 f64.convert_i32_s @@ -51679,7 +51710,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -51725,8 +51756,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -51740,8 +51771,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -51860,8 +51891,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -51875,8 +51906,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -51949,8 +51980,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -51964,8 +51995,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -52089,8 +52120,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -52104,8 +52135,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -52225,8 +52256,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -52240,8 +52271,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -52361,8 +52392,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -52376,8 +52407,8 @@ call $~lib/typedarray/Uint64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -52548,8 +52579,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11648 - call $~lib/rt/__allocArray + i32.const 11984 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -52561,8 +52592,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11792 - call $~lib/rt/__allocArray + i32.const 12144 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -52574,8 +52605,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11888 - call $~lib/rt/__allocArray + i32.const 12256 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -52589,8 +52620,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 11984 - call $~lib/rt/__allocArray + i32.const 12368 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -52614,8 +52645,8 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12080 - call $~lib/rt/__allocArray + i32.const 12480 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> @@ -52664,8 +52695,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -52679,8 +52710,8 @@ call $~lib/typedarray/Float32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -52815,7 +52846,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -52842,7 +52873,7 @@ local.get $6 f32.ne if - i32.const 12240 + i32.const 12656 i32.const 3 local.get $3 f64.convert_i32_s @@ -52857,7 +52888,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -52897,8 +52928,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -52912,8 +52943,8 @@ call $~lib/typedarray/Float32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -52985,8 +53016,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -53000,8 +53031,8 @@ call $~lib/typedarray/Float32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -53122,8 +53153,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -53137,8 +53168,8 @@ call $~lib/typedarray/Float32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -53259,8 +53290,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -53274,8 +53305,8 @@ call $~lib/typedarray/Float32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -53396,8 +53427,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -53411,8 +53442,8 @@ call $~lib/typedarray/Float32Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -53584,8 +53615,8 @@ i32.const 10 i32.const 2 i32.const 61 - i32.const 12176 - call $~lib/rt/__allocArray + i32.const 12592 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -53597,8 +53628,8 @@ i32.const 10 i32.const 2 i32.const 61 - i32.const 12288 - call $~lib/rt/__allocArray + i32.const 12704 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -53610,8 +53641,8 @@ i32.const 10 i32.const 2 i32.const 61 - i32.const 12352 - call $~lib/rt/__allocArray + i32.const 12768 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -53635,8 +53666,8 @@ i32.const 10 i32.const 2 i32.const 61 - i32.const 12416 - call $~lib/rt/__allocArray + i32.const 12832 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> @@ -53685,8 +53716,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -53700,8 +53731,8 @@ call $~lib/typedarray/Float64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -53836,7 +53867,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 712 i32.const 3 call $~lib/builtins/abort @@ -53863,7 +53894,7 @@ local.get $6 f64.ne if - i32.const 12576 + i32.const 13008 i32.const 3 local.get $3 f64.convert_i32_s @@ -53876,7 +53907,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 718 i32.const 7 call $~lib/builtins/abort @@ -53921,8 +53952,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -53936,8 +53967,8 @@ call $~lib/typedarray/Float64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -54058,8 +54089,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -54073,8 +54104,8 @@ call $~lib/typedarray/Float64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -54195,8 +54226,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -54210,8 +54241,8 @@ call $~lib/typedarray/Float64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -54332,8 +54363,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -54347,8 +54378,8 @@ call $~lib/typedarray/Float64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -54469,8 +54500,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -54484,8 +54515,8 @@ call $~lib/typedarray/Float64Array#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -54657,8 +54688,8 @@ i32.const 10 i32.const 3 i32.const 62 - i32.const 12480 - call $~lib/rt/__allocArray + i32.const 12896 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -54670,8 +54701,8 @@ i32.const 10 i32.const 3 i32.const 62 - i32.const 12624 - call $~lib/rt/__allocArray + i32.const 13056 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -54683,8 +54714,8 @@ i32.const 10 i32.const 3 i32.const 62 - i32.const 12720 - call $~lib/rt/__allocArray + i32.const 13168 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -54708,8 +54739,8 @@ i32.const 10 i32.const 3 i32.const 62 - i32.const 12816 - call $~lib/rt/__allocArray + i32.const 13280 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> @@ -54759,8 +54790,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -54774,8 +54805,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -54898,8 +54929,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -54913,8 +54944,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -55044,8 +55075,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1774 i32.const 19 call $~lib/builtins/abort @@ -55059,8 +55090,8 @@ call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s if - i32.const 368 - i32.const 432 + i32.const 400 + i32.const 464 i32.const 1775 i32.const 47 call $~lib/builtins/abort @@ -55251,7 +55282,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -55264,7 +55295,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -55279,7 +55310,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -55293,7 +55324,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -55307,7 +55338,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -55321,7 +55352,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 100 i32.const 3 call $~lib/builtins/abort @@ -55343,7 +55374,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -55358,7 +55389,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -55373,7 +55404,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -55387,7 +55418,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -55447,7 +55478,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -55462,7 +55493,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -55477,7 +55508,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -55524,7 +55555,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -55556,7 +55587,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -55570,7 +55601,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -55584,7 +55615,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -55626,15 +55657,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 528 - call $~lib/rt/__allocArray + i32.const 560 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $2 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -55650,15 +55681,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 608 - call $~lib/rt/__allocArray + i32.const 640 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -55674,15 +55705,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 640 - call $~lib/rt/__allocArray + i32.const 672 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -55698,15 +55729,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 672 - call $~lib/rt/__allocArray + i32.const 704 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -55722,15 +55753,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 704 - call $~lib/rt/__allocArray + i32.const 736 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -55754,7 +55785,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -55767,7 +55798,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -55780,7 +55811,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -55790,15 +55821,15 @@ i32.const 3 i32.const 0 i32.const 15 - i32.const 736 - call $~lib/rt/__allocArray + i32.const 768 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -55808,15 +55839,15 @@ i32.const 5 i32.const 0 i32.const 15 - i32.const 768 - call $~lib/rt/__allocArray + i32.const 800 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $9 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -55874,15 +55905,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 800 - call $~lib/rt/__allocArray + i32.const 832 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $1 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -55898,15 +55929,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 848 - call $~lib/rt/__allocArray + i32.const 880 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -55922,15 +55953,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 896 - call $~lib/rt/__allocArray + i32.const 928 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -55946,15 +55977,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 944 - call $~lib/rt/__allocArray + i32.const 976 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 190 i32.const 3 call $~lib/builtins/abort @@ -55970,15 +56001,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 992 - call $~lib/rt/__allocArray + i32.const 1024 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $3 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -56002,7 +56033,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 197 i32.const 3 call $~lib/builtins/abort @@ -56017,7 +56048,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -56032,7 +56063,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -56042,15 +56073,15 @@ i32.const 3 i32.const 2 i32.const 16 - i32.const 1040 - call $~lib/rt/__allocArray + i32.const 1072 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -56060,15 +56091,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1072 - call $~lib/rt/__allocArray + i32.const 1104 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -56133,7 +56164,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -56146,7 +56177,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 223 i32.const 3 call $~lib/builtins/abort @@ -56159,7 +56190,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 224 i32.const 3 call $~lib/builtins/abort @@ -56172,7 +56203,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -56191,7 +56222,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -56204,7 +56235,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -56217,7 +56248,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -56230,7 +56261,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -56249,7 +56280,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -56262,7 +56293,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -56275,7 +56306,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 236 i32.const 3 call $~lib/builtins/abort @@ -56288,7 +56319,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -56340,15 +56371,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1120 - call $~lib/rt/__allocArray + i32.const 1152 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 248 i32.const 3 call $~lib/builtins/abort @@ -56372,15 +56403,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1168 - call $~lib/rt/__allocArray + i32.const 1200 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 250 i32.const 3 call $~lib/builtins/abort @@ -56404,15 +56435,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1216 - call $~lib/rt/__allocArray + i32.const 1248 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 252 i32.const 3 call $~lib/builtins/abort @@ -56436,15 +56467,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1264 - call $~lib/rt/__allocArray + i32.const 1296 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $10 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 254 i32.const 3 call $~lib/builtins/abort @@ -56468,15 +56499,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1312 - call $~lib/rt/__allocArray + i32.const 1344 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $12 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -56500,15 +56531,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1360 - call $~lib/rt/__allocArray + i32.const 1392 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $14 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 258 i32.const 3 call $~lib/builtins/abort @@ -56532,15 +56563,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1408 - call $~lib/rt/__allocArray + i32.const 1440 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $16 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 260 i32.const 3 call $~lib/builtins/abort @@ -56564,15 +56595,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1456 - call $~lib/rt/__allocArray + i32.const 1488 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $18 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 262 i32.const 3 call $~lib/builtins/abort @@ -56596,15 +56627,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1504 - call $~lib/rt/__allocArray + i32.const 1536 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $20 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 264 i32.const 3 call $~lib/builtins/abort @@ -56628,15 +56659,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1552 - call $~lib/rt/__allocArray + i32.const 1584 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $22 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 266 i32.const 3 call $~lib/builtins/abort @@ -56660,15 +56691,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1600 - call $~lib/rt/__allocArray + i32.const 1632 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $24 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 268 i32.const 3 call $~lib/builtins/abort @@ -56692,15 +56723,15 @@ i32.const 5 i32.const 2 i32.const 16 - i32.const 1648 - call $~lib/rt/__allocArray + i32.const 1680 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $26 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -56794,7 +56825,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 282 i32.const 3 call $~lib/builtins/abort @@ -56807,7 +56838,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 283 i32.const 3 call $~lib/builtins/abort @@ -56820,7 +56851,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 284 i32.const 3 call $~lib/builtins/abort @@ -56839,7 +56870,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 287 i32.const 3 call $~lib/builtins/abort @@ -56853,7 +56884,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 288 i32.const 3 call $~lib/builtins/abort @@ -56866,7 +56897,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -56879,7 +56910,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 290 i32.const 3 call $~lib/builtins/abort @@ -56892,7 +56923,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 291 i32.const 3 call $~lib/builtins/abort @@ -56911,7 +56942,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 294 i32.const 3 call $~lib/builtins/abort @@ -56924,7 +56955,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -56937,7 +56968,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 296 i32.const 3 call $~lib/builtins/abort @@ -56950,7 +56981,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 297 i32.const 3 call $~lib/builtins/abort @@ -56967,7 +56998,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 300 i32.const 3 call $~lib/builtins/abort @@ -56981,7 +57012,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -56995,7 +57026,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 302 i32.const 3 call $~lib/builtins/abort @@ -57009,7 +57040,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 303 i32.const 3 call $~lib/builtins/abort @@ -57152,7 +57183,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -57169,7 +57200,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -57192,7 +57223,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -57209,7 +57240,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -57248,7 +57279,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 691 i32.const 3 call $~lib/builtins/abort @@ -57280,7 +57311,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 336 i32.const 695 i32.const 3 call $~lib/builtins/abort @@ -57380,8 +57411,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 12912 - call $~lib/rt/__allocArray + i32.const 13392 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $23 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -57437,8 +57468,8 @@ i32.const 10 i32.const 0 i32.const 63 - i32.const 12944 - call $~lib/rt/__allocArray + i32.const 13424 + call $~lib/rt/__newArray call $~lib/rt/pure/__retain local.tee $20 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> @@ -57491,7 +57522,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -57502,7 +57533,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -57517,7 +57548,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -57534,7 +57565,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -57555,11 +57586,6 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base @@ -57577,14 +57603,14 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 208 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 3a7a9f164b..c32376340f 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -6,22 +6,30 @@ (global $super-inline/foo (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/rt/stub/offset - i32.const 16 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.tee $3 - i32.const 16 + i32.const 28 i32.add local.tee $1 memory.size local.tee $4 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $2 i32.gt_u if @@ -55,22 +63,26 @@ end local.get $1 global.set $~lib/rt/stub/offset + i32.const 28 + i32.store local.get $3 - i32.const 16 + i32.const 4 i32.sub local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $0 + i32.const 0 i32.store offset=8 local.get $1 - i32.const 0 + local.get $0 i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $3 + i32.const 16 + i32.add ) (func $super-inline/Foo#constructor (param $0 i32) (result i32) local.get $0 @@ -78,11 +90,11 @@ local.get $0 else i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new end ) (func $~start - i32.const 1024 + i32.const 1036 global.set $~lib/rt/stub/offset i32.const 0 call $super-inline/Foo#constructor @@ -97,7 +109,7 @@ br_if $__inlined_func$super-inline/Foo#a@virtual end i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $super-inline/Foo#constructor drop ) diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index 798dcad8b1..c017798825 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -12,6 +12,19 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -23,6 +36,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -66,60 +89,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 @@ -130,7 +160,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -145,7 +175,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -162,12 +192,16 @@ ) (func $start:super-inline global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.optimized.wat index 03c10321f8..c8fd94551a 100644 --- a/tests/compiler/switch.optimized.wat +++ b/tests/compiler/switch.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") + (data (i32.const 1036) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $switch/doSwitch (param $0 i32) (result i32) @@ -85,7 +85,7 @@ call $switch/doSwitch if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -97,7 +97,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -109,7 +109,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -121,7 +121,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -131,7 +131,7 @@ call $switch/doSwitch if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -141,7 +141,7 @@ call $switch/doSwitch if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -153,7 +153,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -165,7 +165,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -177,7 +177,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -187,7 +187,7 @@ call $switch/doSwitch if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -197,7 +197,7 @@ call $switch/doSwitchDefaultOmitted if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -209,7 +209,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -221,7 +221,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -233,7 +233,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -243,7 +243,7 @@ call $switch/doSwitchDefaultOmitted if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -255,7 +255,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -267,7 +267,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -279,7 +279,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -291,7 +291,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -303,7 +303,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -315,7 +315,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -327,7 +327,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -339,7 +339,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -351,7 +351,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -363,7 +363,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -375,7 +375,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -387,7 +387,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 86 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat index bfd0176246..72611e21c3 100644 --- a/tests/compiler/switch.untouched.wat +++ b/tests/compiler/switch.untouched.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00") + (data (i32.const 12) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/tablebase.optimized.wat b/tests/compiler/tablebase.optimized.wat index f786312187..7b607afbef 100644 --- a/tests/compiler/tablebase.optimized.wat +++ b/tests/compiler/tablebase.optimized.wat @@ -3,18 +3,18 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00 ") - (data (i32.const 1056) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") + (data (i32.const 1036) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00 ") + (data (i32.const 1068) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $~start - i32.const 1040 + i32.const 1056 i32.load i32.const 32 i32.ne if i32.const 0 - i32.const 1072 + i32.const 1088 i32.const 6 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/tablebase.untouched.wat b/tests/compiler/tablebase.untouched.wat index f62ea6e078..2098c7891a 100644 --- a/tests/compiler/tablebase.untouched.wat +++ b/tests/compiler/tablebase.untouched.wat @@ -4,8 +4,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") - (data (i32.const 48) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00") + (data (i32.const 12) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") + (data (i32.const 44) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00") (table $0 33 funcref) (elem (i32.const 32) $tablebase/foo) (global $tablebase/staticFunction i32 (i32.const 32)) diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index c17e8c24be..80c2500fbf 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -3,23 +3,23 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1056) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\003\004") - (data (i32.const 1088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") - (data (i32.const 1136) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") - (data (i32.const 1168) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\003\004\005") - (data (i32.const 1200) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") - (data (i32.const 1248) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\005\006") - (data (i32.const 1280) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\006\007") - (data (i32.const 1312) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") - (data (i32.const 1344) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1392) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1036) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1068) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\002\003\004") + (data (i32.const 1100) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") + (data (i32.const 1148) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") + (data (i32.const 1196) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\003\004\005") + (data (i32.const 1228) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") + (data (i32.const 1276) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\005\006") + (data (i32.const 1308) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\006\007") + (data (i32.const 1340) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") + (data (i32.const 1388) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1452) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (export "memory" (memory $0)) (export "doThrow" (func $throw/doThrow)) (start $~start) (func $throw/doThrow - i32.const 1328 - i32.const 1152 + i32.const 1360 + i32.const 1168 i32.const 3 i32.const 3 call $~lib/builtins/abort @@ -39,8 +39,8 @@ i32.const 10 i32.gt_s if - i32.const 1216 - i32.const 1152 + i32.const 1248 + i32.const 1168 i32.const 26 i32.const 7 call $~lib/builtins/abort diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index 65d079b038..41ff819b92 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.untouched.wat @@ -5,20 +5,20 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 48) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\003\004\00") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00") - (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00") - (data (i32.const 160) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\003\004\005\00") - (data (i32.const 192) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00") - (data (i32.const 240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\005\006\00") - (data (i32.const 272) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\006\007\00") - (data (i32.const 304) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00") - (data (i32.const 336) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 384) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 12) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 44) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\002\003\004\00") + (data (i32.const 76) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00") + (data (i32.const 124) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00") + (data (i32.const 172) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\003\004\005\00") + (data (i32.const 204) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00") + (data (i32.const 252) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\005\006\00") + (data (i32.const 284) "\06\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\006\007\00") + (data (i32.const 316) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00") + (data (i32.const 364) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 428) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 432)) + (global $~lib/heap/__heap_base i32 (i32.const 480)) (export "memory" (memory $0)) (export "doThrow" (func $throw/doThrow)) (start $~start) @@ -28,7 +28,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -50,7 +50,7 @@ call $~lib/builtins/abort unreachable end - i32.const 176 + i32.const 192 local.set $3 local.get $1 call $~lib/rt/pure/__release @@ -84,16 +84,16 @@ local.get $0 i32.gt_s if - i32.const 176 + i32.const 192 local.set $5 - i32.const 208 + i32.const 224 i32.const 144 i32.const 26 i32.const 7 call $~lib/builtins/abort unreachable end - i32.const 256 + i32.const 272 local.set $5 local.get $4 call $~lib/rt/pure/__release @@ -102,7 +102,7 @@ br $while-continue|0 end end - i32.const 288 + i32.const 304 local.set $6 local.get $1 call $~lib/rt/pure/__release @@ -119,7 +119,7 @@ (local $0 i32) i32.const 32 local.set $0 - i32.const 320 + i32.const 336 i32.const 144 i32.const 3 i32.const 3 @@ -151,8 +151,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 277 + i32.const 448 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -166,11 +166,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -178,8 +178,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 279 + i32.const 448 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -232,29 +232,29 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 292 + i32.const 448 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -364,8 +364,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 205 + i32.const 448 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -381,8 +381,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 207 + i32.const 448 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -390,7 +390,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -412,7 +412,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -422,7 +422,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -439,7 +439,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -476,8 +476,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 228 + i32.const 448 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -487,7 +487,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -497,7 +497,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -529,11 +529,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -541,8 +541,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 243 + i32.const 448 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -550,7 +550,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -559,8 +559,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 244 + i32.const 448 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -618,8 +618,8 @@ i32.eqz if i32.const 0 - i32.const 400 - i32.const 260 + i32.const 448 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -643,15 +643,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -708,12 +708,9 @@ i32.store offset=4 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -752,7 +749,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -763,7 +760,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -778,7 +775,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -795,7 +792,7 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -833,14 +830,14 @@ i32.eqz if i32.const 0 - i32.const 352 + i32.const 384 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index b51c195178..4c1b5c651c 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -6,23 +6,23 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data (i32.const 1056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data (i32.const 1088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") - (data (i32.const 1136) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") - (data (i32.const 1168) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") - (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1232) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1296) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") + (data (i32.const 1036) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") + (data (i32.const 1068) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") + (data (i32.const 1100) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 1148) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") + (data (i32.const 1196) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") + (data (i32.const 1244) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 1276) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 1308) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1340) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") (global $~started (mut i32) (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -137,232 +137,238 @@ (func $start:typeof (local $0 i32) (local $1 i32) - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1152 - i32.const 1152 + i32.const 1168 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1152 - i32.const 1152 + i32.const 1168 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1184 - i32.const 1184 + i32.const 1216 + i32.const 1216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1248 - i32.const 1248 + i32.const 1296 + i32.const 1296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1184 - i32.const 1184 + i32.const 1216 + i32.const 1216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1248 - i32.const 1248 + i32.const 1296 + i32.const 1296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1152 - i32.const 1152 + i32.const 1168 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 + i32.const 1420 memory.size local.tee $1 i32.const 16 i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.tee $0 i32.gt_u if local.get $1 - i32.const 66911 + i32.const 66955 local.get $0 i32.sub i32.const -65536 @@ -387,73 +393,76 @@ end end end - i32.const 1344 - i32.const 16 + i32.const 1388 + i32.const 28 i32.store - i32.const 1348 - i32.const 1 + i32.const 1392 + i32.const 0 + i32.store + i32.const 1396 + i32.const 0 i32.store - i32.const 1352 + i32.const 1400 i32.const 4 i32.store - i32.const 1356 + i32.const 1404 i32.const 0 i32.store - i32.const 1072 - i32.const 1072 + i32.const 1088 + i32.const 1088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1152 - i32.const 1152 + i32.const 1168 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1312 + i32.const 1360 + i32.const 1360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1312 + i32.const 1360 + i32.const 1360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1312 + i32.const 1360 + i32.const 1360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1120 i32.const 48 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index bb5d963873..85f680e84b 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -1,21 +1,21 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data (i32.const 48) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") - (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00") - (data (i32.const 160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00") - (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 224) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 288) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") + (data (i32.const 12) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") + (data (i32.const 44) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") + (data (i32.const 76) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 124) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00") + (data (i32.const 172) "\0e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00") + (data (i32.const 220) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00") + (data (i32.const 252) "\0c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") + (data (i32.const 284) "\08\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 316) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") (table $0 2 funcref) (elem (i32.const 1) $start:typeof~anonymous|0) (global $typeof/SomeNamespace.a i32 (i32.const 1)) @@ -25,13 +25,13 @@ (global $typeof/f (mut f32) (f32.const 1)) (global $typeof/I (mut i64) (i64.const 1)) (global $typeof/F (mut f64) (f64.const 1)) - (global $typeof/s (mut i32) (i32.const 208)) - (global $typeof/fn (mut i32) (i32.const 272)) + (global $typeof/s (mut i32) (i32.const 240)) + (global $typeof/fn (mut i32) (i32.const 304)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $typeof/c (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 324)) + (global $~lib/heap/__heap_base i32 (i32.const 356)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) @@ -42,9 +42,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -250,6 +250,19 @@ (func $start:typeof~anonymous|0 nop ) + (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + ) (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) (local $1 i32) (local $2 i32) @@ -261,6 +274,16 @@ local.get $1 i32.const 16 i32.shl + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub local.set $2 local.get $0 local.get $2 @@ -304,60 +327,67 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.gt_u if unreachable end global.get $~lib/rt/stub/offset - i32.const 16 + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 i32.add local.set $2 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 + call $~lib/rt/stub/computeSize + local.set $3 local.get $2 - local.get $5 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $3 + i32.store local.get $2 + ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + i32.const 0 i32.store offset=8 - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 local.get $2 + i32.const 16 + i32.add ) (func $typeof/SomeClass#constructor (param $0 i32) (result i32) local.get $0 @@ -365,7 +395,7 @@ if i32.const 0 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__new call $~lib/rt/stub/__retain local.set $0 end @@ -440,8 +470,8 @@ end i32.const 1 drop - i32.const 176 - i32.const 176 + i32.const 192 + i32.const 192 call $~lib/string/String.__eq i32.eqz if @@ -506,10 +536,10 @@ call $~lib/builtins/abort unreachable end - i32.const 208 - drop - i32.const 240 i32.const 240 + drop + i32.const 272 + i32.const 272 call $~lib/string/String.__eq i32.eqz if @@ -522,8 +552,8 @@ end global.get $typeof/b drop - i32.const 176 - i32.const 176 + i32.const 192 + i32.const 192 call $~lib/string/String.__eq i32.eqz if @@ -592,8 +622,8 @@ end global.get $typeof/s drop - i32.const 240 - i32.const 240 + i32.const 272 + i32.const 272 call $~lib/string/String.__eq i32.eqz if @@ -619,12 +649,16 @@ unreachable end global.get $~lib/heap/__heap_base + i32.const 4 + i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + i32.const 4 + i32.sub global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -657,8 +691,8 @@ call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 + i32.const 336 + i32.const 336 call $~lib/string/String.__eq i32.eqz if @@ -671,8 +705,8 @@ end global.get $typeof/c drop - i32.const 304 - i32.const 304 + i32.const 336 + i32.const 336 call $~lib/string/String.__eq i32.eqz if @@ -685,8 +719,8 @@ end global.get $typeof/c drop - i32.const 304 - i32.const 304 + i32.const 336 + i32.const 336 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 1f8d5069ad..f5df6dc100 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -7,16 +7,16 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s") + (data (i32.const 1036) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") + (data (i32.const 1084) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s") (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/abort/test)) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) @@ -250,8 +250,8 @@ i32.const 12 i64.const 9071471065260641 i64.store - i32.const 1040 - i32.const 1040 + i32.const 1056 + i32.const 1056 call $~lib/string/String#get:length i32.const 19 call $~lib/string/String.UTF8.encodeUnsafe @@ -264,8 +264,8 @@ i32.const 4 i32.add local.tee $3 - i32.const 1088 - i32.const 1088 + i32.const 1104 + i32.const 1104 call $~lib/string/String#get:length local.get $3 call $~lib/string/String.UTF8.encodeUnsafe diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index 44144138d2..9bdec78124 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -7,8 +7,8 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") + (data (i32.const 60) "\1a\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) (export "_start" (func $~start)) (export "memory" (memory $0)) @@ -18,9 +18,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 1d8aa7d06c..cd9cbcdff7 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -10,7 +10,7 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 1024) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 1036) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) @@ -77,12 +77,12 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1040 + i32.const 1056 local.set $2 local.get $0 i32.const 1 i32.shl - i32.const 1040 + i32.const 1056 i32.add local.set $3 i32.const 23 @@ -308,7 +308,7 @@ i32.const 19 i32.const 544106784 i32.store - i32.const 1036 + i32.const 1052 i32.load i32.const 1 i32.shr_u diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index 1dec2cce96..587657f47e 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -12,7 +12,7 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 16) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 12) "\18\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) @@ -120,9 +120,9 @@ ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.shr_u ) diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index 264ec7194d..86a1f150aa 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1,11 +1,10 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -13,11 +12,11 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") - (data (i32.const 1064) "\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_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") + (data (i32.const 12) "\16\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") (data (i32.const 56) "\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_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1024) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") + (data (i32.const 1084) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1148) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1212) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (global $while/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $while/testNested @@ -51,7 +50,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 29 i32.const 5 call $~lib/builtins/abort @@ -62,7 +61,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 30 i32.const 5 call $~lib/builtins/abort @@ -74,7 +73,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -85,7 +84,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -96,7 +95,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -118,8 +117,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 277 + i32.const 1232 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -128,18 +127,18 @@ i32.const -4 i32.and local.tee $2 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $2 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1072 - i32.const 279 + i32.const 1232 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -181,28 +180,28 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 292 + i32.const 1232 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $4 local.get $1 - i32.load offset=16 + i32.load offset=4 local.tee $5 if local.get $5 local.get $4 - i32.store offset=20 + i32.store offset=8 end local.get $4 if local.get $4 local.get $5 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -273,8 +272,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 205 + i32.const 1232 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -287,14 +286,14 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 207 + i32.const 1232 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -310,14 +309,14 @@ local.get $4 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const -4 i32.and i32.add local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -332,7 +331,7 @@ local.tee $4 i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $1 i32.load @@ -360,8 +359,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 228 + i32.const 1232 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -369,14 +368,14 @@ local.get $7 i32.const -4 i32.and - i32.const 16 + i32.const 4 i32.add local.get $4 i32.const -4 i32.and i32.add local.tee $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if (result i32) local.get $0 @@ -405,33 +404,33 @@ i32.const -4 i32.and local.tee $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u i32.const 0 local.get $3 - i32.const 16 + i32.const 12 i32.ge_u select i32.eqz if i32.const 0 - i32.const 1072 - i32.const 243 + i32.const 1232 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable end local.get $3 local.get $1 - i32.const 16 + i32.const 4 i32.add i32.add local.get $5 i32.ne if i32.const 0 - i32.const 1072 - i32.const 244 + i32.const 1232 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -478,8 +477,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 260 + i32.const 1232 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -497,15 +496,15 @@ local.set $4 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $4 - i32.store offset=20 + i32.store offset=8 local.get $4 if local.get $4 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.get $3 @@ -543,54 +542,52 @@ (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 local.get $1 local.get $2 - i32.le_u - select - select - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1072 - i32.const 386 - i32.const 5 + i32.const 1232 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and local.get $0 i32.load offset=1568 - local.tee $3 + local.tee $2 if local.get $1 - local.get $3 - i32.const 16 + local.get $2 + i32.const 4 i32.add i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 396 + i32.const 1232 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $3 + local.get $2 i32.load local.set $4 local.get $1 @@ -606,18 +603,17 @@ i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 408 + i32.const 1232 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $2 local.get $1 i32.sub local.tee $2 - i32.const 48 + i32.const 20 i32.lt_u if return @@ -627,23 +623,24 @@ i32.const 2 i32.and local.get $2 - i32.const 32 + i32.const 8 i32.sub + local.tee $2 i32.const 1 i32.or i32.or i32.store local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 - i32.store offset=20 - local.get $1 + i32.store offset=8 local.get $2 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const 16 - i32.sub local.tee $2 i32.const 2 i32.store @@ -654,93 +651,84 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1264 + i32.const 0 + i32.store + i32.const 2832 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.sub - memory.grow + i32.const 2 + i32.shl + i32.const 1264 + i32.add i32.const 0 - i32.lt_s - else + i32.store offset=4 i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1264 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT end - local.get $1 + i32.const 1264 + i32.const 2836 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1264 + global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -777,8 +765,8 @@ i32.eqz if i32.const 0 - i32.const 1072 - i32.const 351 + i32.const 1232 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -803,110 +791,82 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1072 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $1 + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 local.get $1 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort unreachable end end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.lt_u if i32.const 0 - i32.const 1072 - i32.const 520 + i32.const 1232 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -915,17 +875,17 @@ local.tee $2 i32.const -4 i32.and - i32.const 16 + i32.const 28 i32.sub local.tee $3 - i32.const 32 + i32.const 16 i32.ge_u if local.get $1 local.get $2 i32.const 2 i32.and - i32.const 16 + i32.const 28 i32.or i32.store local.get $1 @@ -933,7 +893,7 @@ i32.add local.tee $2 local.get $3 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -948,7 +908,7 @@ i32.and i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.tee $0 local.get $1 @@ -973,16 +933,39 @@ (local $0 i32) (local $1 i32) (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $1 i32.const 16 i32.add local.tee $0 - i32.const 1216 + i32.const 1264 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub local.tee $1 i32.load offset=4 @@ -997,7 +980,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1168 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1014,7 +997,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1168 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1025,11 +1008,11 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1216 + i32.const 1264 i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1060,7 +1043,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -1071,7 +1054,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -1086,7 +1069,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -1118,7 +1101,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -1129,7 +1112,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -1153,7 +1136,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -1177,7 +1160,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -1212,7 +1195,7 @@ local.get $2 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -1249,7 +1232,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -1258,7 +1241,7 @@ local.get $1 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -1305,7 +1288,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -1314,7 +1297,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -1328,7 +1311,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -1372,7 +1355,7 @@ i32.ne if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -1381,7 +1364,7 @@ local.get $0 if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 172 i32.const 3 call $~lib/builtins/abort @@ -1395,7 +1378,7 @@ i32.eqz if i32.const 0 - i32.const 1040 + i32.const 1056 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -1450,7 +1433,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1168 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1464,21 +1447,21 @@ block $switch$1$default block $switch$1$case$4 local.get $0 - i32.const 8 + i32.const 12 i32.add i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default end local.get $0 - i32.load offset=16 + i32.load offset=20 local.tee $1 if local.get $1 - i32.const 1216 + i32.const 1264 i32.ge_u if local.get $1 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -1492,7 +1475,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1168 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1513,7 +1496,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1168 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 3a4ab62ee3..dffe50133f 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -1,26 +1,24 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 16) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00") + (data (i32.const 60) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 124) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 188) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $while/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 208)) + (global $~lib/heap/__heap_base i32 (i32.const 240)) (export "memory" (memory $0)) (start $~start) (func $while/testSimple @@ -499,8 +497,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 277 + i32.const 208 + i32.const 272 i32.const 14 call $~lib/builtins/abort unreachable @@ -514,11 +512,11 @@ i32.const 1 drop local.get $3 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -526,8 +524,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 279 + i32.const 208 + i32.const 274 i32.const 14 call $~lib/builtins/abort unreachable @@ -580,29 +578,29 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 292 + i32.const 208 + i32.const 287 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=16 + i32.load offset=4 local.set $6 local.get $1 - i32.load offset=20 + i32.load offset=8 local.set $7 local.get $6 if local.get $6 local.get $7 - i32.store offset=20 + i32.store offset=8 end local.get $7 if local.get $7 local.get $6 - i32.store offset=16 + i32.store offset=4 end local.get $1 local.get $0 @@ -712,8 +710,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 205 + i32.const 208 + i32.const 200 i32.const 14 call $~lib/builtins/abort unreachable @@ -729,8 +727,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 207 + i32.const 208 + i32.const 202 i32.const 14 call $~lib/builtins/abort unreachable @@ -738,7 +736,7 @@ local.get $1 local.set $3 local.get $3 - i32.const 16 + i32.const 4 i32.add local.get $3 i32.load @@ -760,7 +758,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $5 i32.const 3 @@ -770,7 +768,7 @@ i32.add local.set $3 local.get $3 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -787,7 +785,7 @@ local.get $1 local.set $6 local.get $6 - i32.const 16 + i32.const 4 i32.add local.get $6 i32.load @@ -824,8 +822,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 228 + i32.const 208 + i32.const 223 i32.const 16 call $~lib/builtins/abort unreachable @@ -835,7 +833,7 @@ i32.const -1 i32.xor i32.and - i32.const 16 + i32.const 4 i32.add local.get $2 i32.const 3 @@ -845,7 +843,7 @@ i32.add local.set $7 local.get $7 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u if local.get $0 @@ -877,11 +875,11 @@ i32.const 1 drop local.get $8 - i32.const 16 + i32.const 12 i32.ge_u if (result i32) local.get $8 - i32.const 1073741808 + i32.const 1073741820 i32.lt_u else i32.const 0 @@ -889,8 +887,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 243 + i32.const 208 + i32.const 238 i32.const 14 call $~lib/builtins/abort unreachable @@ -898,7 +896,7 @@ i32.const 1 drop local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $8 i32.add @@ -907,8 +905,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 244 + i32.const 208 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -966,8 +964,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 260 + i32.const 208 + i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -991,15 +989,15 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $1 local.get $11 - i32.store offset=20 + i32.store offset=8 local.get $11 if local.get $11 local.get $1 - i32.store offset=16 + i32.store offset=4 end local.get $0 local.set $12 @@ -1068,31 +1066,33 @@ local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 64 - i32.const 386 - i32.const 5 + i32.const 208 + i32.const 380 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 local.get $0 local.set $3 local.get $3 @@ -1106,14 +1106,14 @@ drop local.get $1 local.get $4 - i32.const 16 + i32.const 4 i32.add i32.ge_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 396 + i32.const 208 + i32.const 387 i32.const 16 call $~lib/builtins/abort unreachable @@ -1145,8 +1145,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 408 + i32.const 208 + i32.const 400 i32.const 5 call $~lib/builtins/abort unreachable @@ -1157,10 +1157,10 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add - i32.const 16 + i32.const 4 i32.add i32.lt_u if @@ -1168,9 +1168,9 @@ return end local.get $6 - i32.const 16 - i32.const 1 - i32.shl + i32.const 2 + i32.const 4 + i32.mul i32.sub local.set $7 local.get $1 @@ -1186,15 +1186,15 @@ i32.store local.get $8 i32.const 0 - i32.store offset=16 + i32.store offset=4 local.get $8 i32.const 0 - i32.store offset=20 + i32.store offset=8 local.get $1 - local.get $6 + i32.const 4 + i32.add + local.get $7 i32.add - i32.const 16 - i32.sub local.set $4 local.get $4 i32.const 0 @@ -1213,7 +1213,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) (local $2 i32) @@ -1226,127 +1226,146 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/rt/tlsf/ROOT + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 + memory.size + local.set $1 local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end local.get $1 - local.set $0 - local.get $0 + i32.sub + memory.grow i32.const 0 - i32.store - local.get $0 - local.set $5 + i32.lt_s + else i32.const 0 - local.set $4 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 local.get $5 + i32.const 23 + i32.lt_u + local.set $4 local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 + if + local.get $3 + local.set $8 local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 local.get $8 + i32.const 16 + i32.lt_u + local.set $7 local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1572 + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 i32.add i32.const 15 i32.add @@ -1354,49 +1373,24 @@ i32.const -1 i32.xor i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT + i32.const 4 + i32.sub end - local.get $0 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 - i32.const 1073741808 + i32.const 1073741820 i32.ge_u if - i32.const 112 - i32.const 64 + i32.const 80 + i32.const 208 i32.const 461 i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select + call $~lib/rt/tlsf/computeSize ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1419,7 +1413,7 @@ local.set $3 else local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if (result i32) local.get $1 @@ -1473,8 +1467,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 338 + i32.const 208 + i32.const 333 i32.const 14 call $~lib/builtins/abort unreachable @@ -1538,8 +1532,8 @@ i32.eqz if i32.const 0 - i32.const 64 - i32.const 351 + i32.const 208 + i32.const 346 i32.const 18 call $~lib/builtins/abort unreachable @@ -1595,7 +1589,7 @@ i32.const 0 drop local.get $1 - i32.const 536870904 + i32.const 536870910 i32.lt_u if local.get $1 @@ -1613,11 +1607,11 @@ memory.size local.set $2 local.get $1 - i32.const 16 + i32.const 4 local.get $2 i32.const 16 i32.shl - i32.const 16 + i32.const 4 i32.sub local.get $0 local.set $3 @@ -1681,14 +1675,16 @@ i32.const 1 drop local.get $2 + i32.const 4 + i32.add i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 64 - i32.const 365 + i32.const 208 + i32.const 360 i32.const 14 call $~lib/builtins/abort unreachable @@ -1702,8 +1698,8 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 + i32.const 4 + i32.const 12 i32.add i32.ge_u if @@ -1715,14 +1711,14 @@ i32.or i32.store local.get $1 - i32.const 16 + i32.const 4 i32.add local.get $2 i32.add local.set $5 local.get $5 local.get $4 - i32.const 16 + i32.const 4 i32.sub i32.const 1 i32.or @@ -1741,7 +1737,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1753,7 +1749,7 @@ local.get $1 local.set $5 local.get $5 - i32.const 16 + i32.const 4 i32.add local.get $5 i32.load @@ -1770,136 +1766,117 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.eqz if - global.get $~lib/gc/gc.auto + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 208 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable end end i32.const 1 drop - local.get $4 + local.get $3 i32.load i32.const 3 i32.const -1 i32.xor i32.and - local.get $3 + local.get $2 i32.ge_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 520 + i32.const 208 + i32.const 500 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 local.get $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $4 local.get $3 + local.get $2 call $~lib/rt/tlsf/prepareBlock i32.const 0 drop - local.get $4 + local.get $3 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 80 + i32.const 144 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 i32.const 16 i32.add ) @@ -1924,7 +1901,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 144 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1947,7 +1924,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 144 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1960,7 +1937,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/increment end @@ -1972,7 +1949,7 @@ if i32.const 0 i32.const 3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__new call $~lib/rt/pure/__retain local.set $0 end @@ -1984,7 +1961,7 @@ i32.gt_u if local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement end @@ -2391,18 +2368,10 @@ (func $~start call $start:while ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 - i32.load - local.set $2 local.get $1 - local.get $2 + i32.load i32.const 1 i32.or i32.store @@ -2441,7 +2410,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 144 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2452,7 +2421,7 @@ i32.eq if local.get $0 - i32.const 16 + i32.const 20 i32.add i32.const 1 call $~lib/rt/__visit_members @@ -2467,7 +2436,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 144 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2484,7 +2453,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 144 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -2522,14 +2491,14 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 144 i32.const 69 i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + i32.const 20 i32.sub call $~lib/rt/pure/decrement ) From 13545af416652d8092a3c406b07d474847331eee Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 15 Oct 2020 07:02:16 +0200 Subject: [PATCH 02/10] fix stub memory grow / bootstrap --- std/assembly/rt/stub.ts | 2 +- tests/bootstrap/index.ts | 2 +- tests/compiler/call-super.optimized.wat | 62 +++-- tests/compiler/call-super.untouched.wat | 4 - tests/compiler/class-implements.optimized.wat | 4 +- tests/compiler/class-implements.untouched.wat | 4 - .../compiler/class-overloading.optimized.wat | 4 +- .../compiler/class-overloading.untouched.wat | 4 - tests/compiler/class.optimized.wat | 61 +++-- tests/compiler/class.untouched.wat | 4 - tests/compiler/constructor.optimized.wat | 62 +++-- tests/compiler/constructor.untouched.wat | 4 - tests/compiler/empty.optimized.wat | 4 +- tests/compiler/empty.untouched.wat | 4 - tests/compiler/exports.optimized.wat | 4 +- tests/compiler/exports.untouched.wat | 4 - .../exportstar-rereexport.optimized.wat | 4 +- .../exportstar-rereexport.untouched.wat | 4 - .../compiler/extends-recursive.untouched.wat | 4 - tests/compiler/features/simd.optimized.wat | 4 +- tests/compiler/features/simd.untouched.wat | 4 - .../field-initialization.optimized.wat | 63 +++-- .../field-initialization.untouched.wat | 4 - tests/compiler/function-call.optimized.wat | 4 +- tests/compiler/function-call.untouched.wat | 4 - .../function-expression.optimized.wat | 4 +- .../function-expression.untouched.wat | 4 - tests/compiler/getter-call.optimized.wat | 4 +- tests/compiler/getter-call.untouched.wat | 4 - tests/compiler/infer-array.optimized.wat | 62 +++-- tests/compiler/infer-array.untouched.wat | 4 - tests/compiler/inlining.optimized.wat | 63 +++-- tests/compiler/inlining.untouched.wat | 4 - tests/compiler/instanceof-class.optimized.wat | 4 +- tests/compiler/instanceof-class.untouched.wat | 4 - tests/compiler/new.optimized.wat | 4 +- tests/compiler/new.untouched.wat | 4 - tests/compiler/number.optimized.wat | 61 +++-- tests/compiler/number.untouched.wat | 4 - .../optional-typeparameters.optimized.wat | 4 +- .../optional-typeparameters.untouched.wat | 4 - tests/compiler/reexport.optimized.wat | 4 +- tests/compiler/reexport.untouched.wat | 4 - tests/compiler/rereexport.optimized.wat | 4 +- tests/compiler/rereexport.untouched.wat | 4 - tests/compiler/resolve-access.optimized.wat | 63 +++-- tests/compiler/resolve-access.untouched.wat | 4 - tests/compiler/resolve-binary.optimized.wat | 63 +++-- tests/compiler/resolve-binary.untouched.wat | 4 - .../resolve-elementaccess.optimized.wat | 63 +++-- .../resolve-elementaccess.untouched.wat | 4 - .../resolve-function-expression.optimized.wat | 155 ++++++------ .../resolve-function-expression.untouched.wat | 4 - tests/compiler/resolve-nested.optimized.wat | 4 +- tests/compiler/resolve-nested.untouched.wat | 4 - tests/compiler/resolve-new.optimized.wat | 4 +- tests/compiler/resolve-new.untouched.wat | 4 - .../resolve-propertyaccess.optimized.wat | 63 +++-- .../resolve-propertyaccess.untouched.wat | 4 - tests/compiler/resolve-unary.optimized.wat | 63 +++-- tests/compiler/resolve-unary.untouched.wat | 4 - tests/compiler/retain-release.optimized.wat | 63 +++-- tests/compiler/retain-release.untouched.wat | 4 - tests/compiler/rt/instanceof.optimized.wat | 4 +- tests/compiler/rt/instanceof.untouched.wat | 4 - tests/compiler/rt/stub-realloc.optimized.wat | 4 +- tests/compiler/rt/stub-realloc.untouched.wat | 4 - tests/compiler/runtime-stub.optimized.wat | 4 +- tests/compiler/runtime-stub.untouched.wat | 4 - tests/compiler/std/date.optimized.wat | 4 +- tests/compiler/std/date.untouched.wat | 4 - tests/compiler/std/new.optimized.wat | 4 +- tests/compiler/std/new.untouched.wat | 4 - .../std/operator-overloading.optimized.wat | 4 +- .../std/operator-overloading.untouched.wat | 4 - tests/compiler/std/static-array.optimized.wat | 4 +- tests/compiler/std/static-array.untouched.wat | 4 - tests/compiler/std/symbol.optimized.wat | 63 +++-- tests/compiler/std/symbol.untouched.wat | 4 - tests/compiler/super-inline.optimized.wat | 4 +- tests/compiler/super-inline.untouched.wat | 4 - tests/compiler/typeof.optimized.wat | 4 +- tests/compiler/typeof.untouched.wat | 4 - tests/compiler/wasi/trace.optimized.wat | 225 +++++++++--------- tests/compiler/wasi/trace.untouched.wat | 4 - 85 files changed, 596 insertions(+), 931 deletions(-) diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index c9194fc725..08f24148c1 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -9,7 +9,7 @@ import { AL_MASK, OBJECT, OBJECT_OVERHEAD, BLOCK_MAXSIZE, BLOCK_OVERHEAD, BLOCK, function maybeGrowMemory(newOffset: usize): void { // assumes newOffset is aligned var pagesBefore = memory.size(); - var maxOffset = (((pagesBefore << 16) + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; + var maxOffset = ((pagesBefore << 16) + AL_MASK) & ~AL_MASK; if (newOffset > maxOffset) { let pagesNeeded = (((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16); let pagesWanted = max(pagesBefore, pagesNeeded); // double memory diff --git a/tests/bootstrap/index.ts b/tests/bootstrap/index.ts index d0f23f8acb..934941c687 100644 --- a/tests/bootstrap/index.ts +++ b/tests/bootstrap/index.ts @@ -44,7 +44,7 @@ async function test(build: string): Promise { const cachedStrings = new Map(); function cachedString(text: string): number { if (cachedStrings.has(text)) return cachedStrings.get(text); - var ptr = asc.__retain(asc.__allocString(text)); + var ptr = asc.__retain(asc.__newString(text)); cachedStrings.set(text, ptr); return ptr; } diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 1514c65000..c02f429ea5 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,7 +1,6 @@ (module (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -9,13 +8,23 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -26,32 +35,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -59,16 +66,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -77,26 +84,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -111,7 +103,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index a0ecc4b7ca..7d381a930d 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -37,16 +37,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index 1473b902e8..d3b1b7cc93 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -31,12 +31,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index dc5e1cd767..4a7c64f13a 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -46,16 +46,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index b3ab299498..52ec50b398 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -41,12 +41,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 93515a6fda..e4e4e38da3 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -53,16 +53,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index fe63dbd971..37a8bba3ec 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -31,13 +31,23 @@ i32.store8 offset=6 local.get $0 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -48,32 +58,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -81,16 +89,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -99,26 +107,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -133,7 +126,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index ec27a5f77c..26cf1a1785 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -152,16 +152,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 25c7319716..d6010eda56 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,18 +1,27 @@ (module (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 0) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -23,32 +32,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -56,16 +63,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -74,26 +81,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -108,7 +100,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index f2db128d9c..167c040be2 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -45,16 +45,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index e825eec674..65aa2744e1 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -43,12 +43,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index beef1b5c87..d90e48ff8b 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -55,16 +55,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 8e0dfa1991..24c1fc8467 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -78,12 +78,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index defbf2ea37..77e1ffa2c0 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -95,16 +95,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index 19d7f332a8..81784c7bc2 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -58,12 +58,10 @@ local.tee $3 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index 33a9f23870..c1118198f1 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -76,16 +76,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index a4a6eed7eb..dc0ae5516e 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -39,16 +39,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index c4095ccdd6..5832ddf3b3 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -13,12 +13,10 @@ local.tee $1 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $0 i32.gt_u if diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 1a1cc5ff0b..430dcc453e 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -44,16 +44,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 4a35360876..7afd43c6d0 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -18,13 +18,23 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -35,32 +45,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -68,16 +76,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -86,26 +94,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -120,7 +113,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 1f2dc26617..b6740c7684 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -47,16 +47,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index 8f2611b350..6b3b185d26 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -98,12 +98,10 @@ local.tee $1 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $0 i32.gt_u if diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index 0cf36390c2..d5db5293a9 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -73,16 +73,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index f93c1e8e7e..585bf34ed0 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -236,12 +236,10 @@ local.tee $1 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $0 i32.gt_u if diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index c29029d4be..d5af1174aa 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -251,16 +251,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index cf8074fdfb..b61037a143 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -30,12 +30,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index ac707d90f6..287ae5f41d 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -39,16 +39,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index 05eb447152..ddf4887d25 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -2,7 +2,6 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -41,13 +40,23 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -58,32 +67,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -91,16 +98,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -109,26 +116,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -143,7 +135,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 4f46334652..e7d081304f 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -59,16 +59,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 52d237d02d..b40c8a157a 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) @@ -20,13 +20,23 @@ (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -37,32 +47,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -70,16 +78,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -88,26 +96,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -122,7 +115,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index d27683dea5..346615e537 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -245,16 +245,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index f93fe021e7..55c8f44eb1 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -29,12 +29,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 024abc31cc..91e8fe45d6 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -41,16 +41,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index 603059eb39..fc5c605759 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -23,12 +23,10 @@ local.tee $3 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 002a4e080f..8e034e0110 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -37,16 +37,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 77a67f2d74..92842bebc1 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -80,13 +80,23 @@ i32.lt_u select ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/stub/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 16 + i32.add + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -96,33 +106,31 @@ global.get $~lib/rt/stub/offset i32.const 4 i32.add - local.tee $4 - local.get $0 + local.tee $3 + local.get $1 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $6 i32.add - local.tee $0 + local.tee $1 memory.size - local.tee $2 + local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $2 i32.gt_u if - local.get $2 - local.get $0 + local.get $4 local.get $1 + local.get $2 i32.sub i32.const 65535 i32.add @@ -130,16 +138,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 + local.get $4 local.get $2 - local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -148,26 +156,11 @@ end end end - local.get $0 + local.get $1 global.set $~lib/rt/stub/offset - local.get $5 + local.get $6 i32.store - local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $2 + local.get $3 i32.const 4 i32.sub local.tee $1 @@ -182,7 +175,7 @@ local.get $1 local.get $0 i32.store offset=16 - local.get $2 + local.get $3 i32.const 16 i32.add ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 5923fffd46..9b9a188733 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -143,16 +143,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 1c94c1ed56..96dc54cba7 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -23,12 +23,10 @@ local.tee $3 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 09f1467000..7339277737 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -44,16 +44,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index d547ddeb2a..d3e16366c3 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -112,12 +112,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index d6ac07354f..2e9b8d4104 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -126,16 +126,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 19d7f332a8..81784c7bc2 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -58,12 +58,10 @@ local.tee $3 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index d732c1e4d8..3028b97564 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -76,16 +76,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 030ee40bef..62e4f2b896 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -23,13 +23,23 @@ (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -40,32 +50,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -73,16 +81,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -91,26 +99,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -125,7 +118,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index bef239d0a3..b6053c4b44 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -59,16 +59,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index cfd3376fa2..0cae5922a2 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1,9 +1,9 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) @@ -209,13 +209,23 @@ i32.lt_u select ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -226,32 +236,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -259,16 +267,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -277,26 +285,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -311,7 +304,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index f6163adf63..3fc06f6c93 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -374,16 +374,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index fc87addff1..8e1d40fe17 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -46,13 +46,23 @@ (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -63,32 +73,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -96,16 +104,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -114,26 +122,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -148,7 +141,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 9789a946b9..623f841921 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -85,16 +85,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 147c6322b9..b57e50e03f 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -34,86 +34,16 @@ i32.const 42 i32.add ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $5 - i32.add - local.tee $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $5 - i32.store - local.get $4 - ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $0 i32.eqz if @@ -123,7 +53,7 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $4 + local.tee $5 if i32.const 0 local.get $0 @@ -170,9 +100,9 @@ i32.const 100000 i32.lt_u select - local.get $4 + local.get $5 i32.add - local.tee $5 + local.tee $6 i32.const 1 i32.shl local.tee $2 @@ -184,8 +114,71 @@ local.get $2 i32.const 16 i32.add - call $~lib/rt/stub/__alloc + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add local.tee $3 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $9 + i32.add + local.tee $1 + memory.size + local.tee $7 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $4 + i32.gt_u + if + local.get $7 + local.get $1 + local.get $4 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $4 + local.get $7 + local.get $4 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $1 + global.set $~lib/rt/stub/offset + local.get $9 + i32.store + local.get $3 i32.const 4 i32.sub local.tee $1 @@ -215,10 +208,10 @@ i32.div_u local.set $0 local.get $2 - local.get $5 + local.get $6 i32.const 1 i32.sub - local.tee $5 + local.tee $6 i32.const 1 i32.shl i32.add @@ -229,7 +222,7 @@ local.get $0 br_if $do-continue|0 end - local.get $4 + local.get $5 if local.get $1 i32.const 45 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 5cb82b0c6e..c211d1470e 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -125,16 +125,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 75c9263ab5..2de1acb600 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -35,12 +35,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index c6255fcc28..ab6cedc4b1 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -60,16 +60,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index 111186b46e..0a33c8b8c8 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -22,12 +22,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index e73a03b5c5..250959d50f 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -35,16 +35,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 8a5833beb3..9bbbc137cf 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -26,13 +26,23 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -43,32 +53,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -76,16 +84,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -94,26 +102,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -128,7 +121,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 1027a06dd8..8a4ccabd7f 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -126,16 +126,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 1206935c14..bba1750db5 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -31,13 +31,23 @@ (global $resolve-unary/foo (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -48,32 +58,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -81,16 +89,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -99,26 +107,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -133,7 +126,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index eb71c704c1..59bfe1cacf 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -122,16 +122,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index 3672992f90..8461371248 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -2,8 +2,8 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -53,13 +53,23 @@ (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect)) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -70,32 +80,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -103,16 +111,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -121,26 +129,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -155,7 +148,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index 36de4ac47f..aa8a949d84 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -81,16 +81,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 67df8e3d84..64c70a99ff 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -35,12 +35,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 4f1c463246..0a0056031d 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -49,16 +49,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index b08cc1814a..7fb80472bc 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -46,12 +46,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index ce870fa5b4..dd5102bda7 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -56,16 +56,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index a8ae58810b..fa34bc66bb 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -41,12 +41,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 5e7a0bc657..8bb051b002 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -51,16 +51,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index c8a63c49fb..5fdf447dde 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -94,12 +94,10 @@ local.tee $1 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $0 i32.gt_u if diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 42c127eb99..8171edb600 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -46,16 +46,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index c5ad1924ce..2f3f991f33 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -11,12 +11,10 @@ local.tee $1 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $0 i32.gt_u if diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 6b27933195..ce79a6f3eb 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -37,16 +37,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index d68cfa0702..8517eb637a 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -93,12 +93,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 111939e816..fa6747a03e 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -106,16 +106,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index f36f23d229..f43ced4d16 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -70,12 +70,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index dbc707d6cc..bef1fa090f 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -96,16 +96,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 8690f6eec0..b30c054363 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1,7 +1,7 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -65,13 +65,23 @@ end local.get $0 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -82,32 +92,30 @@ i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $5 + local.tee $7 i32.add - local.tee $0 - memory.size local.tee $2 + memory.size + local.tee $5 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub - local.tee $1 + local.tee $3 i32.gt_u if + local.get $5 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -115,16 +123,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $2 - local.get $1 + local.tee $3 + local.get $5 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -133,26 +141,11 @@ end end end - local.get $0 + local.get $2 global.set $~lib/rt/stub/offset - local.get $5 + local.get $7 i32.store local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 i32.const 4 i32.sub local.tee $2 @@ -167,7 +160,7 @@ local.get $2 local.get $0 i32.store offset=16 - local.get $3 + local.get $4 i32.const 16 i32.add ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 6829affd47..83f2fbf09e 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -113,16 +113,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 47d18d8fe9..daba6f212c 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -24,12 +24,10 @@ local.tee $4 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $2 i32.gt_u if diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index c017798825..c0f2740446 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -36,16 +36,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 54c0b3972c..abcd09a4d6 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -357,12 +357,10 @@ local.tee $1 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $0 i32.gt_u if diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 85f680e84b..cf7582c56f 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -274,16 +274,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index b4bbcea4a5..496a78e31b 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -108,80 +108,6 @@ end local.get $1 ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $5 - i32.add - local.tee $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $5 - i32.store - local.get $4 - ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -1685,73 +1611,138 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) call $~lib/string/String.UTF8.byteLength - local.tee $6 + local.tee $7 i32.const 56 - local.get $6 + local.get $7 i32.const 56 i32.gt_s select i32.const 13 i32.add - call $~lib/rt/stub/__alloc local.tee $6 - i32.const 8 + i32.const 1073741820 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset + i32.const 4 i32.add - local.tee $8 + local.tee $7 + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 + i32.sub + local.tee $11 i32.add - local.set $7 + local.tee $6 + memory.size + local.tee $8 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $9 + i32.gt_u + if + local.get $8 + local.get $6 + local.get $9 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $9 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end local.get $6 - local.get $7 + global.set $~lib/rt/stub/offset + local.get $11 i32.store local.get $7 + local.get $7 + i32.const 8 + i32.add + local.tee $8 + i32.const 4 + i32.add + local.tee $6 + i32.store + local.get $6 i64.const 9071406388179572 i64.store - local.get $6 + local.get $7 i32.const 7 i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop - local.get $6 + local.get $7 i32.const 1056 i32.const 1052 i32.load i32.const 1 i32.shr_u - local.get $7 + local.get $6 call $~lib/string/String.UTF8.encodeUnsafe i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 if (result i32) - local.get $7 + local.get $6 i32.const 32 i32.store8 - local.get $6 local.get $7 + local.get $6 i32.const 1 i32.add - local.tee $7 - local.get $7 + local.tee $6 + local.get $6 local.get $1 call $~lib/util/number/dtoa_buffered - local.get $7 + local.get $6 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write @@ -1760,18 +1751,18 @@ i32.const 1 i32.gt_s if - local.get $6 - local.get $7 local.get $7 + local.get $6 + local.get $6 local.get $2 call $~lib/util/number/dtoa_buffered - local.get $7 + local.get $6 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write @@ -1780,18 +1771,18 @@ i32.const 2 i32.gt_s if - local.get $6 - local.get $7 local.get $7 + local.get $6 + local.get $6 local.get $3 call $~lib/util/number/dtoa_buffered - local.get $7 + local.get $6 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write @@ -1800,18 +1791,18 @@ i32.const 3 i32.gt_s if - local.get $6 - local.get $7 local.get $7 + local.get $6 + local.get $6 local.get $4 call $~lib/util/number/dtoa_buffered - local.get $7 + local.get $6 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write @@ -1820,18 +1811,18 @@ i32.const 4 i32.gt_s if - local.get $6 - local.get $7 local.get $7 + local.get $6 + local.get $6 local.get $5 call $~lib/util/number/dtoa_buffered - local.get $7 + local.get $6 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write @@ -1840,29 +1831,29 @@ end end end - local.get $7 + local.get $6 i32.const 1 i32.sub else - local.get $7 + local.get $6 end i32.const 10 i32.store8 - local.get $6 + local.get $7 i32.const 1 i32.store offset=4 i32.const 2 - local.get $6 + local.get $7 i32.const 1 local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop - local.get $6 + local.get $7 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $6 + local.get $7 select i32.eqz if @@ -1870,8 +1861,8 @@ unreachable end global.get $~lib/rt/stub/offset - local.get $6 - local.get $6 + local.get $7 + local.get $7 i32.const 4 i32.sub local.tee $0 diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index 337de4e92d..c852a9a825 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -174,16 +174,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 From cba3d43e859b30b852377c2d1db7450f098408d6 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 15 Oct 2020 07:23:04 +0200 Subject: [PATCH 03/10] comments --- std/assembly/rt/common.ts | 2 +- std/assembly/rt/tlsf.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/std/assembly/rt/common.ts b/std/assembly/rt/common.ts index 0a98ac12a3..ade9a622b6 100644 --- a/std/assembly/rt/common.ts +++ b/std/assembly/rt/common.ts @@ -52,7 +52,7 @@ // ├───────────────────────────────────────────────────────────────┤ // │ RT size │ -4 // ╞>ptr═══════════════════════════════════════════════════════════╡ -// │ ... │ ref +// │ ... │ @unmanaged export class OBJECT extends BLOCK { /** Garbage collector info. */ gcInfo: u32; diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index 57fbc54868..4b9febd97c 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -38,7 +38,7 @@ import { onalloc, onresize, onmove, onfree } from "./rtrace"; // [07]: < 32K [19]: < 128M // [08]: < 64K [20]: < 256M // [09]: < 128K [21]: < 512M -// [10]: < 256K [22]: <= 1G - OFFSET +// [10]: < 256K [22]: <= 1G - OVERHEAD // [11]: < 512K // VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead From c59a8ef84fd19fb37801ca721b8b662696d20fdc Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 16 Oct 2020 10:37:22 +0200 Subject: [PATCH 04/10] add heap namespace, don't export mm with rt --- lib/loader/tests/build/default.wasm | Bin 10075 -> 10031 bytes lib/loader/tests/build/legacy.wasm | Bin 10075 -> 10031 bytes std/assembly/heap.ts | 28 + std/assembly/index.d.ts | 12 + std/assembly/rt/index-full.ts | 1 - std/assembly/rt/index-stub.ts | 1 - std/assembly/rt/tlsf.ts | 6 + tests/compiler/heap.json | 5 + tests/compiler/heap.optimized.wat | 1373 ++++++++ tests/compiler/heap.ts | 5 + tests/compiler/heap.untouched.wat | 2898 +++++++++++++++++ .../implicit-getter-setter.optimized.wat | 265 +- .../implicit-getter-setter.untouched.wat | 156 +- tests/compiler/rc/rereturn.optimized.wat | 265 +- tests/compiler/rc/rereturn.untouched.wat | 158 +- tests/compiler/resolve-ternary.optimized.wat | 263 +- tests/compiler/resolve-ternary.untouched.wat | 156 +- tests/compiler/rt/stub-realloc.optimized.wat | 131 +- tests/compiler/rt/stub-realloc.untouched.wat | 145 +- tests/compiler/runtime-full.optimized.wat | 265 +- tests/compiler/runtime-full.untouched.wat | 158 +- tests/compiler/runtime-stub.optimized.wat | 100 +- tests/compiler/runtime-stub.untouched.wat | 110 +- tests/compiler/std/array.optimized.wat | 32 - tests/compiler/std/typedarray.optimized.wat | 8 - 25 files changed, 5286 insertions(+), 1255 deletions(-) create mode 100644 tests/compiler/heap.json create mode 100644 tests/compiler/heap.optimized.wat create mode 100644 tests/compiler/heap.ts create mode 100644 tests/compiler/heap.untouched.wat diff --git a/lib/loader/tests/build/default.wasm b/lib/loader/tests/build/default.wasm index 2fa01d76eaa454bff0b801577fe9ba3e363fe5fa..8a56ff32cc7cca0fe50e7b5bf5b5825a4f953ec9 100644 GIT binary patch delta 1368 zcmZWoO>7%Q6rP#gwVjNeteyBLPHN9)-PCEDpEhk%LKAzGwrMD&;zt4`gtc-uiBsF_ ztT&|*5+)K{5QkPHQNg7-a6m$|Qe72LFMvSe01{k_L?al>8dBBkuiiiTzBb~k*cHd!fJmWGwO>IYf1%*o zau*HAooAJ*DBdBrW!tLTC?Vd$snh*|ish}0T8oQlK$*2%C8on_F5BKzb-i-daojpe zwOsXoy3%4BN1qt%k-0KZs<%=v)$A%VyQR12RO_C*Ui2In9SBK}1Hm?6rmK}vcItN9 zaZu#Q(D`gfeZBImXL+R}IvOmlSk-0wNxQo2t)Ow=70Z<*XFA&(kg=rr{6(u=mhNNz zMaOfkqK%G=56Lf$laY$ESX$aRUv?~S;y8C*YXeQvc8^9&)slx!@0}K1r-mL2?Z#ZY zW?LSb>e@XQol4DeZS;6=p#Vy`yS!ept6qJV*o6*1MjTT-(|Ip9x2fRH2E*B2f(*iO zlEJcePR(<~x3DnPaRTN!^+joJsShGIG#qTmJiMRuu9lL~PqdGvsrjx*^Q-TGG@8FC zP04>J`X0gl_Dx2f+P^#&Sda;?1t!5X?*;DSD1*xUTZN}|geam6=|1|UXmolq@z2hy z(p2bg_^x<9*ebFfdTo4lGL7Lh+#b}mJ&B-BlIvb5fIij;9^GS)rN_HR2O7K zwEb-lpjzmlK!9l^cg=e`#R)XyceR6+Iv}#K@}SQ zw{Ke9NT!G5hOC=3FsuoNsUMCEuhOH4 zM-3nIF=dq_rZMHRJ|Z?!Co-dw<0%rP5nwA}pBag%IhbS6FNc}G4!^5w=h}0*jrd=PM`Swy;0)E;9|pR(7Z#Dh zdE6&n8cdHu?pFxf-pZBlH%%!8E?J@i`5f&6W-v}!BDLhi?ZH0r#b67%Q6rMNxV<+REbsQ(Lo!aA{7AH;9^oO(rLcD5|CX^-;tq>Ilv$8jdo!FbM zH>E+Ue1IDu5sg$%hzfB)LI|lwLWoOLgv13-oahCFRH*_k9I4ds#+x7nm$x(Teeav^ z{p{z<50>9sO)M=Eq6Psd(I|kX5mlwi?i*iU`$n76n|9N2cPI%|D%R$vQzfCkO2xJP zb6l@fR$bdBgIcB1vR@|>@jn4F%=Nv+6A}(#zPit+q{)q5+xnqrs--txsCD8abj| zuv}%xKwDU|y_wc_^P=OpZIbP|+W&TOu?LA43UP^*fqJ_KUD>i*q!^Xns?%zF?snC4 zT#^Y(kAp#<@Mxrm*mT;q?>Hv1^w`2!UwgZG)w8^Mm7EAw*R9r?{i5Ak^VZ2J{ifwg zk#qh20V`Tn^gtD>m+sSnn&Y`v)h1`e+w@^)dZ6jl>Z>~on~vq3Ic>VGwL{J`zlD?a zR^21d9NucKvqfgY2Qk;)vMrB18#%aFo#vM1+T^*xN(C!5-L>te-SXN8!j}31KulmT z*MEO*@d<_g4u?{lk{mT5#nIfDSIZ_bxlq+9;9^?6j&@i5DYmOYs3Speh`6m~F!q7= zCEAzun`nQ~kD&cSucCb^aBuK^3IRWd(<_H*$>1`E>%nutyB`I=fW*)EocX`}H0ph&T(Rq?f|4KsRU{*bm7x&w}Q96E{kiEs|>O86Aa ziXX#RM^}&h7KBLm&!JBs7UfV#tjID`oNzD<@#)Biuf^CnDG+2cG?Y+CEUBFWK`miK z#I%2o1I$z#ER7KfDM#61j*l=5b`@xc6Z7}|{e9)KTBcBPIz{>2`bj`|Jb|9 z;}92LC10TkjHgQSGn+~#hEWQO^&UeiWF6cvo);Ub?AS<7ic9AJZIS~E;FUvzO%RGW z*%Zw*jD#^Fx~cDCh&D+MPzz2PGoBLfq|;Cm=IAga#a_AuxIJ*SV?mW)|7{bn-NZ$qXFJeaI zGRhxf!S8#+1Y=QrmK(`o{0T7!dU0aRGR@yca@pTRoZQ3Q5~RdbK0ArnZwbypa{0q! zjG>kiRk55hi=Z-GLM%mI#qInpT4sV3-U`xkuVa_Qn}xi{7N>!Tj|*inS}ciB(db?) HKA?XCtH(S) diff --git a/lib/loader/tests/build/legacy.wasm b/lib/loader/tests/build/legacy.wasm index 2fa01d76eaa454bff0b801577fe9ba3e363fe5fa..8a56ff32cc7cca0fe50e7b5bf5b5825a4f953ec9 100644 GIT binary patch delta 1368 zcmZWoO>7%Q6rP#gwVjNeteyBLPHN9)-PCEDpEhk%LKAzGwrMD&;zt4`gtc-uiBsF_ ztT&|*5+)K{5QkPHQNg7-a6m$|Qe72LFMvSe01{k_L?al>8dBBkuiiiTzBb~k*cHd!fJmWGwO>IYf1%*o zau*HAooAJ*DBdBrW!tLTC?Vd$snh*|ish}0T8oQlK$*2%C8on_F5BKzb-i-daojpe zwOsXoy3%4BN1qt%k-0KZs<%=v)$A%VyQR12RO_C*Ui2In9SBK}1Hm?6rmK}vcItN9 zaZu#Q(D`gfeZBImXL+R}IvOmlSk-0wNxQo2t)Ow=70Z<*XFA&(kg=rr{6(u=mhNNz zMaOfkqK%G=56Lf$laY$ESX$aRUv?~S;y8C*YXeQvc8^9&)slx!@0}K1r-mL2?Z#ZY zW?LSb>e@XQol4DeZS;6=p#Vy`yS!ept6qJV*o6*1MjTT-(|Ip9x2fRH2E*B2f(*iO zlEJcePR(<~x3DnPaRTN!^+joJsShGIG#qTmJiMRuu9lL~PqdGvsrjx*^Q-TGG@8FC zP04>J`X0gl_Dx2f+P^#&Sda;?1t!5X?*;DSD1*xUTZN}|geam6=|1|UXmolq@z2hy z(p2bg_^x<9*ebFfdTo4lGL7Lh+#b}mJ&B-BlIvb5fIij;9^GS)rN_HR2O7K zwEb-lpjzmlK!9l^cg=e`#R)XyceR6+Iv}#K@}SQ zw{Ke9NT!G5hOC=3FsuoNsUMCEuhOH4 zM-3nIF=dq_rZMHRJ|Z?!Co-dw<0%rP5nwA}pBag%IhbS6FNc}G4!^5w=h}0*jrd=PM`Swy;0)E;9|pR(7Z#Dh zdE6&n8cdHu?pFxf-pZBlH%%!8E?J@i`5f&6W-v}!BDLhi?ZH0r#b67%Q6rMNxV<+REbsQ(Lo!aA{7AH;9^oO(rLcD5|CX^-;tq>Ilv$8jdo!FbM zH>E+Ue1IDu5sg$%hzfB)LI|lwLWoOLgv13-oahCFRH*_k9I4ds#+x7nm$x(Teeav^ z{p{z<50>9sO)M=Eq6Psd(I|kX5mlwi?i*iU`$n76n|9N2cPI%|D%R$vQzfCkO2xJP zb6l@fR$bdBgIcB1vR@|>@jn4F%=Nv+6A}(#zPit+q{)q5+xnqrs--txsCD8abj| zuv}%xKwDU|y_wc_^P=OpZIbP|+W&TOu?LA43UP^*fqJ_KUD>i*q!^Xns?%zF?snC4 zT#^Y(kAp#<@Mxrm*mT;q?>Hv1^w`2!UwgZG)w8^Mm7EAw*R9r?{i5Ak^VZ2J{ifwg zk#qh20V`Tn^gtD>m+sSnn&Y`v)h1`e+w@^)dZ6jl>Z>~on~vq3Ic>VGwL{J`zlD?a zR^21d9NucKvqfgY2Qk;)vMrB18#%aFo#vM1+T^*xN(C!5-L>te-SXN8!j}31KulmT z*MEO*@d<_g4u?{lk{mT5#nIfDSIZ_bxlq+9;9^?6j&@i5DYmOYs3Speh`6m~F!q7= zCEAzun`nQ~kD&cSucCb^aBuK^3IRWd(<_H*$>1`E>%nutyB`I=fW*)EocX`}H0ph&T(Rq?f|4KsRU{*bm7x&w}Q96E{kiEs|>O86Aa ziXX#RM^}&h7KBLm&!JBs7UfV#tjID`oNzD<@#)Biuf^CnDG+2cG?Y+CEUBFWK`miK z#I%2o1I$z#ER7KfDM#61j*l=5b`@xc6Z7}|{e9)KTBcBPIz{>2`bj`|Jb|9 z;}92LC10TkjHgQSGn+~#hEWQO^&UeiWF6cvo);Ub?AS<7ic9AJZIS~E;FUvzO%RGW z*%Zw*jD#^Fx~cDCh&D+MPzz2PGoBLfq|;Cm=IAga#a_AuxIJ*SV?mW)|7{bn-NZ$qXFJeaI zGRhxf!S8#+1Y=QrmK(`o{0T7!dU0aRGR@yca@pTRoZQ3Q5~RdbK0ArnZwbypa{0q! zjG>kiRk55hi=Z-GLM%mI#qInpT4sV3-U`xkuVa_Qn}xi{7N>!Tj|*inS}ciB(db?) HKA?XCtH(S) diff --git a/std/assembly/heap.ts b/std/assembly/heap.ts index 4640442d60..90c64a60d7 100644 --- a/std/assembly/heap.ts +++ b/std/assembly/heap.ts @@ -1,3 +1,31 @@ // @ts-ignore: decorator @builtin export declare const __heap_base: usize; + +/** Heap memory interface. */ +export namespace heap { + + /** Allocates a chunk of memory of at least the specified size. */ + // @ts-ignore: decorator + @unsafe export function alloc(size: usize): usize { + return __alloc(size); + } + + /** Reallocates a chunk of memory to have at least the specified size. */ + // @ts-ignore: decorator + @unsafe export function realloc(ptr: usize, size: usize): usize { + return __realloc(ptr, size); + } + + /** Frees a chunk of memory. */ + // @ts-ignore: decorator + @unsafe export function free(ptr: usize): void { + __free(ptr); + } + + /** Resets the heap. Stub/none runtime only. */ + // @ts-ignore: decorator + @unsafe export function reset(): void { + __reset(); + } +} diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 3b9d63aa26..0e8e554b22 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1242,6 +1242,18 @@ declare namespace memory { export function data(values: T[], align?: i32): usize; } +/** Heap memory interface. */ +declare namespace heap { + /** Allocates a chunk of memory of at least the specified size. */ + export function alloc(size: usize): usize; + /** Reallocates a chunk of memory to have at least the specified size. */ + export function realloc(ptr: usize, size: usize): usize; + /** Frees a chunk of memory. */ + export function free(ptr: usize): void; + /** Resets the heap. Stub/none runtime only. */ + export function reset(): void; +} + /** Garbage collector interface. */ declare namespace gc { /** Performs a full garbage collection cycle. */ diff --git a/std/assembly/rt/index-full.ts b/std/assembly/rt/index-full.ts index aec272c4cd..7d60cfe165 100644 --- a/std/assembly/rt/index-full.ts +++ b/std/assembly/rt/index-full.ts @@ -1,3 +1,2 @@ -export { __alloc, __realloc, __free } from "rt/tlsf"; export { __new, __renew, __retain, __release, __collect } from "rt/pure"; export { __rtti_base } from "rt"; diff --git a/std/assembly/rt/index-stub.ts b/std/assembly/rt/index-stub.ts index 6618a8ee0c..e9b706ec74 100644 --- a/std/assembly/rt/index-stub.ts +++ b/std/assembly/rt/index-stub.ts @@ -1,3 +1,2 @@ -export { __alloc, __realloc, __free } from "rt/stub"; export { __new, __renew, __retain, __release, __collect, __reset } from "rt/stub"; export { __rtti_base } from "rt"; diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index 4b9febd97c..d5eda1a666 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -591,3 +591,9 @@ export function __free(ptr: usize): void { if (!ROOT) initialize(); freeBlock(ROOT, checkUsedBlock(ptr)); } + +// @ts-ignore: decorator +@global @unsafe +export function __reset(): void { + throw new Error("not implemented"); +} diff --git a/tests/compiler/heap.json b/tests/compiler/heap.json new file mode 100644 index 0000000000..11b43d4296 --- /dev/null +++ b/tests/compiler/heap.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime half" + ] +} \ No newline at end of file diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat new file mode 100644 index 0000000000..e77a8887f0 --- /dev/null +++ b/tests/compiler/heap.optimized.wat @@ -0,0 +1,1373 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $heap/ptr (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "heap.alloc" (func $~lib/heap/heap.alloc)) + (export "heap.realloc" (func $~lib/heap/heap.realloc)) + (export "heap.free" (func $~lib/heap/heap.free)) + (export "heap.reset" (func $~lib/heap/heap.reset)) + (start $~start) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 272 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $2 + i32.const 1073741820 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 12 + i32.ge_u + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 274 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + local.set $3 + end + local.get $2 + i32.const 16 + i32.lt_u + i32.const 0 + local.get $3 + i32.const 23 + i32.lt_u + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 287 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $4 + local.get $1 + i32.load offset=4 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=8 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $1 + local.get $4 + local.get $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 200 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 202 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.const 1073741820 + i32.lt_u + if + local.get $0 + local.get $5 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + local.get $4 + i32.const 3 + i32.and + i32.or + local.tee $4 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + i32.load + local.set $2 + end + end + local.get $4 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $3 + i32.load + local.tee $7 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 223 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const -4 + i32.and + i32.const 4 + i32.add + local.get $4 + i32.const -4 + i32.and + i32.add + local.tee $8 + i32.const 1073741820 + i32.lt_u + if (result i32) + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $8 + local.get $7 + i32.const 3 + i32.and + i32.or + local.tee $4 + i32.store + local.get $3 + else + local.get $1 + end + local.set $1 + end + local.get $5 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $4 + i32.const -4 + i32.and + local.tee $3 + i32.const 1073741820 + i32.lt_u + i32.const 0 + local.get $3 + i32.const 12 + i32.ge_u + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 238 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $5 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $3 + i32.const 256 + i32.lt_u + if + local.get $3 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.tee $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $3 + local.get $4 + i32.const 7 + i32.sub + local.set $6 + end + local.get $3 + i32.const 16 + i32.lt_u + i32.const 0 + local.get $6 + i32.const 23 + i32.lt_u + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 255 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + if + local.get $4 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $6 + i32.shl + i32.or + i32.store + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $3 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 380 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const -16 + i32.and + local.get $0 + i32.load offset=1568 + local.tee $2 + if + local.get $1 + local.get $2 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 387 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $2 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 400 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1216 + i32.const 0 + i32.store + i32.const 2784 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 1216 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 1216 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 1216 + i32.const 2788 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1216 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.ge_u + if + i32.const 1120 + i32.const 1056 + i32.const 461 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $0 + i32.const 12 + i32.le_u + select + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + i32.const 31 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 23 + i32.lt_u + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 333 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 346 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1056 + i32.const 360 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + call $~lib/memory/memory.copy + local.get $1 + i32.const 1216 + i32.ge_u + if + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $2 + ) + (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 1216 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + block $folding-inner0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $5 + i32.const -4 + i32.and + local.tee $3 + i32.le_u + br_if $folding-inner0 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $7 + i32.const 1 + i32.and + if + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $4 + i32.ge_u + if + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $5 + i32.const 3 + i32.and + i32.or + i32.store + br $folding-inner0 + end + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $2 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock + end + end + local.get $0 + i32.const 4 + i32.add + ) + (func $~lib/heap/heap.free (param $0 i32) + local.get $0 + i32.const 1216 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/heap/heap.reset + i32.const 1184 + i32.const 1056 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~start + i32.const 16 + call $~lib/heap/heap.alloc + global.set $heap/ptr + global.get $heap/ptr + i32.const 32 + call $~lib/heap/heap.realloc + global.set $heap/ptr + global.get $heap/ptr + call $~lib/heap/heap.free + ) +) diff --git a/tests/compiler/heap.ts b/tests/compiler/heap.ts new file mode 100644 index 0000000000..8a9dc39a1e --- /dev/null +++ b/tests/compiler/heap.ts @@ -0,0 +1,5 @@ +export { heap }; + +var ptr = heap.alloc(16); +ptr = heap.realloc(ptr, 32); +heap.free(ptr); diff --git a/tests/compiler/heap.untouched.wat b/tests/compiler/heap.untouched.wat new file mode 100644 index 0000000000..3300a70cb3 --- /dev/null +++ b/tests/compiler/heap.untouched.wat @@ -0,0 +1,2898 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") + (table $0 1 funcref) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $heap/ptr (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/heap/__heap_base i32 (i32.const 192)) + (export "memory" (memory $0)) + (export "heap.alloc" (func $~lib/heap/heap.alloc)) + (export "heap.realloc" (func $~lib/heap/heap.realloc)) + (export "heap.free" (func $~lib/heap/heap.free)) + (export "heap.reset" (func $~lib/heap/heap.reset)) + (start $~start) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 272 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741820 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 274 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 287 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $6 + local.get $1 + i32.load offset=8 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=8 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + local.get $7 + i32.eqz + if + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $9 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 200 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 202 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741820 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load + local.set $6 + local.get $6 + i32.load + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 223 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741820 + i32.lt_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + local.get $3 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $6 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + i32.const 1 + drop + local.get $8 + i32.const 12 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741820 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 238 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + i32.const 1 + drop + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 255 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $11 + i32.store offset=8 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 380 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 387 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 400 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + memory.size + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.ge_u + if + i32.const 96 + i32.const 32 + i32.const 461 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 333 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 346 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 360 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 498 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 500 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/tlsf/__alloc + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + call $~lib/memory/memory.copy + local.get $1 + global.get $~lib/heap/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock + end + local.get $3 + ) + (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $5 + local.get $3 + local.get $5 + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.load + local.set $8 + local.get $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $7 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $6 + i32.or + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $1 + return + end + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + ) + (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/__realloc + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/heap/heap.free (param $0 i32) + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $start:heap + i32.const 16 + call $~lib/heap/heap.alloc + global.set $heap/ptr + global.get $heap/ptr + i32.const 32 + call $~lib/heap/heap.realloc + global.set $heap/ptr + global.get $heap/ptr + call $~lib/heap/heap.free + ) + (func $~lib/rt/tlsf/__reset + i32.const 160 + i32.const 32 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/heap/heap.reset + call $~lib/rt/tlsf/__reset + ) + (func $~start + call $start:heap + ) +) diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 65d3ef3902..af02500819 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1,26 +1,23 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1216) "\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 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -47,7 +44,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -67,7 +64,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -110,7 +107,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -202,7 +199,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -216,7 +213,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -289,7 +286,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -344,7 +341,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -359,7 +356,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -407,7 +404,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -477,7 +474,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -505,7 +502,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -533,7 +530,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -665,8 +662,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 1120 i32.const 1056 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -740,7 +737,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -792,7 +789,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -827,7 +824,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -969,7 +966,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -984,7 +981,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -999,17 +996,52 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $2 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) @@ -1036,7 +1068,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -1253,13 +1285,44 @@ end local.get $2 ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 + i32.const 16 + i32.sub + local.set $0 + local.get $1 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1272,26 +1335,26 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 else block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.set $3 local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.set $0 block $folding-inner0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $5 local.get $0 i32.load - local.tee $5 + local.tee $8 i32.const -4 i32.and - local.tee $3 + local.tee $4 i32.le_u br_if $folding-inner0 local.get $0 @@ -1302,29 +1365,29 @@ i32.const -4 i32.and i32.add - local.tee $6 + local.tee $9 i32.load - local.tee $7 + local.tee $10 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const 4 i32.add - local.get $7 + local.get $10 i32.const -4 i32.and i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $5 i32.ge_u if - local.get $2 - local.get $6 + local.get $3 + local.get $9 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 - local.get $5 + local.get $4 + local.get $8 i32.const 3 i32.and i32.or @@ -1332,124 +1395,38 @@ br $folding-inner0 end end - local.get $2 + local.get $3 local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 + local.get $3 local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/prepareBlock end end local.get $0 i32.const 4 i32.add - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - i32.const 1260 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.sub local.tee $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $2 - local.get $0 - i32.const 16 - i32.sub - local.get $1 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__realloc - local.tee $4 i32.const 4 i32.sub local.tee $0 - local.get $3 + local.get $6 i32.store offset=4 local.get $0 i32.const 0 i32.store offset=8 local.get $0 - local.get $2 + local.get $7 i32.store offset=12 local.get $0 local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) @@ -1476,7 +1453,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1493,7 +1470,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1591,7 +1568,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1633,7 +1610,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1648,7 +1625,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 408ad62cf7..5f3973c93b 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -9,9 +9,9 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (data (i32.const 192) "\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\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -22,9 +22,6 @@ (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -60,7 +57,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -87,7 +84,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -141,7 +138,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -273,7 +270,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -290,7 +287,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -385,7 +382,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -450,7 +447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -468,7 +465,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -527,7 +524,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -632,7 +629,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -675,7 +672,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -708,7 +705,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -945,8 +942,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 96 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -1030,7 +1027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -1095,7 +1092,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -1246,7 +1243,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -1355,7 +1352,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -1375,7 +1372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -1404,6 +1401,45 @@ i32.const 4 i32.add ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1433,7 +1469,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2854,62 +2890,6 @@ i32.const 4 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 96 - i32.const 160 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2919,8 +2899,8 @@ i32.const 1073741804 i32.gt_u if + i32.const 32 i32.const 96 - i32.const 160 i32.const 288 i32.const 30 call $~lib/builtins/abort @@ -2985,7 +2965,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -3008,7 +2988,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -3135,7 +3115,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3161,7 +3141,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3178,7 +3158,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3216,7 +3196,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 205f020947..75ee2c4896 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -1,24 +1,21 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1216) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -38,7 +35,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -58,7 +55,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -101,7 +98,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -193,7 +190,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -207,7 +204,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -280,7 +277,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -335,7 +332,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -350,7 +347,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -398,7 +395,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -468,7 +465,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -496,7 +493,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -524,7 +521,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -656,8 +653,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 1120 i32.const 1056 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -731,7 +728,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -783,7 +780,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -818,7 +815,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -960,7 +957,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -975,7 +972,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -990,17 +987,52 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $2 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) @@ -1027,7 +1059,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -1244,13 +1276,44 @@ end local.get $2 ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 + i32.const 16 + i32.sub + local.set $0 + local.get $1 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1263,26 +1326,26 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 else block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.set $3 local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.set $0 block $folding-inner0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $5 local.get $0 i32.load - local.tee $5 + local.tee $8 i32.const -4 i32.and - local.tee $3 + local.tee $4 i32.le_u br_if $folding-inner0 local.get $0 @@ -1293,29 +1356,29 @@ i32.const -4 i32.and i32.add - local.tee $6 + local.tee $9 i32.load - local.tee $7 + local.tee $10 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const 4 i32.add - local.get $7 + local.get $10 i32.const -4 i32.and i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $5 i32.ge_u if - local.get $2 - local.get $6 + local.get $3 + local.get $9 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 - local.get $5 + local.get $4 + local.get $8 i32.const 3 i32.and i32.or @@ -1323,124 +1386,38 @@ br $folding-inner0 end end - local.get $2 + local.get $3 local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 + local.get $3 local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/prepareBlock end end local.get $0 i32.const 4 i32.add - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - i32.const 1252 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.sub local.tee $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $2 - local.get $0 - i32.const 16 - i32.sub - local.get $1 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__realloc - local.tee $4 i32.const 4 i32.sub local.tee $0 - local.get $3 + local.get $6 i32.store offset=4 local.get $0 i32.const 0 i32.store offset=8 local.get $0 - local.get $2 + local.get $7 i32.store offset=12 local.get $0 local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) @@ -1467,7 +1444,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1484,7 +1461,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1525,7 +1502,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1567,7 +1544,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1582,7 +1559,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 046b6b1841..97e8235cf1 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -10,9 +10,9 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (data (i32.const 192) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -21,9 +21,6 @@ (global $~lib/rt/__rtti_base i32 (i32.const 192)) (global $~lib/heap/__heap_base i32 (i32.const 228)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -52,7 +49,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -79,7 +76,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -133,7 +130,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -265,7 +262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -282,7 +279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -377,7 +374,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -442,7 +439,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -460,7 +457,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -519,7 +516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -624,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -667,7 +664,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -700,7 +697,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -937,8 +934,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 96 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -1022,7 +1019,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -1087,7 +1084,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -1238,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -1347,7 +1344,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -1367,7 +1364,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -1396,6 +1393,45 @@ i32.const 4 i32.add ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1425,7 +1461,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2846,62 +2882,6 @@ i32.const 4 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 96 - i32.const 160 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2911,8 +2891,8 @@ i32.const 1073741804 i32.gt_u if + i32.const 32 i32.const 96 - i32.const 160 i32.const 288 i32.const 30 call $~lib/builtins/abort @@ -2977,7 +2957,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -3000,7 +2980,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -3085,7 +3065,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3111,7 +3091,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3128,7 +3108,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3166,7 +3146,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 021ff8d56a..d5cab2d654 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -11,9 +11,9 @@ (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1228) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") (data (i32.const 1356) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 1420) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") @@ -41,9 +41,6 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 2928)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -63,7 +60,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -83,7 +80,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -126,7 +123,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -218,7 +215,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -232,7 +229,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -305,7 +302,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -360,7 +357,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -375,7 +372,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -423,7 +420,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -493,7 +490,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -521,7 +518,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -549,7 +546,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -681,8 +678,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 1120 i32.const 1056 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -756,7 +753,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -808,7 +805,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -843,7 +840,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -985,7 +982,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -1000,7 +997,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -1015,17 +1012,52 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $2 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) @@ -1052,7 +1084,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -1269,13 +1301,44 @@ end local.get $2 ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 + i32.const 16 + i32.sub + local.set $0 + local.get $1 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1288,26 +1351,26 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 else block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.set $3 local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.set $0 block $folding-inner0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $5 local.get $0 i32.load - local.tee $5 + local.tee $8 i32.const -4 i32.and - local.tee $3 + local.tee $4 i32.le_u br_if $folding-inner0 local.get $0 @@ -1318,29 +1381,29 @@ i32.const -4 i32.and i32.add - local.tee $6 + local.tee $9 i32.load - local.tee $7 + local.tee $10 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const 4 i32.add - local.get $7 + local.get $10 i32.const -4 i32.and i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $5 i32.ge_u if - local.get $2 - local.get $6 + local.get $3 + local.get $9 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 - local.get $5 + local.get $4 + local.get $8 i32.const 3 i32.and i32.or @@ -1348,124 +1411,38 @@ br $folding-inner0 end end - local.get $2 + local.get $3 local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 + local.get $3 local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/prepareBlock end end local.get $0 i32.const 4 i32.add - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - i32.const 2964 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.sub local.tee $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $2 - local.get $0 - i32.const 16 - i32.sub - local.get $1 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__realloc - local.tee $4 i32.const 4 i32.sub local.tee $0 - local.get $3 + local.get $6 i32.store offset=4 local.get $0 i32.const 0 i32.store offset=8 local.get $0 - local.get $2 + local.get $7 i32.store offset=12 local.get $0 local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) @@ -1492,7 +1469,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1509,7 +1486,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -2630,7 +2607,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -2671,7 +2648,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -2686,7 +2663,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 18d86c61a7..c7b73820e6 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -17,9 +17,9 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (data (i32.const 204) "d\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") (data (i32.const 332) "&\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") (data (i32.const 396) "\02\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00") @@ -60,9 +60,6 @@ (global $~lib/rt/__rtti_base i32 (i32.const 3360)) (global $~lib/heap/__heap_base i32 (i32.const 3396)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -91,7 +88,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -118,7 +115,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -172,7 +169,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -304,7 +301,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -321,7 +318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -416,7 +413,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -481,7 +478,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -499,7 +496,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -558,7 +555,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -663,7 +660,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -706,7 +703,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -739,7 +736,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -976,8 +973,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 96 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -1061,7 +1058,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -1126,7 +1123,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -1277,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -1386,7 +1383,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -1406,7 +1403,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -1435,6 +1432,45 @@ i32.const 4 i32.add ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1464,7 +1500,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2885,62 +2921,6 @@ i32.const 4 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 96 - i32.const 160 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2950,8 +2930,8 @@ i32.const 1073741804 i32.gt_u if + i32.const 32 i32.const 96 - i32.const 160 i32.const 288 i32.const 30 call $~lib/builtins/abort @@ -3016,7 +2996,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -3039,7 +3019,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -5342,7 +5322,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -5368,7 +5348,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -5385,7 +5365,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -5423,7 +5403,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index 7fb80472bc..b088100d33 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -19,9 +19,6 @@ (global $~lib/rt/__rtti_base i32 (i32.const 1168)) (export "_start" (func $~start)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__realloc" (func $~lib/rt/stub/__realloc)) - (export "__free" (func $~lib/rt/stub/__free)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -107,6 +104,38 @@ i32.store local.get $2 ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -366,69 +395,6 @@ end local.get $0 ) - (func $~lib/rt/stub/__free (param $0 i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -483,6 +449,7 @@ global.set $~lib/rt/stub/offset ) (func $start:rt/stub-realloc + (local $0 i32) i32.const 10 call $~lib/rt/stub/__alloc global.set $rt/stub-realloc/ptr @@ -599,7 +566,35 @@ unreachable end global.get $rt/stub-realloc/ptr - call $~lib/rt/stub/__free + local.tee $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset + end i32.const 1 call $~lib/rt/stub/__alloc global.get $rt/stub-realloc/ptr diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index dd5102bda7..8f6afe74ca 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -22,9 +22,6 @@ (global $~lib/heap/__heap_base i32 (i32.const 172)) (export "_start" (func $~start)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__realloc" (func $~lib/rt/stub/__realloc)) - (export "__free" (func $~lib/rt/stub/__free)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -133,6 +130,40 @@ i32.store local.get $2 ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1485,77 +1516,6 @@ end local.get $0 ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1614,6 +1574,43 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) + (func $~lib/rt/stub/__free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) (func $start:rt/stub-realloc i32.const 10 call $~lib/rt/stub/__alloc diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index db9694a52e..0ab8877331 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -1,24 +1,21 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1100) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1216) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1216)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -37,7 +34,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -57,7 +54,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -100,7 +97,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -192,7 +189,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -206,7 +203,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -279,7 +276,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -334,7 +331,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -349,7 +346,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -397,7 +394,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -467,7 +464,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -495,7 +492,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -523,7 +520,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -655,8 +652,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 1120 i32.const 1056 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -730,7 +727,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -782,7 +779,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -817,7 +814,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -959,7 +956,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -974,7 +971,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -989,17 +986,52 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $2 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) @@ -1026,7 +1058,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1184 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -1243,13 +1275,44 @@ end local.get $2 ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 288 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=12 + local.set $7 + local.get $0 + i32.const 16 + i32.sub + local.set $0 + local.get $1 + i32.const 16 + i32.add + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1262,26 +1325,26 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 else block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.set $3 local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.set $0 block $folding-inner0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/prepareSize - local.tee $4 + local.tee $5 local.get $0 i32.load - local.tee $5 + local.tee $8 i32.const -4 i32.and - local.tee $3 + local.tee $4 i32.le_u br_if $folding-inner0 local.get $0 @@ -1292,29 +1355,29 @@ i32.const -4 i32.and i32.add - local.tee $6 + local.tee $9 i32.load - local.tee $7 + local.tee $10 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const 4 i32.add - local.get $7 + local.get $10 i32.const -4 i32.and i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $5 i32.ge_u if - local.get $2 - local.get $6 + local.get $3 + local.get $9 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 - local.get $5 + local.get $4 + local.get $8 i32.const 3 i32.and i32.or @@ -1322,124 +1385,38 @@ br $folding-inner0 end end - local.get $2 + local.get $3 local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/moveBlock local.set $0 br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 + local.get $3 local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/prepareBlock end end local.get $0 i32.const 4 i32.add - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - i32.const 1244 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1120 - i32.const 1184 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.sub local.tee $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $2 - local.get $0 - i32.const 16 - i32.sub - local.get $1 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__realloc - local.tee $4 i32.const 4 i32.sub local.tee $0 - local.get $3 + local.get $6 i32.store offset=4 local.get $0 i32.const 0 i32.store offset=8 local.get $0 - local.get $2 + local.get $7 i32.store offset=12 local.get $0 local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) @@ -1466,7 +1443,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -1483,7 +1460,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -1518,7 +1495,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -1560,7 +1537,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -1575,7 +1552,7 @@ i32.le_u if i32.const 0 - i32.const 1184 + i32.const 1120 i32.const 136 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index bdd2067cfe..d94529ad49 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -1,17 +1,17 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (data (i32.const 192) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -20,9 +20,6 @@ (global $~lib/rt/__rtti_base i32 (i32.const 192)) (global $~lib/heap/__heap_base i32 (i32.const 220)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -50,7 +47,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -77,7 +74,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -131,7 +128,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -263,7 +260,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -280,7 +277,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -375,7 +372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -440,7 +437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -458,7 +455,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -517,7 +514,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -622,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -665,7 +662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -698,7 +695,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -935,8 +932,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 96 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -1020,7 +1017,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -1085,7 +1082,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -1236,7 +1233,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -1345,7 +1342,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -1365,7 +1362,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -1394,6 +1391,45 @@ i32.const 4 i32.add ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1423,7 +1459,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2844,62 +2880,6 @@ i32.const 4 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 96 - i32.const 160 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2909,8 +2889,8 @@ i32.const 1073741804 i32.gt_u if + i32.const 32 i32.const 96 - i32.const 160 i32.const 288 i32.const 30 call $~lib/builtins/abort @@ -2975,7 +2955,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2998,7 +2978,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -3057,7 +3037,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3083,7 +3063,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3100,7 +3080,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3138,7 +3118,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index fa34bc66bb..ab9c258d2d 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -13,9 +13,6 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1088)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__realloc" (func $~lib/rt/stub/__realloc)) - (export "__free" (func $~lib/rt/stub/__free)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -102,6 +99,38 @@ i32.store local.get $2 ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -361,69 +390,6 @@ end local.get $0 ) - (func $~lib/rt/stub/__free (param $0 i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 8bb051b002..21ca6df629 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -16,9 +16,6 @@ (global $~lib/rt/__rtti_base i32 (i32.const 64)) (global $~lib/heap/__heap_base i32 (i32.const 92)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__realloc" (func $~lib/rt/stub/__realloc)) - (export "__free" (func $~lib/rt/stub/__free)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -128,6 +125,40 @@ i32.store local.get $2 ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1480,77 +1511,6 @@ end local.get $0 ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 106612c04e..45159976c1 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4539,8 +4539,6 @@ local.get $2 i32.const 1 i32.shr_s - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -4592,8 +4590,6 @@ i32.load i32.const 1 local.get $3 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -4655,8 +4651,6 @@ i32.add i32.load local.get $1 - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -4710,8 +4704,6 @@ i32.load i32.const 1 local.get $1 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -5073,8 +5065,6 @@ local.get $2 i32.const 1 i32.shr_s - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -5126,8 +5116,6 @@ i32.load i32.const 1 local.get $3 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -5189,8 +5177,6 @@ i32.add i32.load local.get $1 - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -5244,8 +5230,6 @@ i32.load i32.const 1 local.get $1 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -5628,8 +5612,6 @@ local.get $2 i32.const 1 i32.shr_s - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -5681,8 +5663,6 @@ i32.load i32.const 1 local.get $3 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -5744,8 +5724,6 @@ i32.add i32.load local.get $1 - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -5799,8 +5777,6 @@ i32.load i32.const 1 local.get $1 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -18924,8 +18900,6 @@ local.get $2 i32.const 1 i32.shr_s - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -18973,8 +18947,6 @@ i32.load i32.const 1 local.get $3 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -19030,8 +19002,6 @@ i32.add i32.load local.get $1 - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -19083,8 +19053,6 @@ i32.load i32.const 1 local.get $1 - i32.const 31 - i32.and i32.shl i32.xor i32.store diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index f83ae5922c..9527e86ccd 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -2744,8 +2744,6 @@ local.get $2 i32.const 1 i32.shr_s - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -2797,8 +2795,6 @@ i32.load i32.const 1 local.get $3 - i32.const 31 - i32.and i32.shl i32.xor i32.store @@ -2860,8 +2856,6 @@ i32.add i32.load local.get $1 - i32.const 31 - i32.and i32.shr_u i32.const 1 i32.and @@ -2915,8 +2909,6 @@ i32.load i32.const 1 local.get $1 - i32.const 31 - i32.and i32.shl i32.xor i32.store From 0c6d890952c258c63cd8f37e79cf6f04e03aa7fa Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 16 Oct 2020 10:51:35 +0200 Subject: [PATCH 05/10] update allocator tests --- tests/allocators/rt-full/assembly/index.ts | 1 + tests/allocators/rt-full/optimized.wat | 168 ++++++++-------- tests/allocators/rt-full/untouched.wat | 212 ++++++++++++--------- tests/allocators/rt-stub/assembly/index.ts | 1 + tests/allocators/rt-stub/optimized.wat | 118 ++++++------ tests/allocators/rt-stub/untouched.wat | 169 ++++++++-------- tests/allocators/runner.js | 6 +- 7 files changed, 371 insertions(+), 304 deletions(-) diff --git a/tests/allocators/rt-full/assembly/index.ts b/tests/allocators/rt-full/assembly/index.ts index e69de29bb2..ac574167a2 100644 --- a/tests/allocators/rt-full/assembly/index.ts +++ b/tests/allocators/rt-full/assembly/index.ts @@ -0,0 +1 @@ +export { heap }; diff --git a/tests/allocators/rt-full/optimized.wat b/tests/allocators/rt-full/optimized.wat index 4daacb3d39..e6cd495a5e 100644 --- a/tests/allocators/rt-full/optimized.wat +++ b/tests/allocators/rt-full/optimized.wat @@ -10,20 +10,22 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1216) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1100) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 1164) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1228) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (data (i32.const 1280) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1216)) + (global $~lib/rt/__rtti_base i32 (i32.const 1280)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "heap.alloc" (func $~lib/heap/heap.alloc)) + (export "heap.realloc" (func $~lib/heap/heap.realloc)) + (export "heap.free" (func $~lib/heap/heap.free)) + (export "heap.reset" (func $~lib/heap/heap.reset)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -421,10 +423,10 @@ if unreachable end - i32.const 1248 + i32.const 1312 i32.const 0 i32.store - i32.const 2816 + i32.const 2880 i32.const 0 i32.store loop $for-loop|0 @@ -435,7 +437,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1248 + i32.const 1312 i32.add i32.const 0 i32.store offset=4 @@ -453,7 +455,7 @@ i32.add i32.const 2 i32.shl - i32.const 1248 + i32.const 1312 i32.add i32.const 0 i32.store offset=96 @@ -471,13 +473,13 @@ br $for-loop|0 end end - i32.const 1248 - i32.const 2820 + i32.const 1312 + i32.const 2884 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1248 + i32.const 1312 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) @@ -486,7 +488,7 @@ i32.ge_u if i32.const 1056 - i32.const 1120 + i32.const 1184 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -769,6 +771,43 @@ i32.const 4 i32.add ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -989,7 +1028,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - i32.const 1244 + i32.const 1308 i32.ge_u if local.get $0 @@ -1011,7 +1050,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - i32.const 1244 + i32.const 1308 i32.lt_u if global.get $~lib/rt/tlsf/ROOT @@ -1094,60 +1133,6 @@ i32.const 4 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - i32.const 1244 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1056 - i32.const 1184 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1157,7 +1142,7 @@ i32.gt_u if i32.const 1056 - i32.const 1184 + i32.const 1120 i32.const 288 i32.const 30 call $~lib/builtins/abort @@ -1201,7 +1186,7 @@ (func $~lib/rt/pure/__retain (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1244 + i32.const 1308 i32.gt_u if local.get $0 @@ -1221,7 +1206,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - i32.const 1244 + i32.const 1308 i32.gt_u if local.get $0 @@ -1230,6 +1215,39 @@ call $~lib/rt/pure/decrement end ) + (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/tlsf/__alloc + ) + (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/__realloc + ) + (func $~lib/heap/heap.free (param $0 i32) + local.get $0 + i32.const 1308 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/heap/heap.reset + i32.const 1248 + i32.const 1184 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) @@ -1260,7 +1278,7 @@ if local.get $2 local.tee $1 - i32.const 1244 + i32.const 1308 i32.ge_u if local.get $1 diff --git a/tests/allocators/rt-full/untouched.wat b/tests/allocators/rt-full/untouched.wat index bdd2067cfe..3e0a1c20a5 100644 --- a/tests/allocators/rt-full/untouched.wat +++ b/tests/allocators/rt-full/untouched.wat @@ -1,33 +1,35 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 76) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 192) "\03\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 12) "(\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 76) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 140) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 204) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") + (data (i32.const 256) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 192)) - (global $~lib/heap/__heap_base i32 (i32.const 220)) + (global $~lib/rt/__rtti_base i32 (i32.const 256)) + (global $~lib/heap/__heap_base i32 (i32.const 284)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__realloc" (func $~lib/rt/tlsf/__realloc)) - (export "__free" (func $~lib/rt/tlsf/__free)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "heap.alloc" (func $~lib/heap/heap.alloc)) + (export "heap.realloc" (func $~lib/heap/heap.realloc)) + (export "heap.free" (func $~lib/heap/heap.free)) + (export "heap.reset" (func $~lib/heap/heap.reset)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -50,7 +52,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -77,7 +79,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -131,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -263,7 +265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -280,7 +282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -375,7 +377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -440,7 +442,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -458,7 +460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -517,7 +519,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -622,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -665,7 +667,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -698,7 +700,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -935,8 +937,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 96 i32.const 32 + i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -1020,7 +1022,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -1085,7 +1087,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -1236,7 +1238,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -1345,7 +1347,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 498 i32.const 16 call $~lib/builtins/abort @@ -1365,7 +1367,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 500 i32.const 14 call $~lib/builtins/abort @@ -1394,6 +1396,45 @@ i32.const 4 i32.add ) + (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 275 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1423,7 +1464,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 160 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2844,62 +2885,6 @@ i32.const 4 i32.add ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 96 - i32.const 160 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2909,8 +2894,8 @@ i32.const 1073741804 i32.gt_u if + i32.const 32 i32.const 96 - i32.const 160 i32.const 288 i32.const 30 call $~lib/builtins/abort @@ -2975,7 +2960,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2998,7 +2983,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 112 i32.const 14 call $~lib/builtins/abort @@ -3028,6 +3013,47 @@ call $~lib/rt/pure/decrement end ) + (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/tlsf/__alloc + ) + (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/__realloc + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/heap/heap.free (param $0 i32) + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $~lib/rt/tlsf/__reset + i32.const 224 + i32.const 160 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/heap/heap.reset + call $~lib/rt/tlsf/__reset + ) (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 drop @@ -3057,7 +3083,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 122 i32.const 14 call $~lib/builtins/abort @@ -3083,7 +3109,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 126 i32.const 18 call $~lib/builtins/abort @@ -3100,7 +3126,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 136 i32.const 16 call $~lib/builtins/abort @@ -3138,7 +3164,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 96 i32.const 69 i32.const 16 call $~lib/builtins/abort diff --git a/tests/allocators/rt-stub/assembly/index.ts b/tests/allocators/rt-stub/assembly/index.ts index e69de29bb2..ac574167a2 100644 --- a/tests/allocators/rt-stub/assembly/index.ts +++ b/tests/allocators/rt-stub/assembly/index.ts @@ -0,0 +1 @@ +export { heap }; diff --git a/tests/allocators/rt-stub/optimized.wat b/tests/allocators/rt-stub/optimized.wat index 3783596b01..539a91b293 100644 --- a/tests/allocators/rt-stub/optimized.wat +++ b/tests/allocators/rt-stub/optimized.wat @@ -1,8 +1,8 @@ (module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (memory $0 1) (data (i32.const 1024) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") @@ -10,9 +10,6 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1024)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__realloc" (func $~lib/rt/stub/__realloc)) - (export "__free" (func $~lib/rt/stub/__free)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -20,6 +17,10 @@ (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "heap.alloc" (func $~lib/heap/heap.alloc)) + (export "heap.realloc" (func $~lib/heap/heap.realloc)) + (export "heap.free" (func $~lib/heap/heap.free)) + (export "heap.reset" (func $~lib/rt/stub/__reset)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) local.get $0 @@ -38,12 +39,10 @@ local.tee $2 i32.const 16 i32.shl - i32.const 19 + i32.const 15 i32.add i32.const -16 i32.and - i32.const 4 - i32.sub local.tee $1 i32.gt_u if @@ -101,6 +100,38 @@ i32.store local.get $2 ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/stub/__alloc + local.tee $3 + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + local.get $3 + i32.const 16 + i32.add + ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -344,53 +375,6 @@ end local.get $0 ) - (func $~lib/rt/stub/__free (param $0 i32) - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -444,6 +428,30 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) + (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__alloc + ) + (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/rt/stub/__realloc + ) + (func $~lib/heap/heap.free (param $0 i32) + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset + end + ) (func $~start i32.const 1052 global.set $~lib/rt/stub/startOffset diff --git a/tests/allocators/rt-stub/untouched.wat b/tests/allocators/rt-stub/untouched.wat index 5e7a0bc657..07d478853f 100644 --- a/tests/allocators/rt-stub/untouched.wat +++ b/tests/allocators/rt-stub/untouched.wat @@ -16,9 +16,6 @@ (global $~lib/rt/__rtti_base i32 (i32.const 64)) (global $~lib/heap/__heap_base i32 (i32.const 92)) (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__realloc" (func $~lib/rt/stub/__realloc)) - (export "__free" (func $~lib/rt/stub/__free)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -26,6 +23,10 @@ (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "heap.alloc" (func $~lib/heap/heap.alloc)) + (export "heap.realloc" (func $~lib/heap/heap.realloc)) + (export "heap.free" (func $~lib/heap/heap.free)) + (export "heap.reset" (func $~lib/heap/heap.reset)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) local.get $0 @@ -51,16 +52,12 @@ local.get $1 i32.const 16 i32.shl - i32.const 4 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub local.set $2 local.get $0 local.get $2 @@ -132,6 +129,40 @@ i32.store local.get $2 ) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + unreachable + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + i32.const 4 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1484,77 +1515,6 @@ end local.get $0 ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1613,6 +1573,59 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) + (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__alloc + ) + (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/rt/stub/__realloc + ) + (func $~lib/rt/stub/__free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/heap/heap.free (param $0 i32) + local.get $0 + call $~lib/rt/stub/__free + ) + (func $~lib/heap/heap.reset + call $~lib/rt/stub/__reset + ) (func $~start global.get $~lib/heap/__heap_base i32.const 4 diff --git a/tests/allocators/runner.js b/tests/allocators/runner.js index e2ce731f29..96fed174d8 100644 --- a/tests/allocators/runner.js +++ b/tests/allocators/runner.js @@ -1,7 +1,7 @@ function runner(exports, runs, allocs) { - const alloc = exports["__alloc"]; - const free = exports["__free"]; - const reset = exports["__reset"]; + const alloc = exports["heap.alloc"]; + const free = exports["heap.free"]; + const reset = exports["heap.reset"]; const fill = exports["memory.fill"]; const ptrs = []; From ecf447c47d5fba398ae3f04e96eac60fdc669704 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 16 Oct 2020 12:51:04 +0200 Subject: [PATCH 06/10] simplify __renew --- std/assembly/rt/pure.ts | 9 +--- std/assembly/rt/stub.ts | 8 +--- tests/allocators/rt-full/optimized.wat | 26 +---------- tests/allocators/rt-full/untouched.wat | 30 ++----------- tests/allocators/rt-stub/optimized.wat | 21 +-------- tests/allocators/rt-stub/untouched.wat | 28 ++---------- .../extends-baseaggregate.optimized.wat | 45 +++++-------------- .../extends-baseaggregate.untouched.wat | 30 ++----------- tests/compiler/features/simd.untouched.wat | 2 +- .../implicit-getter-setter.optimized.wat | 45 +++++-------------- .../implicit-getter-setter.untouched.wat | 30 ++----------- tests/compiler/rc/rereturn.optimized.wat | 45 +++++-------------- tests/compiler/rc/rereturn.untouched.wat | 30 ++----------- tests/compiler/resolve-ternary.optimized.wat | 45 +++++-------------- tests/compiler/resolve-ternary.untouched.wat | 30 ++----------- .../retain-release-sanity.optimized.wat | 45 +++++-------------- .../retain-release-sanity.untouched.wat | 30 ++----------- tests/compiler/rt/stub-realloc.optimized.wat | 23 ++-------- tests/compiler/rt/stub-realloc.untouched.wat | 28 ++---------- tests/compiler/runtime-full.optimized.wat | 45 +++++-------------- tests/compiler/runtime-full.untouched.wat | 30 ++----------- tests/compiler/runtime-stub.optimized.wat | 21 +-------- tests/compiler/runtime-stub.untouched.wat | 26 ++--------- tests/compiler/std/array.optimized.wat | 45 +++++-------------- tests/compiler/std/array.untouched.wat | 30 ++----------- tests/compiler/std/map.optimized.wat | 45 +++++-------------- tests/compiler/std/map.untouched.wat | 30 ++----------- tests/compiler/std/set.optimized.wat | 45 +++++-------------- tests/compiler/std/set.untouched.wat | 30 ++----------- tests/compiler/std/static-array.optimized.wat | 31 +++---------- tests/compiler/std/static-array.untouched.wat | 26 ++--------- .../std/string-casemapping.optimized.wat | 45 +++++-------------- .../std/string-casemapping.untouched.wat | 30 ++----------- .../std/string-encoding.optimized.wat | 45 +++++-------------- .../std/string-encoding.untouched.wat | 30 ++----------- tests/compiler/std/string.optimized.wat | 45 +++++-------------- tests/compiler/std/string.untouched.wat | 30 ++----------- tests/compiler/std/typedarray.optimized.wat | 45 +++++-------------- tests/compiler/std/typedarray.untouched.wat | 30 ++----------- tests/compiler/wasi/trace.optimized.wat | 4 +- tests/compiler/wasi/trace.untouched.wat | 2 +- 41 files changed, 233 insertions(+), 1027 deletions(-) diff --git a/std/assembly/rt/pure.ts b/std/assembly/rt/pure.ts index c299e11874..300d537a5d 100644 --- a/std/assembly/rt/pure.ts +++ b/std/assembly/rt/pure.ts @@ -286,15 +286,8 @@ export function __new(size: usize, id: u32): usize { @global @unsafe export function __renew(oldPtr: usize, size: usize): usize { if (size > OBJECT_MAXSIZE) throw new Error("allocation too large"); - var object = changetype(oldPtr - TOTAL_OVERHEAD); - var oldGcInfo = object.gcInfo; - var oldRtId = object.rtId; var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); - object = changetype(newPtr - BLOCK_OVERHEAD); - object.gcInfo = oldGcInfo; - object.gcInfo2 = 0; - object.rtId = oldRtId; - object.rtSize = size; + changetype(newPtr - BLOCK_OVERHEAD).rtSize = size; return newPtr + OBJECT_OVERHEAD; } diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index 08f24148c1..11645c1488 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -78,14 +78,8 @@ export function __realloc(ptr: usize, size: usize): usize { @unsafe @global export function __renew(oldPtr: usize, size: usize): usize { if (size > OBJECT_MAXSIZE) unreachable(); - var object = changetype(oldPtr - TOTAL_OVERHEAD); - var oldRtId = object.rtId; var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); - object = changetype(newPtr - BLOCK_OVERHEAD); - object.gcInfo = 0; - object.gcInfo2 = 0; - object.rtId = oldRtId; - object.rtSize = size; + changetype(newPtr - BLOCK_OVERHEAD).rtSize = size; return newPtr + OBJECT_OVERHEAD; } diff --git a/tests/allocators/rt-full/optimized.wat b/tests/allocators/rt-full/optimized.wat index e6cd495a5e..e2f5b1b715 100644 --- a/tests/allocators/rt-full/optimized.wat +++ b/tests/allocators/rt-full/optimized.wat @@ -1134,9 +1134,6 @@ i32.add ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1149,37 +1146,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $2 - local.get $0 i32.const 16 i32.sub local.get $1 i32.const 16 i32.add call $~lib/rt/tlsf/__realloc - local.tee $4 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $3 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $4 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/allocators/rt-full/untouched.wat b/tests/allocators/rt-full/untouched.wat index 3e0a1c20a5..6cccacf1fa 100644 --- a/tests/allocators/rt-full/untouched.wat +++ b/tests/allocators/rt-full/untouched.wat @@ -2887,9 +2887,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2902,40 +2899,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/allocators/rt-stub/optimized.wat b/tests/allocators/rt-stub/optimized.wat index 539a91b293..6e46c13714 100644 --- a/tests/allocators/rt-stub/optimized.wat +++ b/tests/allocators/rt-stub/optimized.wat @@ -376,8 +376,6 @@ local.get $0 ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -385,33 +383,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.set $2 - local.get $0 i32.const 16 i32.sub local.get $1 i32.const 16 i32.add call $~lib/rt/stub/__realloc - local.tee $3 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $3 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/allocators/rt-stub/untouched.wat b/tests/allocators/rt-stub/untouched.wat index 07d478853f..3693aaa078 100644 --- a/tests/allocators/rt-stub/untouched.wat +++ b/tests/allocators/rt-stub/untouched.wat @@ -1517,8 +1517,6 @@ ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1526,37 +1524,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=12 - local.set $3 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/stub/__realloc - local.set $4 - local.get $4 - i32.const 4 - i32.sub local.set $2 local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $3 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) @@ -1599,7 +1579,7 @@ if i32.const 0 i32.const 32 - i32.const 95 + i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index cdc61bab23..a40274895b 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1328,8 +1328,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1342,27 +1340,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1676 i32.lt_u @@ -1386,7 +1375,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1400,16 +1389,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1418,11 +1407,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1446,22 +1435,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index a82598884d..6afcd168aa 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -2990,9 +2990,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -3005,40 +3002,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 430dcc453e..ad4b8bc878 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -138,7 +138,7 @@ if i32.const 0 i32.const 32 - i32.const 95 + i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index af02500819..47ec7054ff 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1293,8 +1293,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1307,27 +1305,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1260 i32.lt_u @@ -1351,7 +1340,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1365,16 +1354,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1383,11 +1372,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1411,22 +1400,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 5f3973c93b..aaf0a5b8d7 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -2892,9 +2892,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2907,40 +2904,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 75ee2c4896..ac659eb7fc 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -1284,8 +1284,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1298,27 +1296,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1252 i32.lt_u @@ -1342,7 +1331,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1356,16 +1345,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1374,11 +1363,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1402,22 +1391,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 97e8235cf1..0afe233c60 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -2884,9 +2884,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2899,40 +2896,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index d5cab2d654..44d585fb1b 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1309,8 +1309,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1323,27 +1321,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 2964 i32.lt_u @@ -1367,7 +1356,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1381,16 +1370,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1399,11 +1388,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1427,22 +1416,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index c7b73820e6..145195c081 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -2923,9 +2923,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2938,40 +2935,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index c4580c16f9..b4c22eecc5 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -1511,8 +1511,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1525,27 +1523,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1716 i32.lt_u @@ -1569,7 +1558,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1583,16 +1572,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1601,11 +1590,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1629,22 +1618,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 52722e2ec0..6ef96f8af0 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -3258,9 +3258,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -3273,40 +3270,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index b088100d33..eecb8c92b7 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -396,8 +396,6 @@ local.get $0 ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -405,33 +403,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.set $2 - local.get $0 i32.const 16 i32.sub local.get $1 i32.const 16 i32.add call $~lib/rt/stub/__realloc - local.tee $3 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $3 + local.get $0 i32.const 16 i32.add ) @@ -577,7 +560,7 @@ if i32.const 0 i32.const 1056 - i32.const 95 + i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index 8f6afe74ca..73ac7b1d1f 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -1518,8 +1518,6 @@ ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1527,37 +1525,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=12 - local.set $3 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/stub/__realloc - local.set $4 - local.get $4 - i32.const 4 - i32.sub local.set $2 local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $3 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) @@ -1591,7 +1571,7 @@ if i32.const 0 i32.const 32 - i32.const 95 + i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index 0ab8877331..747980eac8 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -1283,8 +1283,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1297,27 +1295,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1244 i32.lt_u @@ -1341,7 +1330,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1355,16 +1344,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1373,11 +1362,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1401,22 +1390,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index d94529ad49..e826306961 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -2882,9 +2882,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2897,40 +2894,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index ab9c258d2d..41459d0914 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -391,8 +391,6 @@ local.get $0 ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -400,33 +398,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.set $2 - local.get $0 i32.const 16 i32.sub local.get $1 i32.const 16 i32.add call $~lib/rt/stub/__realloc - local.tee $3 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $3 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 21ca6df629..8b7ceac874 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -1513,8 +1513,6 @@ ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1522,37 +1520,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=12 - local.set $3 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/stub/__realloc - local.set $4 - local.get $4 - i32.const 4 - i32.sub local.set $2 local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $3 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 45159976c1..a4e0ef99fb 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -2456,8 +2456,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2470,27 +2468,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 12680 i32.lt_u @@ -2514,7 +2503,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -2528,16 +2517,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -2546,11 +2535,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -2574,22 +2563,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 2438968747..09aad64319 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -4314,9 +4314,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -4329,40 +4326,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index a446d883e5..ae6b4f7e09 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1863,8 +1863,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1877,27 +1875,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1604 i32.lt_u @@ -1921,7 +1910,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1935,16 +1924,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1953,11 +1942,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1981,22 +1970,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 57ebb7cf72..bde424217d 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -3756,9 +3756,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -3771,40 +3768,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 534e22e6ea..0867c00c16 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1846,8 +1846,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1860,27 +1858,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 1492 i32.lt_u @@ -1904,7 +1893,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1918,16 +1907,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1936,11 +1925,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1964,22 +1953,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 7ab421317e..3e56add89f 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -3692,9 +3692,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -3707,40 +3704,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index f43ced4d16..5070f3571e 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -547,12 +547,10 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) i32.const 1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $1 i32.shr_u i32.gt_u @@ -573,53 +571,36 @@ local.get $0 i32.load local.tee $5 - local.set $2 i32.const 1 local.get $1 i32.shl local.tee $1 - local.set $4 + local.set $2 local.get $1 i32.const 1073741804 i32.gt_u if unreachable end - local.get $2 - i32.const 20 - i32.sub - i32.load offset=12 - local.set $6 - local.get $2 i32.const 16 i32.sub - local.get $4 + local.get $2 i32.const 16 i32.add call $~lib/rt/stub/__realloc - local.tee $7 + local.tee $3 i32.const 4 i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 local.get $2 - local.get $6 - i32.store offset=12 - local.get $2 - local.get $4 i32.store offset=16 + local.get $4 local.get $3 - local.get $7 i32.const 16 i32.add local.tee $2 i32.add local.get $1 - local.get $3 + local.get $4 i32.sub call $~lib/memory/memory.fill local.get $2 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index bef1fa090f..c74e8a8d79 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -1527,8 +1527,6 @@ ) (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1536,37 +1534,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=12 - local.set $3 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/stub/__realloc - local.set $4 - local.get $4 - i32.const 4 - i32.sub local.set $2 local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $3 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $4 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index ec71b7f52a..d7ae86d7a6 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1762,8 +1762,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -1776,27 +1774,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 19144 i32.lt_u @@ -1820,7 +1809,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -1834,16 +1823,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -1852,11 +1841,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -1880,22 +1869,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 1b0c15a73d..3833d1f79b 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -3327,9 +3327,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -3342,40 +3339,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index d5307c55dd..c19a4c1a08 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -2460,8 +2460,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -2474,27 +2472,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 22140 i32.lt_u @@ -2518,7 +2507,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -2532,16 +2521,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -2550,11 +2539,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -2578,22 +2567,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index f184d3c7d4..c727040605 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -4336,9 +4336,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -4351,40 +4348,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 83e00e2947..dbc2953dcc 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -4790,8 +4790,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -4804,27 +4802,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 23384 i32.lt_u @@ -4848,7 +4837,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -4862,16 +4851,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -4880,11 +4869,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -4908,22 +4897,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 679d91dc72..6579e19fc6 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -7575,9 +7575,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -7590,40 +7587,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 9527e86ccd..b4ae8845eb 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -5651,8 +5651,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -5665,27 +5663,18 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $7 - local.get $0 i32.const 16 i32.sub local.set $0 - local.get $1 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $1 + i32.const 16 + i32.add + local.set $2 local.get $0 i32.const 13004 i32.lt_u @@ -5709,7 +5698,7 @@ local.tee $5 local.get $0 i32.load - local.tee $8 + local.tee $6 i32.const -4 i32.and local.tee $4 @@ -5723,16 +5712,16 @@ i32.const -4 i32.and i32.add - local.tee $9 + local.tee $7 i32.load - local.tee $10 + local.tee $8 i32.const 1 i32.and if local.get $4 i32.const 4 i32.add - local.get $10 + local.get $8 i32.const -4 i32.and i32.add @@ -5741,11 +5730,11 @@ i32.ge_u if local.get $3 - local.get $9 + local.get $7 call $~lib/rt/tlsf/removeBlock local.get $0 local.get $4 - local.get $8 + local.get $6 i32.const 3 i32.and i32.or @@ -5769,22 +5758,12 @@ local.get $0 i32.const 4 i32.add - local.tee $2 + local.tee $0 i32.const 4 i32.sub - local.tee $0 - local.get $6 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=16 - local.get $2 + local.get $0 i32.const 16 i32.add ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 811c25579b..86fdf1c381 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -11253,9 +11253,6 @@ ) (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.const 1073741804 i32.gt_u @@ -11268,40 +11265,19 @@ unreachable end local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=12 - local.set $4 - local.get $0 i32.const 16 i32.sub i32.const 16 local.get $1 i32.add call $~lib/rt/tlsf/__realloc - local.set $5 - local.get $5 - i32.const 4 - i32.sub local.set $2 local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub local.get $1 i32.store offset=16 - local.get $5 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index 496a78e31b..ce0a5ac17e 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1508,7 +1508,7 @@ (local $4 i32) i32.const 3 local.set $1 - i32.const 95 + i32.const 89 local.set $0 i32.const 0 i32.const 12 @@ -1531,7 +1531,7 @@ local.tee $2 i32.const 40 i32.store8 - i32.const 95 + i32.const 89 call $~lib/util/number/decimalCount32 local.tee $4 local.get $2 diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index c852a9a825..1097f203c6 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -3429,7 +3429,7 @@ if i32.const 0 i32.const 1392 - i32.const 95 + i32.const 89 i32.const 3 call $~lib/wasi/index/abort unreachable From 0748341d1ae94bb1663054d732566bbf87954ea8 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 16 Oct 2020 13:13:07 +0200 Subject: [PATCH 07/10] lint --- std/assembly/rt/stub.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index 11645c1488..42b4487acf 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -1,4 +1,4 @@ -import { AL_MASK, OBJECT, OBJECT_OVERHEAD, BLOCK_MAXSIZE, BLOCK_OVERHEAD, BLOCK, OBJECT_MAXSIZE, TOTAL_OVERHEAD } from "rt/common"; +import { AL_MASK, OBJECT, OBJECT_OVERHEAD, BLOCK_MAXSIZE, BLOCK_OVERHEAD, BLOCK, OBJECT_MAXSIZE } from "rt/common"; // @ts-ignore: decorator @lazy var startOffset: usize = ((__heap_base + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; From d0e4eec64b0342005b9dd85db1809eeee8754910 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 20 Oct 2020 12:37:06 +0200 Subject: [PATCH 08/10] move std heap into memory --- src/builtins.ts | 2 +- src/program.ts | 6 +++- std/assembly/heap.ts | 31 ------------------ std/assembly/memory.ts | 32 +++++++++++++++++++ tests/compiler/call-super.untouched.wat | 4 +-- tests/compiler/class-implements.untouched.wat | 4 +-- .../compiler/class-overloading.untouched.wat | 4 +-- tests/compiler/class.untouched.wat | 4 +-- tests/compiler/constructor.untouched.wat | 4 +-- tests/compiler/do.untouched.wat | 10 +++--- tests/compiler/empty.untouched.wat | 4 +-- tests/compiler/exports.untouched.wat | 4 +-- .../exportstar-rereexport.untouched.wat | 4 +-- .../extends-baseaggregate.untouched.wat | 16 +++++----- .../compiler/extends-recursive.untouched.wat | 4 +-- tests/compiler/features/simd.untouched.wat | 4 +-- .../field-initialization.untouched.wat | 4 +-- tests/compiler/for.untouched.wat | 10 +++--- tests/compiler/function-call.untouched.wat | 4 +-- .../function-expression.untouched.wat | 4 +-- tests/compiler/getter-call.untouched.wat | 4 +-- tests/compiler/heap.optimized.wat | 22 ++++++------- tests/compiler/heap.untouched.wat | 32 +++++++++---------- .../implicit-getter-setter.untouched.wat | 14 ++++---- tests/compiler/infer-array.untouched.wat | 4 +-- tests/compiler/inlining.untouched.wat | 4 +-- tests/compiler/instanceof-class.untouched.wat | 4 +-- tests/compiler/issues/1095.untouched.wat | 10 +++--- tests/compiler/issues/1225.untouched.wat | 10 +++--- tests/compiler/logical.untouched.wat | 10 +++--- tests/compiler/managed-cast.untouched.wat | 10 +++--- tests/compiler/memset.untouched.wat | 4 +-- tests/compiler/new.untouched.wat | 4 +-- tests/compiler/number.untouched.wat | 4 +-- tests/compiler/object-literal.untouched.wat | 12 +++---- .../optional-typeparameters.untouched.wat | 4 +-- tests/compiler/rc/global-init.untouched.wat | 8 ++--- tests/compiler/rc/local-init.untouched.wat | 10 +++--- .../rc/logical-and-mismatch.untouched.wat | 10 +++--- .../rc/logical-or-mismatch.untouched.wat | 10 +++--- tests/compiler/rc/optimize.untouched.wat | 10 +++--- tests/compiler/rc/rereturn.untouched.wat | 14 ++++---- .../rc/ternary-mismatch.untouched.wat | 10 +++--- tests/compiler/reexport.untouched.wat | 4 +-- tests/compiler/rereexport.untouched.wat | 4 +-- tests/compiler/resolve-access.untouched.wat | 4 +-- tests/compiler/resolve-binary.untouched.wat | 4 +-- .../resolve-elementaccess.untouched.wat | 4 +-- .../resolve-function-expression.untouched.wat | 4 +-- tests/compiler/resolve-nested.untouched.wat | 4 +-- tests/compiler/resolve-new.untouched.wat | 4 +-- .../resolve-propertyaccess.untouched.wat | 4 +-- tests/compiler/resolve-ternary.untouched.wat | 14 ++++---- tests/compiler/resolve-unary.untouched.wat | 4 +-- .../retain-release-sanity.untouched.wat | 16 +++++----- tests/compiler/retain-release.untouched.wat | 4 +-- tests/compiler/retain-return.untouched.wat | 10 +++--- tests/compiler/rt/finalize.untouched.wat | 12 +++---- tests/compiler/rt/instanceof.untouched.wat | 4 +-- tests/compiler/rt/stub-realloc.untouched.wat | 4 +-- tests/compiler/runtime-full.untouched.wat | 14 ++++---- tests/compiler/runtime-stub.untouched.wat | 4 +-- .../compiler/std/array-literal.untouched.wat | 10 +++--- tests/compiler/std/array.untouched.wat | 16 +++++----- tests/compiler/std/arraybuffer.untouched.wat | 10 +++--- tests/compiler/std/dataview.untouched.wat | 10 +++--- tests/compiler/std/date.untouched.wat | 4 +-- tests/compiler/std/map.untouched.wat | 14 ++++---- tests/compiler/std/new.untouched.wat | 4 +-- .../std/operator-overloading.untouched.wat | 4 +-- tests/compiler/std/set.untouched.wat | 14 ++++---- tests/compiler/std/static-array.untouched.wat | 4 +-- tests/compiler/std/staticarray.untouched.wat | 10 +++--- .../std/string-casemapping.untouched.wat | 14 ++++---- .../std/string-encoding.untouched.wat | 14 ++++---- tests/compiler/std/string.untouched.wat | 14 ++++---- tests/compiler/std/symbol.untouched.wat | 4 +-- tests/compiler/std/typedarray.untouched.wat | 16 +++++----- tests/compiler/super-inline.untouched.wat | 4 +-- tests/compiler/throw.untouched.wat | 6 ++-- tests/compiler/typeof.untouched.wat | 4 +-- tests/compiler/wasi/trace.untouched.wat | 4 +-- tests/compiler/while.untouched.wat | 10 +++--- 83 files changed, 350 insertions(+), 345 deletions(-) delete mode 100644 std/assembly/heap.ts diff --git a/src/builtins.ts b/src/builtins.ts index 69502e9e7d..afea0bdfbd 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -607,7 +607,7 @@ export namespace BuiltinNames { export const v64x2_load_splat = "~lib/builtins/v64x2.load_splat"; // internals - export const heap_base = "~lib/heap/__heap_base"; + export const heap_base = "~lib/memory/__heap_base"; export const rtti_base = "~lib/rt/__rtti_base"; export const visit_globals = "~lib/rt/__visit_globals"; export const visit_members = "~lib/rt/__visit_members"; diff --git a/src/program.ts b/src/program.ts index 1d55709ccf..47f248bb8f 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3535,6 +3535,8 @@ export class Function extends TypedElement { virtualStub: Function | null = null; /** Runtime memory segment, if created. */ memorySegment: MemorySegment | null = null; + /** Original function, if a stub. */ + original: Function; /** Counting id of inline operations involving this function. */ nextInlineId: i32 = 0; @@ -3570,6 +3572,7 @@ export class Function extends TypedElement { this.flags = prototype.flags | CommonFlags.RESOLVED; this.decoratorFlags = prototype.decoratorFlags; this.contextualTypeArguments = contextualTypeArguments; + this.original = this; var program = prototype.program; this.type = signature.type; if (!prototype.is(CommonFlags.AMBIENT)) { @@ -3614,12 +3617,13 @@ export class Function extends TypedElement { /** Creates a stub for use with this function, i.e. for varargs or virtual calls. */ newStub(postfix: string): Function { var stub = new Function( - this.name + STUB_DELIMITER + postfix, + this.original.name + STUB_DELIMITER + postfix, this.prototype, this.typeArguments, this.signature.clone(), this.contextualTypeArguments ); + stub.original = this.original; stub.set(this.flags & ~CommonFlags.COMPILED | CommonFlags.STUB); return stub; } diff --git a/std/assembly/heap.ts b/std/assembly/heap.ts deleted file mode 100644 index 90c64a60d7..0000000000 --- a/std/assembly/heap.ts +++ /dev/null @@ -1,31 +0,0 @@ -// @ts-ignore: decorator -@builtin -export declare const __heap_base: usize; - -/** Heap memory interface. */ -export namespace heap { - - /** Allocates a chunk of memory of at least the specified size. */ - // @ts-ignore: decorator - @unsafe export function alloc(size: usize): usize { - return __alloc(size); - } - - /** Reallocates a chunk of memory to have at least the specified size. */ - // @ts-ignore: decorator - @unsafe export function realloc(ptr: usize, size: usize): usize { - return __realloc(ptr, size); - } - - /** Frees a chunk of memory. */ - // @ts-ignore: decorator - @unsafe export function free(ptr: usize): void { - __free(ptr); - } - - /** Resets the heap. Stub/none runtime only. */ - // @ts-ignore: decorator - @unsafe export function reset(): void { - __reset(); - } -} diff --git a/std/assembly/memory.ts b/std/assembly/memory.ts index a4111da292..6798ebf46e 100644 --- a/std/assembly/memory.ts +++ b/std/assembly/memory.ts @@ -66,3 +66,35 @@ export namespace memory { @builtin export declare function data(size: T, align?: i32): usize; } + +// @ts-ignore: decorator +@builtin +export declare const __heap_base: usize; + +/** Heap memory interface. */ +export namespace heap { + + /** Allocates a chunk of memory of at least the specified size. */ + // @ts-ignore: decorator + @unsafe export function alloc(size: usize): usize { + return __alloc(size); + } + + /** Reallocates a chunk of memory to have at least the specified size. */ + // @ts-ignore: decorator + @unsafe export function realloc(ptr: usize, size: usize): usize { + return __realloc(ptr, size); + } + + /** Frees a chunk of memory. */ + // @ts-ignore: decorator + @unsafe export function free(ptr: usize): void { + __free(ptr); + } + + /** Resets the heap. Stub/none runtime only. */ + // @ts-ignore: decorator + @unsafe export function reset(): void { + __reset(); + } +} diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 7d381a930d..e05a33a16d 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -10,7 +10,7 @@ (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 60)) + (global $~lib/memory/__heap_base i32 (i32.const 60)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -568,7 +568,7 @@ call $~lib/rt/stub/__release ) (func $start:call-super - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index 4a7c64f13a..a37cf137b9 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -12,7 +12,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $class-implements/a (mut i32) (i32.const 0)) (global $class-implements/c (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 72)) + (global $~lib/memory/__heap_base i32 (i32.const 72)) (global $class-implements/A i32 (i32.const 3)) (global $class-implements/C i32 (i32.const 5)) (export "memory" (memory $0)) @@ -206,7 +206,7 @@ i32.const 2 ) (func $start:class-implements - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index e4e4e38da3..09eeaebd7e 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -26,7 +26,7 @@ (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 292)) + (global $~lib/memory/__heap_base i32 (i32.const 292)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -591,7 +591,7 @@ ) (func $start:class-overloading (local $0 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 26cf1a1785..36f8a20f30 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 108)) + (global $~lib/memory/__heap_base i32 (i32.const 108)) (export "memory" (memory $0)) (export "test" (func $class/test)) (export "testGenericInitializer" (func $class/testGenericInitializer)) @@ -580,7 +580,7 @@ ) (func $~start call $start:class - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 167c040be2..b2a7dcabc5 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -18,7 +18,7 @@ (global $constructor/b (mut i32) (i32.const 1)) (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -314,7 +314,7 @@ local.get $0 ) (func $start:constructor - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index b19a87e7e3..7a83d9d336 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -18,7 +18,7 @@ (global $do/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 224)) + (global $~lib/memory/__heap_base i32 (i32.const 224)) (export "memory" (memory $0)) (start $~start) (func $do/testSimple @@ -1185,7 +1185,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1891,7 +1891,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1915,7 +1915,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2342,7 +2342,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index d90e48ff8b..016d455d9d 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/heap/__heap_base i32 (i32.const 112)) + (global $~lib/memory/__heap_base i32 (i32.const 112)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) @@ -1553,7 +1553,7 @@ ) (func $start:empty (local $0 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 77e1ffa2c0..8197ffe91b 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -19,7 +19,7 @@ (global $export/c i32 (i32.const 3)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $exports/Car i32 (i32.const 3)) (global $exports/vehicles.Car i32 (i32.const 4)) @@ -296,7 +296,7 @@ i32.mul ) (func $~start - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index c1118198f1..ccb10de01f 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -20,7 +20,7 @@ (global $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 108)) + (global $~lib/memory/__heap_base i32 (i32.const 108)) (export "memory" (memory $0)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) @@ -249,7 +249,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 6afcd168aa..6c3f0f09af 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -31,7 +31,7 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 576)) - (global $~lib/heap/__heap_base i32 (i32.const 652)) + (global $~lib/memory/__heap_base i32 (i32.const 652)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -786,7 +786,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1492,7 +1492,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2861,7 +2861,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -2970,7 +2970,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -3295,7 +3295,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3391,7 +3391,7 @@ ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -3708,7 +3708,7 @@ (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index dc0ae5516e..756e08c579 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -8,7 +8,7 @@ (table $0 1 funcref) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (global $extends-recursive/Child i32 (i32.const 3)) (export "memory" (memory $0)) (export "Child" (global $extends-recursive/Child)) @@ -211,7 +211,7 @@ i32.store ) (func $~start - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index ad4b8bc878..57a9c4c3c8 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/heap/__heap_base i32 (i32.const 128)) + (global $~lib/memory/__heap_base i32 (i32.const 128)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -2973,7 +2973,7 @@ local.get $0 ) (func $start:features/simd - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index b6740c7684..57e68e19a1 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -20,7 +20,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 356)) + (global $~lib/memory/__heap_base i32 (i32.const 356)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -1001,7 +1001,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 8a0002dc8f..f9ccb21f39 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -18,7 +18,7 @@ (global $for/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 224)) + (global $~lib/memory/__heap_base i32 (i32.const 224)) (export "memory" (memory $0)) (start $~start) (func $for/testInitExpression @@ -1198,7 +1198,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1904,7 +1904,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1928,7 +1928,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2387,7 +2387,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index d5db5293a9..4408abd2f2 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -27,7 +27,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $function-call/foo (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 328)) + (global $~lib/memory/__heap_base i32 (i32.const 328)) (export "memory" (memory $0)) (start $~start) (func $start:function-call~anonymous|0 @@ -274,7 +274,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index d5af1174aa..84e87d6361 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -35,7 +35,7 @@ (global $function-expression/globalFunc (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 616)) + (global $~lib/memory/__heap_base i32 (i32.const 616)) (export "memory" (memory $0)) (start $~start) (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) @@ -605,7 +605,7 @@ end call $function-expression/testGlobal call $function-expression/testLocal - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 287ae5f41d..6bc756aa17 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -11,7 +11,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 40)) + (global $~lib/memory/__heap_base i32 (i32.const 40)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $~start) @@ -197,7 +197,7 @@ local.get $2 ) (func $~start - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index e77a8887f0..95b3131144 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -15,10 +15,10 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "heap.alloc" (func $~lib/heap/heap.alloc)) - (export "heap.realloc" (func $~lib/heap/heap.realloc)) - (export "heap.free" (func $~lib/heap/heap.free)) - (export "heap.reset" (func $~lib/heap/heap.reset)) + (export "heap.alloc" (func $~lib/memory/heap.alloc)) + (export "heap.realloc" (func $~lib/memory/heap.realloc)) + (export "heap.free" (func $~lib/memory/heap.free)) + (export "heap.reset" (func $~lib/memory/heap.reset)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -985,7 +985,7 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1239,7 +1239,7 @@ end local.get $2 ) - (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1335,7 +1335,7 @@ i32.const 4 i32.add ) - (func $~lib/heap/heap.free (param $0 i32) + (func $~lib/memory/heap.free (param $0 i32) local.get $0 i32.const 1216 i32.ge_u @@ -1351,7 +1351,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/heap/heap.reset + (func $~lib/memory/heap.reset i32.const 1184 i32.const 1056 i32.const 598 @@ -1361,13 +1361,13 @@ ) (func $~start i32.const 16 - call $~lib/heap/heap.alloc + call $~lib/memory/heap.alloc global.set $heap/ptr global.get $heap/ptr i32.const 32 - call $~lib/heap/heap.realloc + call $~lib/memory/heap.realloc global.set $heap/ptr global.get $heap/ptr - call $~lib/heap/heap.free + call $~lib/memory/heap.free ) ) diff --git a/tests/compiler/heap.untouched.wat b/tests/compiler/heap.untouched.wat index 3300a70cb3..44038bed7a 100644 --- a/tests/compiler/heap.untouched.wat +++ b/tests/compiler/heap.untouched.wat @@ -17,12 +17,12 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 192)) + (global $~lib/memory/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) - (export "heap.alloc" (func $~lib/heap/heap.alloc)) - (export "heap.realloc" (func $~lib/heap/heap.realloc)) - (export "heap.free" (func $~lib/heap/heap.free)) - (export "heap.reset" (func $~lib/heap/heap.reset)) + (export "heap.alloc" (func $~lib/memory/heap.alloc)) + (export "heap.realloc" (func $~lib/memory/heap.realloc)) + (export "heap.free" (func $~lib/memory/heap.free)) + (export "heap.reset" (func $~lib/memory/heap.reset)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -776,7 +776,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1390,7 +1390,7 @@ i32.const 4 i32.add ) - (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) local.get $0 call $~lib/rt/tlsf/__alloc ) @@ -2717,7 +2717,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -2826,7 +2826,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -2844,14 +2844,14 @@ i32.const 4 i32.add ) - (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/rt/tlsf/__realloc ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -2866,20 +2866,20 @@ call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/heap/heap.free (param $0 i32) + (func $~lib/memory/heap.free (param $0 i32) local.get $0 call $~lib/rt/tlsf/__free ) (func $start:heap i32.const 16 - call $~lib/heap/heap.alloc + call $~lib/memory/heap.alloc global.set $heap/ptr global.get $heap/ptr i32.const 32 - call $~lib/heap/heap.realloc + call $~lib/memory/heap.realloc global.set $heap/ptr global.get $heap/ptr - call $~lib/heap/heap.free + call $~lib/memory/heap.free ) (func $~lib/rt/tlsf/__reset i32.const 160 @@ -2889,7 +2889,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/heap/heap.reset + (func $~lib/memory/heap.reset call $~lib/rt/tlsf/__reset ) (func $~start diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index aaf0a5b8d7..0cfa3a8fef 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -18,7 +18,7 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 192)) - (global $~lib/heap/__heap_base i32 (i32.const 236)) + (global $~lib/memory/__heap_base i32 (i32.const 236)) (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) (export "memory" (memory $0)) @@ -787,7 +787,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2763,7 +2763,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -2872,7 +2872,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -2973,7 +2973,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2985,7 +2985,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3157,7 +3157,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index e7d081304f..65aca3172b 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -32,7 +32,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 736)) + (global $~lib/memory/__heap_base i32 (i32.const 736)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -1764,7 +1764,7 @@ (local $2 f32) (local $3 i32) (local $4 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 346615e537..9e31cee943 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -15,7 +15,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 88)) + (global $~lib/memory/__heap_base i32 (i32.const 88)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) (start $~start) @@ -479,7 +479,7 @@ unreachable end call $inlining/test_funcs - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 91e8fe45d6..10b94f2a10 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -14,7 +14,7 @@ (global $instanceof-class/a (mut i32) (i32.const 0)) (global $instanceof-class/b (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 80)) - (global $~lib/heap/__heap_base i32 (i32.const 140)) + (global $~lib/memory/__heap_base i32 (i32.const 140)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -210,7 +210,7 @@ local.get $0 ) (func $start:instanceof-class - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index f43d76330a..884a899085 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -18,7 +18,7 @@ (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 348)) + (global $~lib/memory/__heap_base i32 (i32.const 348)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -773,7 +773,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1479,7 +1479,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1506,7 +1506,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1674,7 +1674,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index 55a3520235..9a18a2784b 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -18,7 +18,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $issues/1225/x (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 252)) + (global $~lib/memory/__heap_base i32 (i32.const 252)) (export "memory" (memory $0)) (export "normal" (func $issues/1225/normal)) (export "viaThis" (func $issues/1225/viaThis)) @@ -775,7 +775,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1481,7 +1481,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1529,7 +1529,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1695,7 +1695,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index 603b90ba47..3376d25d2c 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -21,7 +21,7 @@ (global $logical/F (mut f64) (f64.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 240)) + (global $~lib/memory/__heap_base i32 (i32.const 240)) (export "memory" (memory $0)) (start $~start) (func $logical/testShortcutAnd (param $0 i64) (param $1 i32) (result i32) @@ -796,7 +796,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1502,7 +1502,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1526,7 +1526,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2224,7 +2224,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index c64998d932..d8f1332601 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -20,7 +20,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 400)) - (global $~lib/heap/__heap_base i32 (i32.const 444)) + (global $~lib/memory/__heap_base i32 (i32.const 444)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -775,7 +775,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1481,7 +1481,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1523,7 +1523,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1931,7 +1931,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index 4128676d4d..c5ae1f18e3 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -7,7 +7,7 @@ (data (i32.const 12) "\12\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00") (table $0 1 funcref) (global $memset/dest (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 52)) + (global $~lib/memory/__heap_base i32 (i32.const 52)) (export "memory" (memory $0)) (start $~start) (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -274,7 +274,7 @@ local.get $3 ) (func $start:memset - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base global.set $memset/dest global.get $memset/dest i32.const 1 diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 8e034e0110..29343d6ee5 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -10,7 +10,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $new/gen (mut i32) (i32.const 0)) (global $new/ref2 (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -211,7 +211,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 9b9a188733..dc692fd9db 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -61,7 +61,7 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/heap/__heap_base i32 (i32.const 3212)) + (global $~lib/memory/__heap_base i32 (i32.const 3212)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -3615,7 +3615,7 @@ (local $10 i32) (local $11 f32) (local $12 f64) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index f90d1e4f4d..8d6867cca9 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -24,7 +24,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 472)) + (global $~lib/memory/__heap_base i32 (i32.const 472)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -779,7 +779,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1485,7 +1485,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1515,7 +1515,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3192,7 +3192,7 @@ ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -3955,7 +3955,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 7339277737..7fc4217082 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -11,7 +11,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) (func $optional-typeparameters/testConcrete (param $0 i32) (result i32) @@ -199,7 +199,7 @@ i32.const 2 call $optional-typeparameters/testDerived drop - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index 3b08f8c1f6..04636f5f78 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -14,7 +14,7 @@ (global $rc/global-init/a (mut i32) (i32.const 0)) (global $rc/global-init/b (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 160)) + (global $~lib/memory/__heap_base i32 (i32.const 160)) (export "memory" (memory $0)) (start $~start) (func $rc/global-init/getRef (result i32) @@ -73,7 +73,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -85,7 +85,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -819,7 +819,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index e68d48edc9..2bebd5f599 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -17,12 +17,12 @@ (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 224)) + (global $~lib/memory/__heap_base i32 (i32.const 224)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -786,7 +786,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1492,7 +1492,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1641,7 +1641,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index 659c95a86e..cb73cbb6ae 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 192)) + (global $~lib/memory/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -772,7 +772,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1478,7 +1478,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1506,7 +1506,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1681,7 +1681,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 1a6b74edfd..09a6e5a0ce 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 192)) + (global $~lib/memory/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -772,7 +772,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1478,7 +1478,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1506,7 +1506,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1681,7 +1681,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rc/optimize.untouched.wat b/tests/compiler/rc/optimize.untouched.wat index b287be9c41..cbc8bbafe0 100644 --- a/tests/compiler/rc/optimize.untouched.wat +++ b/tests/compiler/rc/optimize.untouched.wat @@ -17,7 +17,7 @@ (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 228)) + (global $~lib/memory/__heap_base i32 (i32.const 228)) (export "memory" (memory $0)) (export "eliminated_v" (func $rc/optimize/eliminated_v)) (export "eliminated_vi" (func $rc/optimize/eliminated_vi)) @@ -111,7 +111,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -873,7 +873,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1544,7 +1544,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1933,7 +1933,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 0afe233c60..425052bc4e 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -19,7 +19,7 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 192)) - (global $~lib/heap/__heap_base i32 (i32.const 228)) + (global $~lib/memory/__heap_base i32 (i32.const 228)) (export "memory" (memory $0)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) @@ -779,7 +779,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2755,7 +2755,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -2864,7 +2864,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -2965,7 +2965,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2977,7 +2977,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3107,7 +3107,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index 0a4a1a50dc..d70fe57a41 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 192)) + (global $~lib/memory/__heap_base i32 (i32.const 192)) (export "memory" (memory $0)) (export "test1" (func $rc/ternary-mismatch/test1)) (export "test2" (func $rc/ternary-mismatch/test2)) @@ -774,7 +774,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1480,7 +1480,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1517,7 +1517,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1665,7 +1665,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 2e9b8d4104..d275c75cfa 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -23,7 +23,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $reexport/car (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 56)) + (global $~lib/memory/__heap_base i32 (i32.const 56)) (global $exports/Car i32 (i32.const 3)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $exports/vehicles.Car i32 (i32.const 4)) @@ -299,7 +299,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 3028b97564..ba06ceb501 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -20,7 +20,7 @@ (global $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 108)) + (global $~lib/memory/__heap_base i32 (i32.const 108)) (export "memory" (memory $0)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) @@ -249,7 +249,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index b6053c4b44..9c67d179f7 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -29,7 +29,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/heap/__heap_base i32 (i32.const 1928)) + (global $~lib/memory/__heap_base i32 (i32.const 1928)) (export "memory" (memory $0)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) @@ -2462,7 +2462,7 @@ local.get $1 ) (func $~start - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 3fc06f6c93..8724d81b6c 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -71,7 +71,7 @@ (global $resolve-binary/foo (mut i32) (i32.const 0)) (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 9784)) + (global $~lib/memory/__heap_base i32 (i32.const 9784)) (export "memory" (memory $0)) (start $~start) (func $~lib/number/Bool#toString (param $0 i32) (param $1 i32) (result i32) @@ -5116,7 +5116,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 623f841921..b05f9d7798 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -55,7 +55,7 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 3412)) + (global $~lib/memory/__heap_base i32 (i32.const 3412)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/__release (param $0 i32) @@ -3934,7 +3934,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index c211d1470e..df204b6d21 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -28,7 +28,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1988)) + (global $~lib/memory/__heap_base i32 (i32.const 1988)) (export "memory" (memory $0)) (start $~start) (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) @@ -995,7 +995,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index ab6cedc4b1..eb673ff60d 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -24,7 +24,7 @@ (global $resolve-nested/c (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (global $resolve-nested/Outer.InnerClass i32 (i32.const 4)) (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) (export "memory" (memory $0)) @@ -278,7 +278,7 @@ call $~lib/rt/stub/__release ) (func $~start - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 250959d50f..34332c93bb 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -8,7 +8,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $resolve-new/foo (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -169,7 +169,7 @@ ) (func $start:resolve-new (local $0 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 8a4ccabd7f..77c04cc950 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -44,7 +44,7 @@ (global $resolve-propertyaccess/Enum.VALUE i32 (i32.const 4)) (global $resolve-propertyaccess/Class.staticField (mut i32) (i32.const 5)) (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) - (global $~lib/heap/__heap_base i32 (i32.const 2244)) + (global $~lib/memory/__heap_base i32 (i32.const 2244)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -995,7 +995,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 145195c081..9cf25d5256 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -58,7 +58,7 @@ (global $resolve-ternary/f2 i32 (i32.const 3280)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 3360)) - (global $~lib/heap/__heap_base i32 (i32.const 3396)) + (global $~lib/memory/__heap_base i32 (i32.const 3396)) (export "memory" (memory $0)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) @@ -818,7 +818,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2794,7 +2794,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -2903,7 +2903,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -3004,7 +3004,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3016,7 +3016,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -5364,7 +5364,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 59bfe1cacf..116e86974e 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -40,7 +40,7 @@ (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 2296)) + (global $~lib/memory/__heap_base i32 (i32.const 2296)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -1102,7 +1102,7 @@ (local $30 i32) (local $31 i32) (local $32 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 6ef96f8af0..3458d888e9 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -31,12 +31,12 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 624)) - (global $~lib/heap/__heap_base i32 (i32.const 692)) + (global $~lib/memory/__heap_base i32 (i32.const 692)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -797,7 +797,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1716,7 +1716,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3129,7 +3129,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -3238,7 +3238,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -3989,7 +3989,7 @@ ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -4448,7 +4448,7 @@ (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index aa8a949d84..960eb2e504 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -17,7 +17,7 @@ (global $retain-release/TARGET (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 100)) + (global $~lib/memory/__heap_base i32 (i32.const 100)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) @@ -223,7 +223,7 @@ local.get $0 ) (func $start:retain-release - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 5cdf103dd7..433fe3e6c8 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -32,7 +32,7 @@ (global $retain-return/returnLocalFnBlock (mut i32) (i32.const 352)) (global $retain-return/returnGlobalFnBlock (mut i32) (i32.const 384)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 392)) + (global $~lib/memory/__heap_base i32 (i32.const 392)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -787,7 +787,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1493,7 +1493,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1521,7 +1521,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1795,7 +1795,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 64e46aebd3..123a7f9eda 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -34,12 +34,12 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 576)) - (global $~lib/heap/__heap_base i32 (i32.const 636)) + (global $~lib/memory/__heap_base i32 (i32.const 636)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -800,7 +800,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1719,7 +1719,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3495,7 +3495,7 @@ ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -3954,7 +3954,7 @@ (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 0a0056031d..5d809cd846 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -22,7 +22,7 @@ (global $rt/instanceof/nullBlackcat (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 64)) - (global $~lib/heap/__heap_base i32 (i32.const 116)) + (global $~lib/memory/__heap_base i32 (i32.const 116)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -247,7 +247,7 @@ ) (func $start:rt/instanceof (local $0 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index 73ac7b1d1f..3ad18474b6 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -19,7 +19,7 @@ (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 144)) - (global $~lib/heap/__heap_base i32 (i32.const 172)) + (global $~lib/memory/__heap_base i32 (i32.const 172)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "__new" (func $~lib/rt/stub/__new)) @@ -1740,7 +1740,7 @@ i32.const 1 global.set $~started end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index e826306961..cb9fb8956b 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -18,7 +18,7 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 192)) - (global $~lib/heap/__heap_base i32 (i32.const 220)) + (global $~lib/memory/__heap_base i32 (i32.const 220)) (export "memory" (memory $0)) (export "__new" (func $~lib/rt/pure/__new)) (export "__renew" (func $~lib/rt/pure/__renew)) @@ -777,7 +777,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2753,7 +2753,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -2862,7 +2862,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -2963,7 +2963,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2975,7 +2975,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3079,7 +3079,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 8b7ceac874..9608eabf16 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -14,7 +14,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 64)) - (global $~lib/heap/__heap_base i32 (i32.const 92)) + (global $~lib/memory/__heap_base i32 (i32.const 92)) (export "memory" (memory $0)) (export "__new" (func $~lib/rt/stub/__new)) (export "__renew" (func $~lib/rt/stub/__renew)) @@ -1550,7 +1550,7 @@ global.set $~lib/rt/stub/offset ) (func $~start - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index eb9cb3aa6c..7bb98c4f8b 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -34,7 +34,7 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 608)) + (global $~lib/memory/__heap_base i32 (i32.const 608)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) @@ -859,7 +859,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2833,7 +2833,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2909,7 +2909,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3436,7 +3436,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 09aad64319..66ff3a874f 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -312,7 +312,7 @@ (global $~lib/util/number/_exp_pow (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 $~lib/heap/__heap_base i32 (i32.const 13112)) + (global $~lib/memory/__heap_base i32 (i32.const 13112)) (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) @@ -399,7 +399,7 @@ (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1160,7 +1160,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2079,7 +2079,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -4185,7 +4185,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -4294,7 +4294,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -7512,7 +7512,7 @@ ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -30922,7 +30922,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 9d138c1ecf..727d7e762f 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -23,12 +23,12 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 464)) + (global $~lib/memory/__heap_base i32 (i32.const 464)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -789,7 +789,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1708,7 +1708,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -4135,7 +4135,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 2304085e6a..036ad9a70b 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -31,12 +31,12 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 560)) + (global $~lib/memory/__heap_base i32 (i32.const 560)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -797,7 +797,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1716,7 +1716,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -4613,7 +4613,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 8171edb600..2e67f8d685 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -19,7 +19,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/date/date (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 56)) + (global $~lib/memory/__heap_base i32 (i32.const 56)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -316,7 +316,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index bde424217d..9991283bb1 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -39,7 +39,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 580)) + (global $~lib/memory/__heap_base i32 (i32.const 580)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -794,7 +794,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1500,7 +1500,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1512,7 +1512,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3627,7 +3627,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -3736,7 +3736,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -20966,7 +20966,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index ce79a6f3eb..a4867f9976 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -10,7 +10,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/new/aClass (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -179,7 +179,7 @@ local.get $0 ) (func $start:std/new - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index fa6747a03e..26c6836a15 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -79,7 +79,7 @@ (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 88)) + (global $~lib/memory/__heap_base i32 (i32.const 88)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -1117,7 +1117,7 @@ (local $22 i32) (local $23 i32) (local $24 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 3e56add89f..1dc19592fe 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -34,7 +34,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 468)) + (global $~lib/memory/__heap_base i32 (i32.const 468)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -789,7 +789,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1495,7 +1495,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1507,7 +1507,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3563,7 +3563,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -3672,7 +3672,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -14793,7 +14793,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index c74e8a8d79..f96f9616f6 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -34,7 +34,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 640)) + (global $~lib/memory/__heap_base i32 (i32.const 640)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) @@ -2158,7 +2158,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index 3182a99fba..b29efb27fb 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -27,7 +27,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 480)) + (global $~lib/memory/__heap_base i32 (i32.const 480)) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) @@ -849,7 +849,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2823,7 +2823,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2843,7 +2843,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3223,7 +3223,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 3833d1f79b..758d26133a 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -198,7 +198,7 @@ (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 256)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/heap/__heap_base i32 (i32.const 19832)) + (global $~lib/memory/__heap_base i32 (i32.const 19832)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) @@ -262,7 +262,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1024,7 +1024,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -3198,7 +3198,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -3307,7 +3307,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -3721,7 +3721,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -7283,7 +7283,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index c727040605..a26fb1dfbf 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -32,7 +32,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 21116)) + (global $~lib/memory/__heap_base i32 (i32.const 21116)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/increment (param $0 i32) @@ -88,7 +88,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -100,7 +100,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -890,7 +890,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -4207,7 +4207,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -4316,7 +4316,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -5119,7 +5119,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 6579e19fc6..ae4eea4ee5 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -478,7 +478,7 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 23816)) + (global $~lib/memory/__heap_base i32 (i32.const 23816)) (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) (start $~start) @@ -535,7 +535,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -547,7 +547,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1551,7 +1551,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -7446,7 +7446,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -7555,7 +7555,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -21351,7 +21351,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 83f2fbf09e..ec1303ac73 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -56,7 +56,7 @@ (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1252)) + (global $~lib/memory/__heap_base i32 (i32.const 1252)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) @@ -3366,7 +3366,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 86fdf1c381..ddc0bedaf9 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -340,12 +340,12 @@ (global $std/typedarray/setSource2 (mut i32) (i32.const 9200)) (global $std/typedarray/setSource3 (mut i32) (i32.const 9296)) (global $std/typedarray/setSource7 (mut i32) (i32.const 9376)) - (global $~lib/heap/__heap_base i32 (i32.const 13436)) + (global $~lib/memory/__heap_base i32 (i32.const 13436)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1106,7 +1106,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -2025,7 +2025,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -3324,7 +3324,7 @@ ) (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return @@ -11124,7 +11124,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.ge_u if i32.const 0 @@ -11233,7 +11233,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if (result i32) global.get $~lib/rt/tlsf/ROOT @@ -57564,7 +57564,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index c0f2740446..f0198de783 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -9,7 +9,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $super-inline/foo (mut i32) (i32.const 0)) (global $super-inline/bar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) + (global $~lib/memory/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) @@ -187,7 +187,7 @@ i32.const 1 ) (func $start:super-inline - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index 41ff819b92..679bd7bbbd 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.untouched.wat @@ -18,13 +18,13 @@ (data (i32.const 428) "\1e\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 480)) + (global $~lib/memory/__heap_base i32 (i32.const 480)) (export "memory" (memory $0)) (export "doThrow" (func $throw/doThrow)) (start $~start) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -815,7 +815,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index cf7582c56f..9eaba44628 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -31,7 +31,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $typeof/c (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 356)) + (global $~lib/memory/__heap_base i32 (i32.const 356)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) @@ -644,7 +644,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index 1097f203c6..d6c0fa470c 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -30,7 +30,7 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1424)) + (global $~lib/memory/__heap_base i32 (i32.const 1424)) (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/__retain (param $0 i32) (result i32) @@ -3653,7 +3653,7 @@ call $~lib/rt/stub/__release ) (func $start:wasi/trace - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 4 i32.add i32.const 15 diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index dffe50133f..c6c9c6b927 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -18,7 +18,7 @@ (global $while/ran (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 240)) + (global $~lib/memory/__heap_base i32 (i32.const 240)) (export "memory" (memory $0)) (start $~start) (func $while/testSimple @@ -1227,7 +1227,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -1933,7 +1933,7 @@ ) (func $~lib/rt/pure/__retain (param $0 i32) (result i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -1957,7 +1957,7 @@ ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.gt_u if local.get $0 @@ -2476,7 +2476,7 @@ ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/heap/__heap_base + global.get $~lib/memory/__heap_base i32.lt_u if return From ad02cfd8e97fbde26dd3b574d4fe624a97cac517 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 20 Oct 2020 13:11:37 +0200 Subject: [PATCH 09/10] fix --- src/program.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/program.ts b/src/program.ts index 47f248bb8f..3c0de6c7c6 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3535,8 +3535,8 @@ export class Function extends TypedElement { virtualStub: Function | null = null; /** Runtime memory segment, if created. */ memorySegment: MemorySegment | null = null; - /** Original function, if a stub. */ - original: Function; + /** Original function, if a stub. Otherwise `this`. */ + original!: Function; /** Counting id of inline operations involving this function. */ nextInlineId: i32 = 0; From 83e9adea141a35dead11ddbabeeba8a6cdd14eb4 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 22 Oct 2020 12:21:59 +0200 Subject: [PATCH 10/10] update loader --- lib/loader/tests/build/default.wasm | Bin 10031 -> 9985 bytes lib/loader/tests/build/legacy.wasm | Bin 10031 -> 9985 bytes lib/loader/umd/index.js | 16 ++++++++-------- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/loader/tests/build/default.wasm b/lib/loader/tests/build/default.wasm index 8a56ff32cc7cca0fe50e7b5bf5b5825a4f953ec9..e64ff9d6f0c49a43168f866610cf21545a53e84a 100644 GIT binary patch delta 51 zcmZ4Q*XXz5DKlfo=4Z?kMVajw87EgsDvAqaI|?W;W(kNWGAS@QvSceTnlT9|Fl~My H>CX!Qi&_lS delta 97 zcmZqlTkp5wDKq1?&Ci%8iZbUgvP`a$RCE=|R%B9O(qLjyWCl?@iYy8Yjsn?^0t$>- u0wRj63apMSU?mF7W=t#!OpXj@OdJYK3M^(!JV1)kj7dO&b@L`ke_j9$ZV@8@ diff --git a/lib/loader/tests/build/legacy.wasm b/lib/loader/tests/build/legacy.wasm index 8a56ff32cc7cca0fe50e7b5bf5b5825a4f953ec9..e64ff9d6f0c49a43168f866610cf21545a53e84a 100644 GIT binary patch delta 51 zcmZ4Q*XXz5DKlfo=4Z?kMVajw87EgsDvAqaI|?W;W(kNWGAS@QvSceTnlT9|Fl~My H>CX!Qi&_lS delta 97 zcmZqlTkp5wDKq1?&Ci%8iZbUgvP`a$RCE=|R%B9O(qLjyWCl?@iYy8Yjsn?^0t$>- u0wRj63apMSU?mF7W=t#!OpXj@OdJYK3M^(!JV1)kj7dO&b@L`ke_j9$ZV@8@ diff --git a/lib/loader/umd/index.js b/lib/loader/umd/index.js index 27b42fe9ab..cd4dfeac59 100644 --- a/lib/loader/umd/index.js +++ b/lib/loader/umd/index.js @@ -95,7 +95,7 @@ var loader = (function(exports) { const exports = instance.exports; const memory = exports.memory; const table = exports.table; - const alloc = exports["__alloc"]; + const new_ = exports["__new"]; const retain = exports["__retain"]; const rttiBase = exports["__rtti_base"] || ~0; // oob if not present @@ -138,9 +138,9 @@ var loader = (function(exports) { /** Allocates a new string in the module's memory and returns its retained pointer. */ - function __allocString(str) { + function __newString(str) { const length = str.length; - const ptr = alloc(length << 1, STRING_ID); + const ptr = new_(length << 1, STRING_ID); const U16 = new Uint16Array(memory.buffer); for (var i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i); @@ -148,7 +148,7 @@ var loader = (function(exports) { return ptr; } - extendedExports.__allocString = __allocString; + extendedExports.__newString = __newString; /** Reads a string from the module's memory by its pointer. */ function __getString(ptr) { @@ -193,17 +193,17 @@ var loader = (function(exports) { /** Allocates a new array in the module's memory and returns its retained pointer. */ - function __allocArray(id, values) { + function __newArray(id, values) { const info = getArrayInfo(id); const align = getValueAlign(info); const length = values.length; - const buf = alloc(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); + const buf = new_(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); let result; if (info & STATICARRAY) { result = buf; } else { - const arr = alloc(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); + const arr = new_(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); const U32 = new Uint32Array(memory.buffer); U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = retain(buf); U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; @@ -223,7 +223,7 @@ var loader = (function(exports) { return result; } - extendedExports.__allocArray = __allocArray; + extendedExports.__newArray = __newArray; /** Gets a live view on an array's values in the module's memory. Infers the array type from RTTI. */ function __getArrayView(arr) {