diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index 1d25919168..3d135a3bee 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -307,6 +307,15 @@ function removeBlock(root: Root, block: Block): void { // must perform those updates. } +function roundSize(size: usize): usize { + const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl + const inv: usize = sizeof() * 8 - 1; + const invRound = inv - SL_BITS; + return size < halfMaxSize + ? size + (1 << (invRound - clz(size))) - 1 + : size; +} + /** Searches for a free block of at least the specified size. */ function searchBlock(root: Root, size: usize): Block | null { // size was already asserted by caller @@ -317,13 +326,8 @@ function searchBlock(root: Root, size: usize): Block | null { fl = 0; sl = (size >> AL_BITS); } else { - const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl - const inv: usize = sizeof() * 8 - 1; - const invRound = inv - SL_BITS; - let requestSize = size < halfMaxSize - ? size + (1 << (invRound - clz(size))) - 1 - : size; - fl = inv - clz(requestSize); + const requestSize = roundSize(size); + fl = sizeof() * 8 - 1 - clz(requestSize); sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS)); fl -= SB_BITS - 1; } @@ -428,10 +432,8 @@ function growMemory(root: Root, size: usize): void { return; } // Here, both rounding performed in searchBlock ... - const halfMaxSize = BLOCK_MAXSIZE >> 1; - if (size < halfMaxSize) { // don't round last fl - const invRound = (sizeof() * 8 - 1) - SL_BITS; - size += (1 << (invRound - clz(size))) - 1; + if (size >= SB_SIZE) { + size = roundSize(size); } // and additional BLOCK_OVERHEAD must be taken into account. If we are going // to merge with the tail block, that's one time, otherwise it's two times. diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat index d5d22b6aef..fc771caa73 100644 --- a/tests/compiler/bindings/esm.debug.wat +++ b/tests/compiler/bindings/esm.debug.wat @@ -2026,22 +2026,6 @@ (local $pagesAfter i32) i32.const 0 drop - local.get $size - i32.const 536870910 - i32.lt_u - if - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $size - end memory.size $0 local.set $pagesBefore local.get $size @@ -2063,6 +2047,22 @@ i32.add local.set $size local.get $size + i32.const 536870910 + i32.lt_u + if + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $size + end + local.get $size i32.const 65535 i32.add i32.const 65535 diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index ad9d048a83..7ea107e5e0 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -1386,7 +1386,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $3 local.get $0 i32.const 16 i32.add @@ -1401,7 +1401,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 12 local.get $2 i32.const 19 @@ -1421,8 +1421,9 @@ if memory.size $0 local.tee $2 + local.get $5 i32.const 4 - local.get $4 + local.get $3 i32.load $0 offset=1568 local.get $2 i32.const 16 @@ -1431,38 +1432,40 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub i32.add - local.get $5 - local.get $5 + local.tee $4 i32.const 536870910 i32.lt_u - select - i32.add + if (result i32) + 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 + else + local.get $4 + end i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow $0 i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow $0 i32.const 0 i32.lt_s @@ -1470,7 +1473,7 @@ unreachable end end - local.get $4 + local.get $3 local.get $2 i32.const 16 i32.shl @@ -1479,7 +1482,7 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $4 + local.get $3 local.get $5 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1507,12 +1510,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load $0 - local.set $3 + local.set $4 local.get $5 i32.const 4 i32.add @@ -1526,7 +1529,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const -4 i32.and local.get $5 @@ -1537,7 +1540,7 @@ if local.get $2 local.get $5 - local.get $3 + local.get $4 i32.const 2 i32.and i32.or @@ -1547,19 +1550,19 @@ i32.add local.get $5 i32.add - local.tee $3 + local.tee $4 local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store $0 - local.get $4 local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store $0 diff --git a/tests/compiler/bindings/noExportRuntime.debug.wat b/tests/compiler/bindings/noExportRuntime.debug.wat index b08ffb88b4..d6621948a3 100644 --- a/tests/compiler/bindings/noExportRuntime.debug.wat +++ b/tests/compiler/bindings/noExportRuntime.debug.wat @@ -1062,7 +1062,7 @@ if i32.const 0 i32.const 512 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1108,7 +1108,7 @@ if i32.const 0 i32.const 512 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1141,7 +1141,7 @@ if i32.const 0 i32.const 512 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1385,7 +1385,7 @@ if i32.const 0 i32.const 512 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1714,7 +1714,7 @@ if i32.const 176 i32.const 512 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1723,6 +1723,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1752,24 +1772,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1807,7 +1816,7 @@ if i32.const 0 i32.const 512 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1878,7 +1887,7 @@ if i32.const 0 i32.const 512 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1942,19 +1951,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2043,7 +2044,7 @@ if i32.const 0 i32.const 512 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2158,7 +2159,7 @@ if i32.const 0 i32.const 512 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2178,7 +2179,7 @@ if i32.const 0 i32.const 512 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat index e3acf8a363..759421547c 100644 --- a/tests/compiler/bindings/noExportRuntime.release.wat +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -674,7 +674,7 @@ if i32.const 0 i32.const 1536 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -699,7 +699,7 @@ if i32.const 0 i32.const 1536 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -727,7 +727,7 @@ if i32.const 0 i32.const 1536 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1094,7 +1094,7 @@ if i32.const 0 i32.const 1536 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1178,7 +1178,7 @@ if i32.const 0 i32.const 1536 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1230,7 +1230,7 @@ if i32.const 0 i32.const 1536 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1329,7 +1329,7 @@ if i32.const 1200 i32.const 1536 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1354,6 +1354,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1364,21 +1386,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1420,7 +1427,7 @@ if i32.const 0 i32.const 1536 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1435,7 +1442,7 @@ if i32.const 0 i32.const 1536 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1454,7 +1461,7 @@ if i32.const 0 i32.const 1536 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat index d4393ad921..169584997b 100644 --- a/tests/compiler/bindings/raw.debug.wat +++ b/tests/compiler/bindings/raw.debug.wat @@ -2029,22 +2029,6 @@ (local $pagesAfter i32) i32.const 0 drop - local.get $size - i32.const 536870910 - i32.lt_u - if - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $size - end memory.size $0 local.set $pagesBefore local.get $size @@ -2066,6 +2050,22 @@ i32.add local.set $size local.get $size + i32.const 536870910 + i32.lt_u + if + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $size + end + local.get $size i32.const 65535 i32.add i32.const 65535 diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index 38613cc3db..6a02844128 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -1386,7 +1386,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $3 local.get $0 i32.const 16 i32.add @@ -1401,7 +1401,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 12 local.get $2 i32.const 19 @@ -1421,8 +1421,9 @@ if memory.size $0 local.tee $2 + local.get $5 i32.const 4 - local.get $4 + local.get $3 i32.load $0 offset=1568 local.get $2 i32.const 16 @@ -1431,38 +1432,40 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub i32.add - local.get $5 - local.get $5 + local.tee $4 i32.const 536870910 i32.lt_u - select - i32.add + if (result i32) + 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 + else + local.get $4 + end i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow $0 i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow $0 i32.const 0 i32.lt_s @@ -1470,7 +1473,7 @@ unreachable end end - local.get $4 + local.get $3 local.get $2 i32.const 16 i32.shl @@ -1479,7 +1482,7 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $4 + local.get $3 local.get $5 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1507,12 +1510,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load $0 - local.set $3 + local.set $4 local.get $5 i32.const 4 i32.add @@ -1526,7 +1529,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const -4 i32.and local.get $5 @@ -1537,7 +1540,7 @@ if local.get $2 local.get $5 - local.get $3 + local.get $4 i32.const 2 i32.and i32.or @@ -1547,19 +1550,19 @@ i32.add local.get $5 i32.add - local.tee $3 + local.tee $4 local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store $0 - local.get $4 local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store $0 diff --git a/tests/compiler/call-super.debug.wat b/tests/compiler/call-super.debug.wat index ee0438c5cd..fb91ea7874 100644 --- a/tests/compiler/call-super.debug.wat +++ b/tests/compiler/call-super.debug.wat @@ -1037,7 +1037,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1083,7 +1083,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1116,7 +1116,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1360,7 +1360,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1689,7 +1689,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1698,6 +1698,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1727,24 +1747,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1782,7 +1791,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1853,7 +1862,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1917,19 +1926,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2018,7 +2019,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2133,7 +2134,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2153,7 +2154,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat index 96f5a06379..bdcc3e03e7 100644 --- a/tests/compiler/call-super.release.wat +++ b/tests/compiler/call-super.release.wat @@ -621,7 +621,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -646,7 +646,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -674,7 +674,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1041,7 +1041,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 1440 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1177,7 +1177,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1276,7 +1276,7 @@ if i32.const 1104 i32.const 1440 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1301,6 +1301,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1311,21 +1333,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1367,7 +1374,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1382,7 +1389,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1401,7 +1408,7 @@ if i32.const 0 i32.const 1440 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class-implements.debug.wat b/tests/compiler/class-implements.debug.wat index 513488c3b1..bfeec249ca 100644 --- a/tests/compiler/class-implements.debug.wat +++ b/tests/compiler/class-implements.debug.wat @@ -1040,7 +1040,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1086,7 +1086,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1119,7 +1119,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1363,7 +1363,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1692,7 +1692,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1701,6 +1701,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1730,24 +1750,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1785,7 +1794,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1856,7 +1865,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1920,19 +1929,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2021,7 +2022,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2136,7 +2137,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2156,7 +2157,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat index 8241ee895b..d9ef9d7e18 100644 --- a/tests/compiler/class-implements.release.wat +++ b/tests/compiler/class-implements.release.wat @@ -670,7 +670,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -695,7 +695,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -723,7 +723,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1090,7 +1090,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1174,7 +1174,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1226,7 +1226,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1325,7 +1325,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1350,6 +1350,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1360,21 +1382,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1416,7 +1423,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1431,7 +1438,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1450,7 +1457,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class-overloading-cast.debug.wat b/tests/compiler/class-overloading-cast.debug.wat index 5d6b4c4440..c4342ebc91 100644 --- a/tests/compiler/class-overloading-cast.debug.wat +++ b/tests/compiler/class-overloading-cast.debug.wat @@ -1046,7 +1046,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1092,7 +1092,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1369,7 +1369,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1698,7 +1698,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1707,6 +1707,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1736,24 +1756,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1791,7 +1800,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1862,7 +1871,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1926,19 +1935,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2027,7 +2028,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2142,7 +2143,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2162,7 +2163,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat index 7f8807e5d0..14a24afc68 100644 --- a/tests/compiler/class-overloading-cast.release.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -658,7 +658,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -683,7 +683,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -711,7 +711,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1078,7 +1078,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1145,7 +1145,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1278,7 +1278,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1293,7 +1293,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class-overloading.debug.wat b/tests/compiler/class-overloading.debug.wat index 68188c2423..dc394bbf8e 100644 --- a/tests/compiler/class-overloading.debug.wat +++ b/tests/compiler/class-overloading.debug.wat @@ -1050,7 +1050,7 @@ if i32.const 0 i32.const 400 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1096,7 +1096,7 @@ if i32.const 0 i32.const 400 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1129,7 +1129,7 @@ if i32.const 0 i32.const 400 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1373,7 +1373,7 @@ if i32.const 0 i32.const 400 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1702,7 +1702,7 @@ if i32.const 64 i32.const 400 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1711,6 +1711,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1740,24 +1760,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1795,7 +1804,7 @@ if i32.const 0 i32.const 400 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1866,7 +1875,7 @@ if i32.const 0 i32.const 400 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1930,19 +1939,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2031,7 +2032,7 @@ if i32.const 0 i32.const 400 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2146,7 +2147,7 @@ if i32.const 0 i32.const 400 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2166,7 +2167,7 @@ if i32.const 0 i32.const 400 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 7c2ae8c167..8b358295ca 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -680,7 +680,7 @@ if i32.const 0 i32.const 1424 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -705,7 +705,7 @@ if i32.const 0 i32.const 1424 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -733,7 +733,7 @@ if i32.const 0 i32.const 1424 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1100,7 +1100,7 @@ if i32.const 0 i32.const 1424 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1167,7 +1167,7 @@ if i32.const 0 i32.const 1424 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1300,7 +1300,7 @@ if i32.const 0 i32.const 1424 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1315,7 +1315,7 @@ if i32.const 0 i32.const 1424 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index d982de291a..afda7eb500 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1164,7 +1164,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1197,7 +1197,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1441,7 +1441,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1770,7 +1770,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1779,6 +1779,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1808,24 +1828,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1863,7 +1872,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1934,7 +1943,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1998,19 +2007,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2099,7 +2100,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2214,7 +2215,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2234,7 +2235,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index d09c997d7e..c3107e7912 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -627,7 +627,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -652,7 +652,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -680,7 +680,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1047,7 +1047,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1131,7 +1131,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1183,7 +1183,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1282,7 +1282,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1307,6 +1307,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1317,21 +1339,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1373,7 +1380,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1388,7 +1395,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1407,7 +1414,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/constructor.debug.wat b/tests/compiler/constructor.debug.wat index fea14b0274..4a1a9a65b2 100644 --- a/tests/compiler/constructor.debug.wat +++ b/tests/compiler/constructor.debug.wat @@ -1046,7 +1046,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1092,7 +1092,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1369,7 +1369,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1698,7 +1698,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1707,6 +1707,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1736,24 +1756,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1791,7 +1800,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1862,7 +1871,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1926,19 +1935,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2027,7 +2028,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2142,7 +2143,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2162,7 +2163,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat index e90dc84a66..60eea444fc 100644 --- a/tests/compiler/constructor.release.wat +++ b/tests/compiler/constructor.release.wat @@ -684,7 +684,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -709,7 +709,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -737,7 +737,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1104,7 +1104,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1188,7 +1188,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1240,7 +1240,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1339,7 +1339,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1364,6 +1364,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1374,21 +1396,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1430,7 +1437,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1445,7 +1452,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1464,7 +1471,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/do.debug.wat b/tests/compiler/do.debug.wat index 8432628da9..91f52ccdb5 100644 --- a/tests/compiler/do.debug.wat +++ b/tests/compiler/do.debug.wat @@ -1441,7 +1441,7 @@ if i32.const 0 i32.const 400 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1487,7 +1487,7 @@ if i32.const 0 i32.const 400 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1520,7 +1520,7 @@ if i32.const 0 i32.const 400 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1764,7 +1764,7 @@ if i32.const 0 i32.const 400 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2093,7 +2093,7 @@ if i32.const 64 i32.const 400 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2102,6 +2102,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2131,24 +2151,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2186,7 +2195,7 @@ if i32.const 0 i32.const 400 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2257,7 +2266,7 @@ if i32.const 0 i32.const 400 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2321,19 +2330,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2422,7 +2423,7 @@ if i32.const 0 i32.const 400 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2537,7 +2538,7 @@ if i32.const 0 i32.const 400 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2557,7 +2558,7 @@ if i32.const 0 i32.const 400 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat index eae6e23206..0bcfedbba6 100644 --- a/tests/compiler/do.release.wat +++ b/tests/compiler/do.release.wat @@ -620,7 +620,7 @@ if i32.const 0 i32.const 1424 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -645,7 +645,7 @@ if i32.const 0 i32.const 1424 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -673,7 +673,7 @@ if i32.const 0 i32.const 1424 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1040,7 +1040,7 @@ if i32.const 0 i32.const 1424 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1107,7 +1107,7 @@ if i32.const 0 i32.const 1424 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1240,7 +1240,7 @@ if i32.const 0 i32.const 1424 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1255,7 +1255,7 @@ if i32.const 0 i32.const 1424 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/duplicate-fields.debug.wat b/tests/compiler/duplicate-fields.debug.wat index 7bf87ccaba..e637ab0c4b 100644 --- a/tests/compiler/duplicate-fields.debug.wat +++ b/tests/compiler/duplicate-fields.debug.wat @@ -1040,7 +1040,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1086,7 +1086,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1119,7 +1119,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1363,7 +1363,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1692,7 +1692,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1701,6 +1701,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1730,24 +1750,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1785,7 +1794,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1856,7 +1865,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1920,19 +1929,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2021,7 +2022,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2136,7 +2137,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2156,7 +2157,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat index 493ded77a6..53dedcd810 100644 --- a/tests/compiler/duplicate-fields.release.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -634,7 +634,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -659,7 +659,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -687,7 +687,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1054,7 +1054,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1138,7 +1138,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1190,7 +1190,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1289,7 +1289,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1314,6 +1314,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1324,21 +1346,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1380,7 +1387,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1395,7 +1402,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1414,7 +1421,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/empty-exportruntime.debug.wat b/tests/compiler/empty-exportruntime.debug.wat index 8f69345eb5..1c5c21375c 100644 --- a/tests/compiler/empty-exportruntime.debug.wat +++ b/tests/compiler/empty-exportruntime.debug.wat @@ -1039,7 +1039,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1085,7 +1085,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1362,7 +1362,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1691,7 +1691,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1700,6 +1700,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1729,24 +1749,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1784,7 +1793,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1855,7 +1864,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1919,19 +1928,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2020,7 +2021,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2135,7 +2136,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2155,7 +2156,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat index caf4fb6744..8ac160e12a 100644 --- a/tests/compiler/empty-exportruntime.release.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -635,7 +635,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -660,7 +660,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -688,7 +688,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1055,7 +1055,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1139,7 +1139,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1191,7 +1191,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1290,7 +1290,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1315,6 +1315,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1325,21 +1347,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1381,7 +1388,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1396,7 +1403,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1415,7 +1422,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/empty-new.debug.wat b/tests/compiler/empty-new.debug.wat index de8b37131f..9d3c257697 100644 --- a/tests/compiler/empty-new.debug.wat +++ b/tests/compiler/empty-new.debug.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))) @@ -1032,7 +1032,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1078,7 +1078,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1111,7 +1111,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1355,7 +1355,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1684,7 +1684,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1693,6 +1693,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1722,24 +1742,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1777,7 +1786,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1848,7 +1857,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1912,19 +1921,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2013,7 +2014,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2128,7 +2129,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2148,7 +2149,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat index 9cce3d1af5..af3b8bd9f4 100644 --- a/tests/compiler/empty-new.release.wat +++ b/tests/compiler/empty-new.release.wat @@ -617,7 +617,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -642,7 +642,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -670,7 +670,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1037,7 +1037,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1104,7 +1104,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1237,7 +1237,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1252,7 +1252,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/exportstar-rereexport.debug.wat b/tests/compiler/exportstar-rereexport.debug.wat index 6ab32b9f63..663ea26eea 100644 --- a/tests/compiler/exportstar-rereexport.debug.wat +++ b/tests/compiler/exportstar-rereexport.debug.wat @@ -1072,7 +1072,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1151,7 +1151,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1395,7 +1395,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1724,7 +1724,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1733,6 +1733,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1762,24 +1782,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1817,7 +1826,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1888,7 +1897,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1952,19 +1961,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2053,7 +2054,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2168,7 +2169,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2188,7 +2189,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat index 2579e676cb..622828f662 100644 --- a/tests/compiler/exportstar-rereexport.release.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -651,7 +651,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -676,7 +676,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -704,7 +704,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1071,7 +1071,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1138,7 +1138,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1271,7 +1271,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1286,7 +1286,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/extends-baseaggregate.debug.wat b/tests/compiler/extends-baseaggregate.debug.wat index b4ad0cd136..264ed92d68 100644 --- a/tests/compiler/extends-baseaggregate.debug.wat +++ b/tests/compiler/extends-baseaggregate.debug.wat @@ -1042,7 +1042,7 @@ if i32.const 0 i32.const 528 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1088,7 +1088,7 @@ if i32.const 0 i32.const 528 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1121,7 +1121,7 @@ if i32.const 0 i32.const 528 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1365,7 +1365,7 @@ if i32.const 0 i32.const 528 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1694,7 +1694,7 @@ if i32.const 192 i32.const 528 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1703,6 +1703,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1732,24 +1752,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1787,7 +1796,7 @@ if i32.const 0 i32.const 528 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1858,7 +1867,7 @@ if i32.const 0 i32.const 528 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1922,19 +1931,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2023,7 +2024,7 @@ if i32.const 0 i32.const 528 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2138,7 +2139,7 @@ if i32.const 0 i32.const 528 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2158,7 +2159,7 @@ if i32.const 0 i32.const 528 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat index e7f2d48b36..402d658397 100644 --- a/tests/compiler/extends-baseaggregate.release.wat +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -637,7 +637,7 @@ if i32.const 0 i32.const 1552 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -662,7 +662,7 @@ if i32.const 0 i32.const 1552 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -690,7 +690,7 @@ if i32.const 0 i32.const 1552 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1057,7 +1057,7 @@ if i32.const 0 i32.const 1552 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1141,7 +1141,7 @@ if i32.const 0 i32.const 1552 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1193,7 +1193,7 @@ if i32.const 0 i32.const 1552 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1292,7 +1292,7 @@ if i32.const 1216 i32.const 1552 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1317,6 +1317,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1327,21 +1349,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1383,7 +1390,7 @@ if i32.const 0 i32.const 1552 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1398,7 +1405,7 @@ if i32.const 0 i32.const 1552 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1417,7 +1424,7 @@ if i32.const 0 i32.const 1552 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/extends-recursive.debug.wat b/tests/compiler/extends-recursive.debug.wat index cc418dc5a2..b83754c683 100644 --- a/tests/compiler/extends-recursive.debug.wat +++ b/tests/compiler/extends-recursive.debug.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_=>_none (func (param i32 i32 i32))) @@ -1032,7 +1032,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1078,7 +1078,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1111,7 +1111,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1355,7 +1355,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1684,7 +1684,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1693,6 +1693,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1722,24 +1742,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1777,7 +1786,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1848,7 +1857,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1912,19 +1921,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2013,7 +2014,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2128,7 +2129,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2148,7 +2149,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat index 55177fd2de..ee63b3d673 100644 --- a/tests/compiler/extends-recursive.release.wat +++ b/tests/compiler/extends-recursive.release.wat @@ -618,7 +618,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -643,7 +643,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -671,7 +671,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1038,7 +1038,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1122,7 +1122,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1174,7 +1174,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1273,7 +1273,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1298,6 +1298,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1308,21 +1330,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1364,7 +1371,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1379,7 +1386,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1398,7 +1405,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/field-initialization.debug.wat b/tests/compiler/field-initialization.debug.wat index 8d33900225..36c8f24582 100644 --- a/tests/compiler/field-initialization.debug.wat +++ b/tests/compiler/field-initialization.debug.wat @@ -1043,7 +1043,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1089,7 +1089,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1122,7 +1122,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1366,7 +1366,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1695,7 +1695,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1704,6 +1704,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1733,24 +1753,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1788,7 +1797,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1859,7 +1868,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1923,19 +1932,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2024,7 +2025,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2139,7 +2140,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2159,7 +2160,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat index 2b12e4b206..4636553fa0 100644 --- a/tests/compiler/field-initialization.release.wat +++ b/tests/compiler/field-initialization.release.wat @@ -638,7 +638,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -663,7 +663,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -691,7 +691,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1058,7 +1058,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1142,7 +1142,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1194,7 +1194,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1293,7 +1293,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1318,6 +1318,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1328,21 +1350,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1384,7 +1391,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1399,7 +1406,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1418,7 +1425,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/field.debug.wat b/tests/compiler/field.debug.wat index 8ba0b11431..e20ed15673 100644 --- a/tests/compiler/field.debug.wat +++ b/tests/compiler/field.debug.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_=>_none (func (param i32 i32 i32))) @@ -1035,7 +1035,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1114,7 +1114,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1358,7 +1358,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1687,7 +1687,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1696,6 +1696,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1725,24 +1745,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1780,7 +1789,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1851,7 +1860,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1915,19 +1924,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2016,7 +2017,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2131,7 +2132,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2151,7 +2152,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat index 17ce80649a..dc9afffca7 100644 --- a/tests/compiler/field.release.wat +++ b/tests/compiler/field.release.wat @@ -621,7 +621,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -646,7 +646,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -674,7 +674,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1041,7 +1041,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1177,7 +1177,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1276,7 +1276,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1301,6 +1301,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1311,21 +1333,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1367,7 +1374,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1382,7 +1389,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1401,7 +1408,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/for.debug.wat b/tests/compiler/for.debug.wat index 407a1ca890..aa94a43a4f 100644 --- a/tests/compiler/for.debug.wat +++ b/tests/compiler/for.debug.wat @@ -1422,7 +1422,7 @@ if i32.const 0 i32.const 400 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1468,7 +1468,7 @@ if i32.const 0 i32.const 400 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1501,7 +1501,7 @@ if i32.const 0 i32.const 400 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1745,7 +1745,7 @@ if i32.const 0 i32.const 400 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2074,7 +2074,7 @@ if i32.const 64 i32.const 400 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2083,6 +2083,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2112,24 +2132,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2167,7 +2176,7 @@ if i32.const 0 i32.const 400 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2238,7 +2247,7 @@ if i32.const 0 i32.const 400 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2302,19 +2311,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2403,7 +2404,7 @@ if i32.const 0 i32.const 400 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2518,7 +2519,7 @@ if i32.const 0 i32.const 400 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2538,7 +2539,7 @@ if i32.const 0 i32.const 400 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat index 008278b7d7..da3cbbfa5b 100644 --- a/tests/compiler/for.release.wat +++ b/tests/compiler/for.release.wat @@ -620,7 +620,7 @@ if i32.const 0 i32.const 1424 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -645,7 +645,7 @@ if i32.const 0 i32.const 1424 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -673,7 +673,7 @@ if i32.const 0 i32.const 1424 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1040,7 +1040,7 @@ if i32.const 0 i32.const 1424 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1107,7 +1107,7 @@ if i32.const 0 i32.const 1424 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1240,7 +1240,7 @@ if i32.const 0 i32.const 1424 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1255,7 +1255,7 @@ if i32.const 0 i32.const 1424 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/function-call.debug.wat b/tests/compiler/function-call.debug.wat index fafbdad6aa..5f87d1289e 100644 --- a/tests/compiler/function-call.debug.wat +++ b/tests/compiler/function-call.debug.wat @@ -1071,7 +1071,7 @@ if i32.const 0 i32.const 592 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1117,7 +1117,7 @@ if i32.const 0 i32.const 592 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1150,7 +1150,7 @@ if i32.const 0 i32.const 592 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1394,7 +1394,7 @@ if i32.const 0 i32.const 592 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1723,7 +1723,7 @@ if i32.const 256 i32.const 592 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1732,6 +1732,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1761,24 +1781,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1816,7 +1825,7 @@ if i32.const 0 i32.const 592 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1887,7 +1896,7 @@ if i32.const 0 i32.const 592 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1951,19 +1960,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2052,7 +2053,7 @@ if i32.const 0 i32.const 592 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2167,7 +2168,7 @@ if i32.const 0 i32.const 592 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2187,7 +2188,7 @@ if i32.const 0 i32.const 592 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index c784df4f93..29e7b4f8cc 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -659,7 +659,7 @@ if i32.const 0 i32.const 1616 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -684,7 +684,7 @@ if i32.const 0 i32.const 1616 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -712,7 +712,7 @@ if i32.const 0 i32.const 1616 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1079,7 +1079,7 @@ if i32.const 0 i32.const 1616 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1146,7 +1146,7 @@ if i32.const 0 i32.const 1616 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1279,7 +1279,7 @@ if i32.const 0 i32.const 1616 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1294,7 +1294,7 @@ if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/function-expression.debug.wat b/tests/compiler/function-expression.debug.wat index d4bb092868..37be0f6fd1 100644 --- a/tests/compiler/function-expression.debug.wat +++ b/tests/compiler/function-expression.debug.wat @@ -1228,7 +1228,7 @@ if i32.const 0 i32.const 912 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1274,7 +1274,7 @@ if i32.const 0 i32.const 912 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1307,7 +1307,7 @@ if i32.const 0 i32.const 912 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1551,7 +1551,7 @@ if i32.const 0 i32.const 912 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1880,7 +1880,7 @@ if i32.const 576 i32.const 912 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1889,6 +1889,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1918,24 +1938,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1973,7 +1982,7 @@ if i32.const 0 i32.const 912 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2044,7 +2053,7 @@ if i32.const 0 i32.const 912 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2108,19 +2117,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2209,7 +2210,7 @@ if i32.const 0 i32.const 912 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2324,7 +2325,7 @@ if i32.const 0 i32.const 912 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2344,7 +2345,7 @@ if i32.const 0 i32.const 912 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index 81beccd9b2..04e328f81d 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -685,7 +685,7 @@ if i32.const 0 i32.const 1936 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -710,7 +710,7 @@ if i32.const 0 i32.const 1936 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -738,7 +738,7 @@ if i32.const 0 i32.const 1936 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1105,7 +1105,7 @@ if i32.const 0 i32.const 1936 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1172,7 +1172,7 @@ if i32.const 0 i32.const 1936 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1305,7 +1305,7 @@ if i32.const 0 i32.const 1936 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1320,7 +1320,7 @@ if i32.const 0 i32.const 1936 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/getter-call.debug.wat b/tests/compiler/getter-call.debug.wat index 35e9824008..c0548a9af5 100644 --- a/tests/compiler/getter-call.debug.wat +++ b/tests/compiler/getter-call.debug.wat @@ -1035,7 +1035,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1114,7 +1114,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1358,7 +1358,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1687,7 +1687,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1696,6 +1696,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1725,24 +1745,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1780,7 +1789,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1851,7 +1860,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1915,19 +1924,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2016,7 +2017,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2131,7 +2132,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2151,7 +2152,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index 76889b92a2..485f0d940a 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -623,7 +623,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -648,7 +648,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -676,7 +676,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1043,7 +1043,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1110,7 +1110,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1243,7 +1243,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1258,7 +1258,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/heap.debug.wat b/tests/compiler/heap.debug.wat index 15b46c46c7..bf6e6caca9 100644 --- a/tests/compiler/heap.debug.wat +++ b/tests/compiler/heap.debug.wat @@ -681,7 +681,7 @@ if i32.const 0 i32.const 32 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -727,7 +727,7 @@ if i32.const 0 i32.const 32 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -760,7 +760,7 @@ if i32.const 0 i32.const 32 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1002,7 +1002,7 @@ if i32.const 96 i32.const 32 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1011,6 +1011,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1040,24 +1060,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1095,7 +1104,7 @@ if i32.const 0 i32.const 32 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1166,7 +1175,7 @@ if i32.const 0 i32.const 32 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1230,19 +1239,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -1331,7 +1332,7 @@ if i32.const 0 i32.const 32 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1446,7 +1447,7 @@ if i32.const 0 i32.const 32 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1466,7 +1467,7 @@ if i32.const 0 i32.const 32 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1531,7 +1532,7 @@ if i32.const 0 i32.const 32 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat index baefb0fa14..417f51de5b 100644 --- a/tests/compiler/heap.release.wat +++ b/tests/compiler/heap.release.wat @@ -425,7 +425,7 @@ if i32.const 0 i32.const 1056 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -450,7 +450,7 @@ if i32.const 0 i32.const 1056 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -478,7 +478,7 @@ if i32.const 0 i32.const 1056 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -616,7 +616,7 @@ if i32.const 1120 i32.const 1056 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -687,7 +687,7 @@ if i32.const 0 i32.const 1056 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -739,7 +739,7 @@ if i32.const 0 i32.const 1056 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -774,7 +774,7 @@ if i32.const 0 i32.const 1056 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -845,6 +845,28 @@ if memory.size $0 local.tee $3 + local.get $2 + i32.const 256 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + else + local.get $2 + end i32.const 4 local.get $0 i32.load $0 offset=1568 @@ -855,21 +877,6 @@ i32.sub 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 @@ -911,7 +918,7 @@ if i32.const 0 i32.const 1056 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -926,7 +933,7 @@ if i32.const 0 i32.const 1056 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -963,7 +970,7 @@ if i32.const 0 i32.const 1056 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.debug.wat b/tests/compiler/infer-array.debug.wat index 6a0d4d81de..2ee919b26d 100644 --- a/tests/compiler/infer-array.debug.wat +++ b/tests/compiler/infer-array.debug.wat @@ -1054,7 +1054,7 @@ if i32.const 0 i32.const 400 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1100,7 +1100,7 @@ if i32.const 0 i32.const 400 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1133,7 +1133,7 @@ if i32.const 0 i32.const 400 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1377,7 +1377,7 @@ if i32.const 0 i32.const 400 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1706,7 +1706,7 @@ if i32.const 64 i32.const 400 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1715,6 +1715,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1744,24 +1764,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1799,7 +1808,7 @@ if i32.const 0 i32.const 400 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1870,7 +1879,7 @@ if i32.const 0 i32.const 400 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1934,19 +1943,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2035,7 +2036,7 @@ if i32.const 0 i32.const 400 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2150,7 +2151,7 @@ if i32.const 0 i32.const 400 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2170,7 +2171,7 @@ if i32.const 0 i32.const 400 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat index ecdace4dee..b2492c4fa9 100644 --- a/tests/compiler/infer-array.release.wat +++ b/tests/compiler/infer-array.release.wat @@ -660,7 +660,7 @@ if i32.const 0 i32.const 1424 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -685,7 +685,7 @@ if i32.const 0 i32.const 1424 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -713,7 +713,7 @@ if i32.const 0 i32.const 1424 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1080,7 +1080,7 @@ if i32.const 0 i32.const 1424 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1164,7 +1164,7 @@ if i32.const 0 i32.const 1424 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1216,7 +1216,7 @@ if i32.const 0 i32.const 1424 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1315,7 +1315,7 @@ if i32.const 1088 i32.const 1424 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1340,6 +1340,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1350,21 +1372,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1406,7 +1413,7 @@ if i32.const 0 i32.const 1424 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1421,7 +1428,7 @@ if i32.const 0 i32.const 1424 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1440,7 +1447,7 @@ if i32.const 0 i32.const 1424 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-generic.debug.wat b/tests/compiler/infer-generic.debug.wat index 8f233ef65a..84daed223d 100644 --- a/tests/compiler/infer-generic.debug.wat +++ b/tests/compiler/infer-generic.debug.wat @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 544 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1127,7 +1127,7 @@ if i32.const 0 i32.const 544 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1160,7 +1160,7 @@ if i32.const 0 i32.const 544 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1404,7 +1404,7 @@ if i32.const 0 i32.const 544 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1733,7 +1733,7 @@ if i32.const 208 i32.const 544 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1742,6 +1742,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1771,24 +1791,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1826,7 +1835,7 @@ if i32.const 0 i32.const 544 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1897,7 +1906,7 @@ if i32.const 0 i32.const 544 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1961,19 +1970,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2062,7 +2063,7 @@ if i32.const 0 i32.const 544 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2177,7 +2178,7 @@ if i32.const 0 i32.const 544 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2197,7 +2198,7 @@ if i32.const 0 i32.const 544 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index a3aa2380b5..f62702fe86 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -647,7 +647,7 @@ if i32.const 0 i32.const 1568 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -672,7 +672,7 @@ if i32.const 0 i32.const 1568 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -700,7 +700,7 @@ if i32.const 0 i32.const 1568 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1067,7 +1067,7 @@ if i32.const 0 i32.const 1568 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1151,7 +1151,7 @@ if i32.const 0 i32.const 1568 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1203,7 +1203,7 @@ if i32.const 0 i32.const 1568 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1302,7 +1302,7 @@ if i32.const 1232 i32.const 1568 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1327,6 +1327,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1337,21 +1359,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1393,7 +1400,7 @@ if i32.const 0 i32.const 1568 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1408,7 +1415,7 @@ if i32.const 0 i32.const 1568 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1427,7 +1434,7 @@ if i32.const 0 i32.const 1568 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/inlining.debug.wat b/tests/compiler/inlining.debug.wat index 9aa02eb8e6..3740c9af7c 100644 --- a/tests/compiler/inlining.debug.wat +++ b/tests/compiler/inlining.debug.wat @@ -1300,7 +1300,7 @@ if i32.const 0 i32.const 448 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1346,7 +1346,7 @@ if i32.const 0 i32.const 448 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1379,7 +1379,7 @@ if i32.const 0 i32.const 448 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1623,7 +1623,7 @@ if i32.const 0 i32.const 448 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1952,7 +1952,7 @@ if i32.const 112 i32.const 448 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1961,6 +1961,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1990,24 +2010,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2045,7 +2054,7 @@ if i32.const 0 i32.const 448 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2116,7 +2125,7 @@ if i32.const 0 i32.const 448 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2180,19 +2189,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2281,7 +2282,7 @@ if i32.const 0 i32.const 448 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2396,7 +2397,7 @@ if i32.const 0 i32.const 448 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2416,7 +2417,7 @@ if i32.const 0 i32.const 448 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index 86a09559d2..77804a8363 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -633,7 +633,7 @@ if i32.const 0 i32.const 1472 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -658,7 +658,7 @@ if i32.const 0 i32.const 1472 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -686,7 +686,7 @@ if i32.const 0 i32.const 1472 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1053,7 +1053,7 @@ if i32.const 0 i32.const 1472 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1137,7 +1137,7 @@ if i32.const 0 i32.const 1472 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1189,7 +1189,7 @@ if i32.const 0 i32.const 1472 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1288,7 +1288,7 @@ if i32.const 1136 i32.const 1472 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1313,6 +1313,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1323,21 +1345,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1379,7 +1386,7 @@ if i32.const 0 i32.const 1472 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1394,7 +1401,7 @@ if i32.const 0 i32.const 1472 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1413,7 +1420,7 @@ if i32.const 0 i32.const 1472 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/instanceof.debug.wat b/tests/compiler/instanceof.debug.wat index 7a6e9d3571..a0d0a1b0aa 100644 --- a/tests/compiler/instanceof.debug.wat +++ b/tests/compiler/instanceof.debug.wat @@ -1056,7 +1056,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1102,7 +1102,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1135,7 +1135,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1379,7 +1379,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1708,7 +1708,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1717,6 +1717,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1746,24 +1766,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1801,7 +1810,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1872,7 +1881,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1936,19 +1945,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2037,7 +2038,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2152,7 +2153,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2172,7 +2173,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat index 6e380ceb09..e5507b780a 100644 --- a/tests/compiler/instanceof.release.wat +++ b/tests/compiler/instanceof.release.wat @@ -725,7 +725,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -750,7 +750,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -778,7 +778,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1145,7 +1145,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1212,7 +1212,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1345,7 +1345,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1360,7 +1360,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1095.debug.wat b/tests/compiler/issues/1095.debug.wat index 7bc52ec422..3885debe7a 100644 --- a/tests/compiler/issues/1095.debug.wat +++ b/tests/compiler/issues/1095.debug.wat @@ -1035,7 +1035,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1114,7 +1114,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1358,7 +1358,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1687,7 +1687,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1696,6 +1696,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1725,24 +1745,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1780,7 +1789,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1851,7 +1860,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1915,19 +1924,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2016,7 +2017,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2131,7 +2132,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2151,7 +2152,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat index 833d7bb9b4..4ac8523a24 100644 --- a/tests/compiler/issues/1095.release.wat +++ b/tests/compiler/issues/1095.release.wat @@ -624,7 +624,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -649,7 +649,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -677,7 +677,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1044,7 +1044,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1128,7 +1128,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1180,7 +1180,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1279,7 +1279,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1304,6 +1304,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1314,21 +1336,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1370,7 +1377,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1385,7 +1392,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1404,7 +1411,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1225.debug.wat b/tests/compiler/issues/1225.debug.wat index 5766a3ebaa..9514862a47 100644 --- a/tests/compiler/issues/1225.debug.wat +++ b/tests/compiler/issues/1225.debug.wat @@ -1050,7 +1050,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1096,7 +1096,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1129,7 +1129,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1373,7 +1373,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1702,7 +1702,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1711,6 +1711,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1740,24 +1760,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1795,7 +1804,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1866,7 +1875,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1930,19 +1939,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2031,7 +2032,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2146,7 +2147,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2166,7 +2167,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat index 27ad0ab4d1..40774e3a59 100644 --- a/tests/compiler/issues/1225.release.wat +++ b/tests/compiler/issues/1225.release.wat @@ -629,7 +629,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -654,7 +654,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -682,7 +682,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1049,7 +1049,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1116,7 +1116,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1249,7 +1249,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1264,7 +1264,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1699.debug.wat b/tests/compiler/issues/1699.debug.wat index 6fa0fa92a5..8181dca210 100644 --- a/tests/compiler/issues/1699.debug.wat +++ b/tests/compiler/issues/1699.debug.wat @@ -1037,7 +1037,7 @@ if i32.const 0 i32.const 464 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1083,7 +1083,7 @@ if i32.const 0 i32.const 464 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1116,7 +1116,7 @@ if i32.const 0 i32.const 464 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1360,7 +1360,7 @@ if i32.const 0 i32.const 464 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1689,7 +1689,7 @@ if i32.const 128 i32.const 464 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1698,6 +1698,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1727,24 +1747,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1782,7 +1791,7 @@ if i32.const 0 i32.const 464 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1853,7 +1862,7 @@ if i32.const 0 i32.const 464 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1917,19 +1926,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2018,7 +2019,7 @@ if i32.const 0 i32.const 464 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2133,7 +2134,7 @@ if i32.const 0 i32.const 464 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2153,7 +2154,7 @@ if i32.const 0 i32.const 464 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat index 2228f68687..227931cb74 100644 --- a/tests/compiler/issues/1699.release.wat +++ b/tests/compiler/issues/1699.release.wat @@ -631,7 +631,7 @@ if i32.const 0 i32.const 1488 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -656,7 +656,7 @@ if i32.const 0 i32.const 1488 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -684,7 +684,7 @@ if i32.const 0 i32.const 1488 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1051,7 +1051,7 @@ if i32.const 0 i32.const 1488 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1135,7 +1135,7 @@ if i32.const 0 i32.const 1488 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1187,7 +1187,7 @@ if i32.const 0 i32.const 1488 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1286,7 +1286,7 @@ if i32.const 1152 i32.const 1488 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1311,6 +1311,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1321,21 +1343,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1377,7 +1384,7 @@ if i32.const 0 i32.const 1488 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1392,7 +1399,7 @@ if i32.const 0 i32.const 1488 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1411,7 +1418,7 @@ if i32.const 0 i32.const 1488 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/2166.debug.wat b/tests/compiler/issues/2166.debug.wat index 95bcc64d24..39c49cc006 100644 --- a/tests/compiler/issues/2166.debug.wat +++ b/tests/compiler/issues/2166.debug.wat @@ -1039,7 +1039,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1085,7 +1085,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1362,7 +1362,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1691,7 +1691,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1700,6 +1700,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1729,24 +1749,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1784,7 +1793,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1855,7 +1864,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1919,19 +1928,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2020,7 +2021,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2135,7 +2136,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2155,7 +2156,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat index 50358d77ee..addb2abaee 100644 --- a/tests/compiler/issues/2166.release.wat +++ b/tests/compiler/issues/2166.release.wat @@ -629,7 +629,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -654,7 +654,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -682,7 +682,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1049,7 +1049,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1116,7 +1116,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1249,7 +1249,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1264,7 +1264,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/2322/index.debug.wat b/tests/compiler/issues/2322/index.debug.wat index 12436fad86..7ff1a4a09b 100644 --- a/tests/compiler/issues/2322/index.debug.wat +++ b/tests/compiler/issues/2322/index.debug.wat @@ -1033,7 +1033,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1079,7 +1079,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1112,7 +1112,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1356,7 +1356,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1685,7 +1685,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1694,6 +1694,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1723,24 +1743,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1778,7 +1787,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1849,7 +1858,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1913,19 +1922,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2014,7 +2015,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2129,7 +2130,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2149,7 +2150,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat index 0d93ed1ae6..f1d42124ee 100644 --- a/tests/compiler/issues/2322/index.release.wat +++ b/tests/compiler/issues/2322/index.release.wat @@ -619,7 +619,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -644,7 +644,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -672,7 +672,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1039,7 +1039,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1123,7 +1123,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1175,7 +1175,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1274,7 +1274,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1299,6 +1299,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1309,21 +1331,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1365,7 +1372,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1380,7 +1387,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1399,7 +1406,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/2622.debug.wat b/tests/compiler/issues/2622.debug.wat index 114640c3e5..860a0a0b91 100644 --- a/tests/compiler/issues/2622.debug.wat +++ b/tests/compiler/issues/2622.debug.wat @@ -1036,7 +1036,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1082,7 +1082,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1115,7 +1115,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1359,7 +1359,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1688,7 +1688,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1697,6 +1697,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1726,24 +1746,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1781,7 +1790,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1852,7 +1861,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1916,19 +1925,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2017,7 +2018,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2132,7 +2133,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2152,7 +2153,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat index b2ba09af23..2b438537a0 100644 --- a/tests/compiler/issues/2622.release.wat +++ b/tests/compiler/issues/2622.release.wat @@ -658,7 +658,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -683,7 +683,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -711,7 +711,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1078,7 +1078,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1145,7 +1145,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1278,7 +1278,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1293,7 +1293,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/logical.debug.wat b/tests/compiler/logical.debug.wat index fca6162159..fad4d4ffc2 100644 --- a/tests/compiler/logical.debug.wat +++ b/tests/compiler/logical.debug.wat @@ -1062,7 +1062,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1108,7 +1108,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1141,7 +1141,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1385,7 +1385,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1714,7 +1714,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1723,6 +1723,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1752,24 +1772,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1807,7 +1816,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1878,7 +1887,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1942,19 +1951,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2043,7 +2044,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2158,7 +2159,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2178,7 +2179,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat index 5a368d6b60..abc2afedfa 100644 --- a/tests/compiler/logical.release.wat +++ b/tests/compiler/logical.release.wat @@ -634,7 +634,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -659,7 +659,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -687,7 +687,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1054,7 +1054,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1121,7 +1121,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1254,7 +1254,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1269,7 +1269,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/managed-cast.debug.wat b/tests/compiler/managed-cast.debug.wat index e18897dfca..4fb7b175d9 100644 --- a/tests/compiler/managed-cast.debug.wat +++ b/tests/compiler/managed-cast.debug.wat @@ -1035,7 +1035,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1114,7 +1114,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1358,7 +1358,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1687,7 +1687,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1696,6 +1696,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1725,24 +1745,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1780,7 +1789,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1851,7 +1860,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1915,19 +1924,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2016,7 +2017,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2131,7 +2132,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2151,7 +2152,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat index 19cbe6d573..5e26cf390f 100644 --- a/tests/compiler/managed-cast.release.wat +++ b/tests/compiler/managed-cast.release.wat @@ -624,7 +624,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -649,7 +649,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -677,7 +677,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1044,7 +1044,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1111,7 +1111,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1244,7 +1244,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1259,7 +1259,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/new.debug.wat b/tests/compiler/new.debug.wat index fecb460f29..b0a882fcdb 100644 --- a/tests/compiler/new.debug.wat +++ b/tests/compiler/new.debug.wat @@ -1038,7 +1038,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1084,7 +1084,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1117,7 +1117,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1361,7 +1361,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1690,7 +1690,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1699,6 +1699,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1728,24 +1748,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1783,7 +1792,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1854,7 +1863,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1918,19 +1927,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2019,7 +2020,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2134,7 +2135,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2154,7 +2155,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat index f99abb0702..438eba16e8 100644 --- a/tests/compiler/new.release.wat +++ b/tests/compiler/new.release.wat @@ -660,7 +660,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -685,7 +685,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -713,7 +713,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1080,7 +1080,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1147,7 +1147,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1280,7 +1280,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1295,7 +1295,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/object-literal.debug.wat b/tests/compiler/object-literal.debug.wat index b520990ae2..34b20b48dc 100644 --- a/tests/compiler/object-literal.debug.wat +++ b/tests/compiler/object-literal.debug.wat @@ -1130,7 +1130,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1176,7 +1176,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1209,7 +1209,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1453,7 +1453,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1782,7 +1782,7 @@ if i32.const 288 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1791,6 +1791,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1820,24 +1840,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1875,7 +1884,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1946,7 +1955,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2010,19 +2019,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2111,7 +2112,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2226,7 +2227,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2246,7 +2247,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat index 18760fe16f..6aed498155 100644 --- a/tests/compiler/object-literal.release.wat +++ b/tests/compiler/object-literal.release.wat @@ -634,7 +634,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -659,7 +659,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -687,7 +687,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -855,7 +855,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1144,7 +1144,7 @@ if i32.const 0 i32.const 1440 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1196,7 +1196,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1227,7 +1227,7 @@ if i32.const 1312 i32.const 1440 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1252,6 +1252,28 @@ if memory.size $0 local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + else + local.get $3 + end i32.const 4 local.get $0 i32.load $0 offset=1568 @@ -1262,21 +1284,6 @@ i32.sub i32.ne i32.shl - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1318,7 +1325,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1333,7 +1340,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1352,7 +1359,7 @@ if i32.const 0 i32.const 1440 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/optional-typeparameters.debug.wat b/tests/compiler/optional-typeparameters.debug.wat index 39e9976fbe..ea99c2b3f8 100644 --- a/tests/compiler/optional-typeparameters.debug.wat +++ b/tests/compiler/optional-typeparameters.debug.wat @@ -1046,7 +1046,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1092,7 +1092,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1369,7 +1369,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1698,7 +1698,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1707,6 +1707,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1736,24 +1756,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1791,7 +1800,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1862,7 +1871,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1926,19 +1935,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2027,7 +2028,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2142,7 +2143,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2162,7 +2163,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat index 59d641d65d..338470aae5 100644 --- a/tests/compiler/optional-typeparameters.release.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -646,7 +646,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -671,7 +671,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -699,7 +699,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1066,7 +1066,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1133,7 +1133,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1266,7 +1266,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1281,7 +1281,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/reexport.debug.wat b/tests/compiler/reexport.debug.wat index b1c039ccac..b19004b09e 100644 --- a/tests/compiler/reexport.debug.wat +++ b/tests/compiler/reexport.debug.wat @@ -1079,7 +1079,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1158,7 +1158,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1402,7 +1402,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1731,7 +1731,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1740,6 +1740,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1769,24 +1789,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1824,7 +1833,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1895,7 +1904,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1959,19 +1968,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2060,7 +2061,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2175,7 +2176,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2195,7 +2196,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat index 9baabf7a00..aa6cf67823 100644 --- a/tests/compiler/reexport.release.wat +++ b/tests/compiler/reexport.release.wat @@ -653,7 +653,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -678,7 +678,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -706,7 +706,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1073,7 +1073,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1140,7 +1140,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1273,7 +1273,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1288,7 +1288,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rereexport.debug.wat b/tests/compiler/rereexport.debug.wat index 7cdcb0dad0..b409499e1b 100644 --- a/tests/compiler/rereexport.debug.wat +++ b/tests/compiler/rereexport.debug.wat @@ -1072,7 +1072,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1151,7 +1151,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1395,7 +1395,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1724,7 +1724,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1733,6 +1733,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1762,24 +1782,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1817,7 +1826,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1888,7 +1897,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1952,19 +1961,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2053,7 +2054,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2168,7 +2169,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2188,7 +2189,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat index 61f2435b7e..4ca358b3ef 100644 --- a/tests/compiler/rereexport.release.wat +++ b/tests/compiler/rereexport.release.wat @@ -651,7 +651,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -676,7 +676,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -704,7 +704,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1071,7 +1071,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1138,7 +1138,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1271,7 +1271,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1286,7 +1286,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.debug.wat b/tests/compiler/resolve-access.debug.wat index 8d2e51b106..daff744a0a 100644 --- a/tests/compiler/resolve-access.debug.wat +++ b/tests/compiler/resolve-access.debug.wat @@ -1054,7 +1054,7 @@ if i32.const 0 i32.const 400 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1100,7 +1100,7 @@ if i32.const 0 i32.const 400 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1133,7 +1133,7 @@ if i32.const 0 i32.const 400 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1377,7 +1377,7 @@ if i32.const 0 i32.const 400 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1706,7 +1706,7 @@ if i32.const 64 i32.const 400 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1715,6 +1715,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1744,24 +1764,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1799,7 +1808,7 @@ if i32.const 0 i32.const 400 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1870,7 +1879,7 @@ if i32.const 0 i32.const 400 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1934,19 +1943,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2035,7 +2036,7 @@ if i32.const 0 i32.const 400 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2150,7 +2151,7 @@ if i32.const 0 i32.const 400 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2170,7 +2171,7 @@ if i32.const 0 i32.const 400 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat index 0482bf6e60..81f11c300d 100644 --- a/tests/compiler/resolve-access.release.wat +++ b/tests/compiler/resolve-access.release.wat @@ -642,7 +642,7 @@ if i32.const 0 i32.const 1424 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -667,7 +667,7 @@ if i32.const 0 i32.const 1424 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -695,7 +695,7 @@ if i32.const 0 i32.const 1424 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1062,7 +1062,7 @@ if i32.const 0 i32.const 1424 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1146,7 +1146,7 @@ if i32.const 0 i32.const 1424 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1198,7 +1198,7 @@ if i32.const 0 i32.const 1424 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1297,7 +1297,7 @@ if i32.const 1088 i32.const 1424 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1322,6 +1322,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1332,21 +1354,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1388,7 +1395,7 @@ if i32.const 0 i32.const 1424 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1403,7 +1410,7 @@ if i32.const 0 i32.const 1424 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1422,7 +1429,7 @@ if i32.const 0 i32.const 1424 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-binary.debug.wat b/tests/compiler/resolve-binary.debug.wat index ff19ed12e8..8e4d5246fe 100644 --- a/tests/compiler/resolve-binary.debug.wat +++ b/tests/compiler/resolve-binary.debug.wat @@ -1274,7 +1274,7 @@ if i32.const 0 i32.const 720 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1320,7 +1320,7 @@ if i32.const 0 i32.const 720 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1353,7 +1353,7 @@ if i32.const 0 i32.const 720 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1597,7 +1597,7 @@ if i32.const 0 i32.const 720 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1926,7 +1926,7 @@ if i32.const 384 i32.const 720 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1935,6 +1935,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1964,24 +1984,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2019,7 +2028,7 @@ if i32.const 0 i32.const 720 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2090,7 +2099,7 @@ if i32.const 0 i32.const 720 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2154,19 +2163,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2255,7 +2256,7 @@ if i32.const 0 i32.const 720 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2370,7 +2371,7 @@ if i32.const 0 i32.const 720 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2390,7 +2391,7 @@ if i32.const 0 i32.const 720 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat index 030896d69b..361d585398 100644 --- a/tests/compiler/resolve-binary.release.wat +++ b/tests/compiler/resolve-binary.release.wat @@ -851,7 +851,7 @@ if i32.const 0 i32.const 1744 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -876,7 +876,7 @@ if i32.const 0 i32.const 1744 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -904,7 +904,7 @@ if i32.const 0 i32.const 1744 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1271,7 +1271,7 @@ if i32.const 0 i32.const 1744 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1355,7 +1355,7 @@ if i32.const 0 i32.const 1744 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1407,7 +1407,7 @@ if i32.const 0 i32.const 1744 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1506,7 +1506,7 @@ if i32.const 1408 i32.const 1744 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1531,6 +1531,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1541,21 +1563,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1597,7 +1604,7 @@ if i32.const 0 i32.const 1744 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1612,7 +1619,7 @@ if i32.const 0 i32.const 1744 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1631,7 +1638,7 @@ if i32.const 0 i32.const 1744 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-elementaccess.debug.wat b/tests/compiler/resolve-elementaccess.debug.wat index 1dc9378ea1..4f7f102983 100644 --- a/tests/compiler/resolve-elementaccess.debug.wat +++ b/tests/compiler/resolve-elementaccess.debug.wat @@ -1077,7 +1077,7 @@ if i32.const 0 i32.const 480 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1123,7 +1123,7 @@ if i32.const 0 i32.const 480 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1156,7 +1156,7 @@ if i32.const 0 i32.const 480 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1400,7 +1400,7 @@ if i32.const 0 i32.const 480 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1729,7 +1729,7 @@ if i32.const 144 i32.const 480 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1738,6 +1738,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1767,24 +1787,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1822,7 +1831,7 @@ if i32.const 0 i32.const 480 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1893,7 +1902,7 @@ if i32.const 0 i32.const 480 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1957,19 +1966,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2058,7 +2059,7 @@ if i32.const 0 i32.const 480 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2173,7 +2174,7 @@ if i32.const 0 i32.const 480 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2193,7 +2194,7 @@ if i32.const 0 i32.const 480 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index 1951c93145..b08ff52596 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -694,7 +694,7 @@ if i32.const 0 i32.const 1504 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -719,7 +719,7 @@ if i32.const 0 i32.const 1504 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -747,7 +747,7 @@ if i32.const 0 i32.const 1504 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1114,7 +1114,7 @@ if i32.const 0 i32.const 1504 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1198,7 +1198,7 @@ if i32.const 0 i32.const 1504 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1250,7 +1250,7 @@ if i32.const 0 i32.const 1504 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1349,7 +1349,7 @@ if i32.const 1168 i32.const 1504 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1374,6 +1374,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1384,21 +1406,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1440,7 +1447,7 @@ if i32.const 0 i32.const 1504 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1455,7 +1462,7 @@ if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1474,7 +1481,7 @@ if i32.const 0 i32.const 1504 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-function-expression.debug.wat b/tests/compiler/resolve-function-expression.debug.wat index 94f52e0a6d..a9cdc844bf 100644 --- a/tests/compiler/resolve-function-expression.debug.wat +++ b/tests/compiler/resolve-function-expression.debug.wat @@ -1120,7 +1120,7 @@ if i32.const 0 i32.const 768 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1166,7 +1166,7 @@ if i32.const 0 i32.const 768 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1199,7 +1199,7 @@ if i32.const 0 i32.const 768 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1443,7 +1443,7 @@ if i32.const 0 i32.const 768 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1772,7 +1772,7 @@ if i32.const 432 i32.const 768 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1781,6 +1781,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1810,24 +1830,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1865,7 +1874,7 @@ if i32.const 0 i32.const 768 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1936,7 +1945,7 @@ if i32.const 0 i32.const 768 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2000,19 +2009,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2101,7 +2102,7 @@ if i32.const 0 i32.const 768 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2216,7 +2217,7 @@ if i32.const 0 i32.const 768 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2236,7 +2237,7 @@ if i32.const 0 i32.const 768 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index 733cf16d8e..27215c7055 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -661,7 +661,7 @@ if i32.const 0 i32.const 1792 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -686,7 +686,7 @@ if i32.const 0 i32.const 1792 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -714,7 +714,7 @@ if i32.const 0 i32.const 1792 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 1792 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1165,7 +1165,7 @@ if i32.const 0 i32.const 1792 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1217,7 +1217,7 @@ if i32.const 0 i32.const 1792 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1275,11 +1275,11 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1424 - local.set $1 + local.set $2 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer - local.set $5 + local.set $4 i32.const 0 local.get $0 i32.sub @@ -1337,7 +1337,7 @@ i32.add end end - local.tee $2 + local.tee $1 i32.const 1 i32.shl local.get $3 @@ -1359,12 +1359,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $1 + local.set $2 loop $do-loop|0 - local.get $1 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $1 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1380,20 +1380,20 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $1 + local.tee $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl - local.get $1 + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end @@ -1408,62 +1408,69 @@ local.get $6 i32.const 16 i32.add - local.tee $1 + local.tee $2 i32.const 1073741820 i32.gt_u if i32.const 1456 i32.const 1792 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable end local.get $7 i32.const 12 - local.get $1 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $1 + local.get $2 i32.const 12 i32.le_u select local.tee $8 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size $0 - local.tee $1 + local.tee $2 + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $8 + local.get $8 + i32.const 536870910 + i32.lt_u + select + else + local.get $8 + end i32.const 4 local.get $7 i32.load $0 offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $8 - local.get $8 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1471,16 +1478,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $1 - local.get $4 + local.tee $5 + local.get $2 + local.get $5 i32.gt_s select memory.grow $0 i32.const 0 i32.lt_s if - local.get $4 + local.get $5 memory.grow $0 i32.const 0 i32.lt_s @@ -1489,7 +1496,7 @@ end end local.get $7 - local.get $1 + local.get $2 i32.const 16 i32.shl memory.size $0 @@ -1500,19 +1507,19 @@ local.get $7 local.get $8 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 i32.const 1792 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end local.get $8 - local.get $1 + local.get $2 i32.load $0 i32.const -4 i32.and @@ -1520,17 +1527,17 @@ if i32.const 0 i32.const 1792 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $7 - local.get $1 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load $0 - local.set $4 + local.set $9 local.get $8 i32.const 4 i32.add @@ -1539,94 +1546,94 @@ if i32.const 0 i32.const 1792 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 i32.const -4 i32.and local.get $8 i32.sub - local.tee $9 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $2 local.get $8 - local.get $4 + local.get $9 i32.const 2 i32.and i32.or i32.store $0 - local.get $1 + local.get $2 i32.const 4 i32.add local.get $8 i32.add - local.tee $4 - local.get $9 + local.tee $8 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store $0 local.get $7 - local.get $4 + local.get $8 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $4 + local.get $2 + local.get $9 i32.const -2 i32.and i32.store $0 - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load $0 i32.const -4 i32.and i32.add - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 i32.load $0 i32.const -3 i32.and i32.store $0 end - local.get $1 + local.get $2 i32.const 2 i32.store $0 offset=12 - local.get $1 + local.get $2 local.get $6 i32.store $0 offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $4 + local.tee $5 i32.load $0 offset=8 local.set $7 - local.get $1 - local.get $4 + local.get $2 + local.get $5 global.get $~lib/rt/itcms/white i32.or i32.store $0 offset=4 - local.get $1 + local.get $2 local.get $7 i32.store $0 offset=8 local.get $7 - local.get $1 + local.get $2 local.get $7 i32.load $0 offset=4 i32.const 3 i32.and i32.or i32.store $0 offset=4 - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.store $0 offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load $0 i32.const -4 i32.and @@ -1634,17 +1641,17 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $1 + local.tee $2 i32.const 0 local.get $6 memory.fill $0 - local.get $5 - local.get $1 + local.get $4 + local.get $2 i32.store $0 - local.get $1 + local.get $2 local.get $3 i32.add local.set $4 @@ -1662,10 +1669,10 @@ i32.div_u local.set $0 local.get $4 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.add @@ -1697,10 +1704,10 @@ i32.ge_u if local.get $4 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.add @@ -1723,7 +1730,7 @@ i32.ge_u if local.get $4 - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 @@ -1738,7 +1745,7 @@ i32.store $0 else local.get $4 - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 @@ -1751,7 +1758,7 @@ end local.get $3 if - local.get $1 + local.get $2 i32.const 45 i32.store16 $0 end @@ -1760,7 +1767,7 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $1 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) diff --git a/tests/compiler/resolve-new.debug.wat b/tests/compiler/resolve-new.debug.wat index 75e158d7ce..3b02a74784 100644 --- a/tests/compiler/resolve-new.debug.wat +++ b/tests/compiler/resolve-new.debug.wat @@ -1033,7 +1033,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1079,7 +1079,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1112,7 +1112,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1356,7 +1356,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1685,7 +1685,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1694,6 +1694,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1723,24 +1743,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1778,7 +1787,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1849,7 +1858,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1913,19 +1922,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2014,7 +2015,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2129,7 +2130,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2149,7 +2150,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat index 6b37e50151..78f4407d8e 100644 --- a/tests/compiler/resolve-new.release.wat +++ b/tests/compiler/resolve-new.release.wat @@ -625,7 +625,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -650,7 +650,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -678,7 +678,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1045,7 +1045,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1112,7 +1112,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1245,7 +1245,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1260,7 +1260,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-propertyaccess.debug.wat b/tests/compiler/resolve-propertyaccess.debug.wat index 18abec093b..c40972e4f0 100644 --- a/tests/compiler/resolve-propertyaccess.debug.wat +++ b/tests/compiler/resolve-propertyaccess.debug.wat @@ -1120,7 +1120,7 @@ if i32.const 0 i32.const 592 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1166,7 +1166,7 @@ if i32.const 0 i32.const 592 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1199,7 +1199,7 @@ if i32.const 0 i32.const 592 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1443,7 +1443,7 @@ if i32.const 0 i32.const 592 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1772,7 +1772,7 @@ if i32.const 256 i32.const 592 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1781,6 +1781,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1810,24 +1830,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1865,7 +1874,7 @@ if i32.const 0 i32.const 592 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1936,7 +1945,7 @@ if i32.const 0 i32.const 592 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2000,19 +2009,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2101,7 +2102,7 @@ if i32.const 0 i32.const 592 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2216,7 +2217,7 @@ if i32.const 0 i32.const 592 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2236,7 +2237,7 @@ if i32.const 0 i32.const 592 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat index 83043d29eb..05ca990b33 100644 --- a/tests/compiler/resolve-propertyaccess.release.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -660,7 +660,7 @@ if i32.const 0 i32.const 1616 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -685,7 +685,7 @@ if i32.const 0 i32.const 1616 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -713,7 +713,7 @@ if i32.const 0 i32.const 1616 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1080,7 +1080,7 @@ if i32.const 0 i32.const 1616 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1164,7 +1164,7 @@ if i32.const 0 i32.const 1616 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1216,7 +1216,7 @@ if i32.const 0 i32.const 1616 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1315,7 +1315,7 @@ if i32.const 1280 i32.const 1616 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1340,6 +1340,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1350,21 +1372,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1406,7 +1413,7 @@ if i32.const 0 i32.const 1616 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1421,7 +1428,7 @@ if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1440,7 +1447,7 @@ if i32.const 0 i32.const 1616 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-ternary.debug.wat b/tests/compiler/resolve-ternary.debug.wat index 821f870592..88fe3f8e4c 100644 --- a/tests/compiler/resolve-ternary.debug.wat +++ b/tests/compiler/resolve-ternary.debug.wat @@ -1128,7 +1128,7 @@ if i32.const 0 i32.const 592 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1174,7 +1174,7 @@ if i32.const 0 i32.const 592 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1207,7 +1207,7 @@ if i32.const 0 i32.const 592 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1451,7 +1451,7 @@ if i32.const 0 i32.const 592 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1780,7 +1780,7 @@ if i32.const 256 i32.const 592 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1789,6 +1789,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1818,24 +1838,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1873,7 +1882,7 @@ if i32.const 0 i32.const 592 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1944,7 +1953,7 @@ if i32.const 0 i32.const 592 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2008,19 +2017,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2109,7 +2110,7 @@ if i32.const 0 i32.const 592 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2224,7 +2225,7 @@ if i32.const 0 i32.const 592 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2244,7 +2245,7 @@ if i32.const 0 i32.const 592 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 6cf4ecb8c6..fd5bc84dca 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -666,7 +666,7 @@ if i32.const 0 i32.const 1616 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -691,7 +691,7 @@ if i32.const 0 i32.const 1616 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -719,7 +719,7 @@ if i32.const 0 i32.const 1616 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1086,7 +1086,7 @@ if i32.const 0 i32.const 1616 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1170,7 +1170,7 @@ if i32.const 0 i32.const 1616 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1222,7 +1222,7 @@ if i32.const 0 i32.const 1616 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1321,7 +1321,7 @@ if i32.const 1280 i32.const 1616 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1346,6 +1346,28 @@ if memory.size $0 local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $4 + local.get $4 + i32.const 536870910 + i32.lt_u + select + else + local.get $4 + end i32.const 4 local.get $3 i32.load $0 offset=1568 @@ -1356,21 +1378,6 @@ i32.sub 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 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1412,7 +1419,7 @@ if i32.const 0 i32.const 1616 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1427,7 +1434,7 @@ if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1446,7 +1453,7 @@ if i32.const 0 i32.const 1616 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-unary.debug.wat b/tests/compiler/resolve-unary.debug.wat index 8050d737ca..862a3d4188 100644 --- a/tests/compiler/resolve-unary.debug.wat +++ b/tests/compiler/resolve-unary.debug.wat @@ -1120,7 +1120,7 @@ if i32.const 0 i32.const 592 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1166,7 +1166,7 @@ if i32.const 0 i32.const 592 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1199,7 +1199,7 @@ if i32.const 0 i32.const 592 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1443,7 +1443,7 @@ if i32.const 0 i32.const 592 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1772,7 +1772,7 @@ if i32.const 256 i32.const 592 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1781,6 +1781,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1810,24 +1830,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1865,7 +1874,7 @@ if i32.const 0 i32.const 592 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1936,7 +1945,7 @@ if i32.const 0 i32.const 592 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2000,19 +2009,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2101,7 +2102,7 @@ if i32.const 0 i32.const 592 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2216,7 +2217,7 @@ if i32.const 0 i32.const 592 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2236,7 +2237,7 @@ if i32.const 0 i32.const 592 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat index c9f0c6ac9f..446dbe2298 100644 --- a/tests/compiler/resolve-unary.release.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -686,7 +686,7 @@ if i32.const 0 i32.const 1616 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -711,7 +711,7 @@ if i32.const 0 i32.const 1616 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -739,7 +739,7 @@ if i32.const 0 i32.const 1616 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1106,7 +1106,7 @@ if i32.const 0 i32.const 1616 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1190,7 +1190,7 @@ if i32.const 0 i32.const 1616 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1242,7 +1242,7 @@ if i32.const 0 i32.const 1616 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1341,7 +1341,7 @@ if i32.const 1280 i32.const 1616 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1366,6 +1366,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1376,21 +1398,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1432,7 +1439,7 @@ if i32.const 0 i32.const 1616 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1447,7 +1454,7 @@ if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1466,7 +1473,7 @@ if i32.const 0 i32.const 1616 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/return-unreachable.debug.wat b/tests/compiler/return-unreachable.debug.wat index d74a223b13..ce61a8bc37 100644 --- a/tests/compiler/return-unreachable.debug.wat +++ b/tests/compiler/return-unreachable.debug.wat @@ -1036,7 +1036,7 @@ if i32.const 0 i32.const 464 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1082,7 +1082,7 @@ if i32.const 0 i32.const 464 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1115,7 +1115,7 @@ if i32.const 0 i32.const 464 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1359,7 +1359,7 @@ if i32.const 0 i32.const 464 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1688,7 +1688,7 @@ if i32.const 128 i32.const 464 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1697,6 +1697,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1726,24 +1746,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1781,7 +1790,7 @@ if i32.const 0 i32.const 464 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1852,7 +1861,7 @@ if i32.const 0 i32.const 464 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1916,19 +1925,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2017,7 +2018,7 @@ if i32.const 0 i32.const 464 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2132,7 +2133,7 @@ if i32.const 0 i32.const 464 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2152,7 +2153,7 @@ if i32.const 0 i32.const 464 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat index 3242386a34..a30d733294 100644 --- a/tests/compiler/return-unreachable.release.wat +++ b/tests/compiler/return-unreachable.release.wat @@ -626,7 +626,7 @@ if i32.const 0 i32.const 1488 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -651,7 +651,7 @@ if i32.const 0 i32.const 1488 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -679,7 +679,7 @@ if i32.const 0 i32.const 1488 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1046,7 +1046,7 @@ if i32.const 0 i32.const 1488 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1130,7 +1130,7 @@ if i32.const 0 i32.const 1488 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1182,7 +1182,7 @@ if i32.const 0 i32.const 1488 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1281,7 +1281,7 @@ if i32.const 1152 i32.const 1488 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1306,6 +1306,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1316,21 +1338,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1372,7 +1379,7 @@ if i32.const 0 i32.const 1488 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1387,7 +1394,7 @@ if i32.const 0 i32.const 1488 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1406,7 +1413,7 @@ if i32.const 0 i32.const 1488 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/alloc-large-memory.debug.wat b/tests/compiler/rt/alloc-large-memory.debug.wat index a2586176b7..e2aa202376 100644 --- a/tests/compiler/rt/alloc-large-memory.debug.wat +++ b/tests/compiler/rt/alloc-large-memory.debug.wat @@ -678,7 +678,7 @@ if i32.const 0 i32.const 32 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -724,7 +724,7 @@ if i32.const 0 i32.const 32 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -757,7 +757,7 @@ if i32.const 0 i32.const 32 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -999,7 +999,7 @@ if i32.const 96 i32.const 32 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1008,6 +1008,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1037,24 +1057,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1092,7 +1101,7 @@ if i32.const 0 i32.const 32 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1163,7 +1172,7 @@ if i32.const 0 i32.const 32 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1227,19 +1236,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -1328,7 +1329,7 @@ if i32.const 0 i32.const 32 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1443,7 +1444,7 @@ if i32.const 0 i32.const 32 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1463,7 +1464,7 @@ if i32.const 0 i32.const 32 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat index 52be1f0c56..dcdd6257a6 100644 --- a/tests/compiler/rt/alloc-large-memory.release.wat +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -423,7 +423,7 @@ if i32.const 0 i32.const 1056 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -448,7 +448,7 @@ if i32.const 0 i32.const 1056 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -476,7 +476,7 @@ if i32.const 0 i32.const 1056 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -580,7 +580,7 @@ if i32.const 0 i32.const 1056 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -632,7 +632,7 @@ if i32.const 0 i32.const 1056 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -746,7 +746,7 @@ if i32.const 1120 i32.const 1056 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -771,6 +771,28 @@ if memory.size $0 local.tee $1 + local.get $0 + i32.const 256 + i32.ge_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $0 + local.get $0 + i32.const 536870910 + i32.lt_u + select + else + local.get $0 + end i32.const 4 local.get $3 i32.load $0 offset=1568 @@ -781,21 +803,6 @@ i32.sub i32.ne i32.shl - local.get $0 - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $0 - local.get $0 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -837,7 +844,7 @@ if i32.const 0 i32.const 1056 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -852,7 +859,7 @@ if i32.const 0 i32.const 1056 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -871,7 +878,7 @@ if i32.const 0 i32.const 1056 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/finalize.debug.wat b/tests/compiler/rt/finalize.debug.wat index 06dbe11c5e..95ff6cc8a3 100644 --- a/tests/compiler/rt/finalize.debug.wat +++ b/tests/compiler/rt/finalize.debug.wat @@ -1052,7 +1052,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1098,7 +1098,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1131,7 +1131,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1375,7 +1375,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1708,7 +1708,7 @@ if i32.const 32 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1717,6 +1717,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1746,24 +1766,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1801,7 +1810,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1872,7 +1881,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1936,19 +1945,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2037,7 +2038,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2152,7 +2153,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2172,7 +2173,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat index eb2ad2c237..c72c96d7a2 100644 --- a/tests/compiler/rt/finalize.release.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -623,7 +623,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -648,7 +648,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -676,7 +676,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1058,7 +1058,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1125,7 +1125,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1258,7 +1258,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1273,7 +1273,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/runtime-incremental-export.debug.wat b/tests/compiler/rt/runtime-incremental-export.debug.wat index 8f69345eb5..1c5c21375c 100644 --- a/tests/compiler/rt/runtime-incremental-export.debug.wat +++ b/tests/compiler/rt/runtime-incremental-export.debug.wat @@ -1039,7 +1039,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1085,7 +1085,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1362,7 +1362,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1691,7 +1691,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1700,6 +1700,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1729,24 +1749,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1784,7 +1793,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1855,7 +1864,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1919,19 +1928,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2020,7 +2021,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2135,7 +2136,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2155,7 +2156,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat index caf4fb6744..8ac160e12a 100644 --- a/tests/compiler/rt/runtime-incremental-export.release.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -635,7 +635,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -660,7 +660,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -688,7 +688,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1055,7 +1055,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1139,7 +1139,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1191,7 +1191,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1290,7 +1290,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1315,6 +1315,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1325,21 +1347,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1381,7 +1388,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1396,7 +1403,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1415,7 +1422,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/runtime-minimal-export.debug.wat b/tests/compiler/rt/runtime-minimal-export.debug.wat index 54358318b2..c667c5ca2c 100644 --- a/tests/compiler/rt/runtime-minimal-export.debug.wat +++ b/tests/compiler/rt/runtime-minimal-export.debug.wat @@ -695,7 +695,7 @@ if i32.const 0 i32.const 160 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -741,7 +741,7 @@ if i32.const 0 i32.const 160 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -774,7 +774,7 @@ if i32.const 0 i32.const 160 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1016,7 +1016,7 @@ if i32.const 32 i32.const 160 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1025,6 +1025,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1054,24 +1074,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1109,7 +1118,7 @@ if i32.const 0 i32.const 160 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1180,7 +1189,7 @@ if i32.const 0 i32.const 160 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1244,19 +1253,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -1345,7 +1346,7 @@ if i32.const 0 i32.const 160 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1460,7 +1461,7 @@ if i32.const 0 i32.const 160 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1480,7 +1481,7 @@ if i32.const 0 i32.const 160 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1791,7 +1792,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat index 75dd8c40f7..5c5459a0d3 100644 --- a/tests/compiler/rt/runtime-minimal-export.release.wat +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -442,7 +442,7 @@ if i32.const 0 i32.const 1184 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -467,7 +467,7 @@ if i32.const 0 i32.const 1184 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -495,7 +495,7 @@ if i32.const 0 i32.const 1184 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -679,7 +679,7 @@ if i32.const 0 i32.const 1184 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -731,7 +731,7 @@ if i32.const 0 i32.const 1184 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -785,7 +785,7 @@ if i32.const 1056 i32.const 1184 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -810,6 +810,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -820,21 +842,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -876,7 +883,7 @@ if i32.const 0 i32.const 1184 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -891,7 +898,7 @@ if i32.const 0 i32.const 1184 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -910,7 +917,7 @@ if i32.const 0 i32.const 1184 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1338,7 +1345,7 @@ if i32.const 0 i32.const 1184 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/simd.debug.wat b/tests/compiler/simd.debug.wat index 25b57509d5..bb810b7e42 100644 --- a/tests/compiler/simd.debug.wat +++ b/tests/compiler/simd.debug.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 $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -1072,7 +1072,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1118,7 +1118,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1151,7 +1151,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1395,7 +1395,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1724,7 +1724,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1733,6 +1733,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1762,24 +1782,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1817,7 +1826,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1888,7 +1897,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1952,19 +1961,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2053,7 +2054,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2168,7 +2169,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2188,7 +2189,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat index b026f5e615..deba7d8f6d 100644 --- a/tests/compiler/simd.release.wat +++ b/tests/compiler/simd.release.wat @@ -651,7 +651,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -676,7 +676,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -704,7 +704,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -872,7 +872,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1161,7 +1161,7 @@ if i32.const 0 i32.const 1440 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1213,7 +1213,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1244,7 +1244,7 @@ if i32.const 1104 i32.const 1440 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1269,6 +1269,28 @@ if memory.size $0 local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + else + local.get $3 + end i32.const 4 local.get $0 i32.load $0 offset=1568 @@ -1279,21 +1301,6 @@ i32.sub i32.ne i32.shl - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1335,7 +1342,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1350,7 +1357,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1369,7 +1376,7 @@ if i32.const 0 i32.const 1440 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.debug.wat b/tests/compiler/std/array-literal.debug.wat index 0deecacc2b..fd50847553 100644 --- a/tests/compiler/std/array-literal.debug.wat +++ b/tests/compiler/std/array-literal.debug.wat @@ -1068,7 +1068,7 @@ if i32.const 0 i32.const 720 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1114,7 +1114,7 @@ if i32.const 0 i32.const 720 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1147,7 +1147,7 @@ if i32.const 0 i32.const 720 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1391,7 +1391,7 @@ if i32.const 0 i32.const 720 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1720,7 +1720,7 @@ if i32.const 448 i32.const 720 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1729,6 +1729,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1758,24 +1778,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1813,7 +1822,7 @@ if i32.const 0 i32.const 720 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1884,7 +1893,7 @@ if i32.const 0 i32.const 720 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1948,19 +1957,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2049,7 +2050,7 @@ if i32.const 0 i32.const 720 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2164,7 +2165,7 @@ if i32.const 0 i32.const 720 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2184,7 +2185,7 @@ if i32.const 0 i32.const 720 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat index ae18a3e5d8..4455e67b59 100644 --- a/tests/compiler/std/array-literal.release.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -681,7 +681,7 @@ if i32.const 0 i32.const 1744 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -706,7 +706,7 @@ if i32.const 0 i32.const 1744 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -734,7 +734,7 @@ if i32.const 0 i32.const 1744 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1101,7 +1101,7 @@ if i32.const 0 i32.const 1744 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1185,7 +1185,7 @@ if i32.const 0 i32.const 1744 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1237,7 +1237,7 @@ if i32.const 0 i32.const 1744 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1336,7 +1336,7 @@ if i32.const 1472 i32.const 1744 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1361,6 +1361,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1371,21 +1393,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1427,7 +1434,7 @@ if i32.const 0 i32.const 1744 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1442,7 +1449,7 @@ if i32.const 0 i32.const 1744 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1461,7 +1468,7 @@ if i32.const 0 i32.const 1744 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.debug.wat b/tests/compiler/std/array.debug.wat index c369626cc6..f90bea8d07 100644 --- a/tests/compiler/std/array.debug.wat +++ b/tests/compiler/std/array.debug.wat @@ -1377,7 +1377,7 @@ if i32.const 0 i32.const 464 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1423,7 +1423,7 @@ if i32.const 0 i32.const 464 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1456,7 +1456,7 @@ if i32.const 0 i32.const 464 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1700,7 +1700,7 @@ if i32.const 0 i32.const 464 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2029,7 +2029,7 @@ if i32.const 128 i32.const 464 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2038,6 +2038,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2067,24 +2087,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2122,7 +2131,7 @@ if i32.const 0 i32.const 464 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2193,7 +2202,7 @@ if i32.const 0 i32.const 464 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2257,19 +2266,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2358,7 +2359,7 @@ if i32.const 0 i32.const 464 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2473,7 +2474,7 @@ if i32.const 0 i32.const 464 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2493,7 +2494,7 @@ if i32.const 0 i32.const 464 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index a4ec0c631e..bfbd7b033c 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -1276,7 +1276,7 @@ if i32.const 0 i32.const 1488 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1301,7 +1301,7 @@ if i32.const 0 i32.const 1488 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1329,7 +1329,7 @@ if i32.const 0 i32.const 1488 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1497,7 +1497,7 @@ if i32.const 0 i32.const 1488 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1786,7 +1786,7 @@ if i32.const 0 i32.const 1488 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1838,7 +1838,7 @@ if i32.const 0 i32.const 1488 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1869,7 +1869,7 @@ if i32.const 1152 i32.const 1488 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1894,6 +1894,28 @@ if memory.size $0 local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + else + local.get $3 + end i32.const 4 local.get $0 i32.load $0 offset=1568 @@ -1904,21 +1926,6 @@ i32.sub i32.ne i32.shl - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1960,7 +1967,7 @@ if i32.const 0 i32.const 1488 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1975,7 +1982,7 @@ if i32.const 0 i32.const 1488 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1994,7 +2001,7 @@ if i32.const 0 i32.const 1488 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/arraybuffer.debug.wat b/tests/compiler/std/arraybuffer.debug.wat index c530705661..2021918c55 100644 --- a/tests/compiler/std/arraybuffer.debug.wat +++ b/tests/compiler/std/arraybuffer.debug.wat @@ -1041,7 +1041,7 @@ if i32.const 0 i32.const 480 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1087,7 +1087,7 @@ if i32.const 0 i32.const 480 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1120,7 +1120,7 @@ if i32.const 0 i32.const 480 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1364,7 +1364,7 @@ if i32.const 0 i32.const 480 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1693,7 +1693,7 @@ if i32.const 144 i32.const 480 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1702,6 +1702,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1731,24 +1751,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1786,7 +1795,7 @@ if i32.const 0 i32.const 480 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1857,7 +1866,7 @@ if i32.const 0 i32.const 480 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1921,19 +1930,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2022,7 +2023,7 @@ if i32.const 0 i32.const 480 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2137,7 +2138,7 @@ if i32.const 0 i32.const 480 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2157,7 +2158,7 @@ if i32.const 0 i32.const 480 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat index 4721f6b330..9080c7e14f 100644 --- a/tests/compiler/std/arraybuffer.release.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -632,7 +632,7 @@ if i32.const 0 i32.const 1504 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -657,7 +657,7 @@ if i32.const 0 i32.const 1504 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -685,7 +685,7 @@ if i32.const 0 i32.const 1504 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1052,7 +1052,7 @@ if i32.const 0 i32.const 1504 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1136,7 +1136,7 @@ if i32.const 0 i32.const 1504 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1188,7 +1188,7 @@ if i32.const 0 i32.const 1504 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1287,7 +1287,7 @@ if i32.const 1168 i32.const 1504 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1312,6 +1312,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1322,21 +1344,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1378,7 +1385,7 @@ if i32.const 0 i32.const 1504 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1393,7 +1400,7 @@ if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1412,7 +1419,7 @@ if i32.const 0 i32.const 1504 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.debug.wat b/tests/compiler/std/dataview.debug.wat index 473b0b0151..a8aac60b96 100644 --- a/tests/compiler/std/dataview.debug.wat +++ b/tests/compiler/std/dataview.debug.wat @@ -1047,7 +1047,7 @@ if i32.const 0 i32.const 480 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1093,7 +1093,7 @@ if i32.const 0 i32.const 480 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1126,7 +1126,7 @@ if i32.const 0 i32.const 480 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1370,7 +1370,7 @@ if i32.const 0 i32.const 480 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1699,7 +1699,7 @@ if i32.const 144 i32.const 480 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1708,6 +1708,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1737,24 +1757,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1792,7 +1801,7 @@ if i32.const 0 i32.const 480 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1863,7 +1872,7 @@ if i32.const 0 i32.const 480 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1927,19 +1936,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2028,7 +2029,7 @@ if i32.const 0 i32.const 480 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2143,7 +2144,7 @@ if i32.const 0 i32.const 480 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2163,7 +2164,7 @@ if i32.const 0 i32.const 480 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat index 656ba6b9f3..d21469f6ec 100644 --- a/tests/compiler/std/dataview.release.wat +++ b/tests/compiler/std/dataview.release.wat @@ -640,7 +640,7 @@ if i32.const 0 i32.const 1504 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -665,7 +665,7 @@ if i32.const 0 i32.const 1504 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -693,7 +693,7 @@ if i32.const 0 i32.const 1504 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1060,7 +1060,7 @@ if i32.const 0 i32.const 1504 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1144,7 +1144,7 @@ if i32.const 0 i32.const 1504 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1196,7 +1196,7 @@ if i32.const 0 i32.const 1504 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1295,7 +1295,7 @@ if i32.const 1168 i32.const 1504 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1320,6 +1320,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1330,21 +1352,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1386,7 +1393,7 @@ if i32.const 0 i32.const 1504 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1401,7 +1408,7 @@ if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1420,7 +1427,7 @@ if i32.const 0 i32.const 1504 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/date.debug.wat b/tests/compiler/std/date.debug.wat index bec755f84e..bcef75a417 100644 --- a/tests/compiler/std/date.debug.wat +++ b/tests/compiler/std/date.debug.wat @@ -1425,7 +1425,7 @@ if i32.const 0 i32.const 512 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1471,7 +1471,7 @@ if i32.const 0 i32.const 512 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1504,7 +1504,7 @@ if i32.const 0 i32.const 512 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1748,7 +1748,7 @@ if i32.const 0 i32.const 512 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2077,7 +2077,7 @@ if i32.const 176 i32.const 512 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2086,6 +2086,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2115,24 +2135,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2170,7 +2179,7 @@ if i32.const 0 i32.const 512 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2241,7 +2250,7 @@ if i32.const 0 i32.const 512 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2305,19 +2314,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2406,7 +2407,7 @@ if i32.const 0 i32.const 512 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2521,7 +2522,7 @@ if i32.const 0 i32.const 512 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2541,7 +2542,7 @@ if i32.const 0 i32.const 512 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat index 32d84a1f6a..51c30d67aa 100644 --- a/tests/compiler/std/date.release.wat +++ b/tests/compiler/std/date.release.wat @@ -1006,7 +1006,7 @@ if i32.const 0 i32.const 1536 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1031,7 +1031,7 @@ if i32.const 0 i32.const 1536 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1059,7 +1059,7 @@ if i32.const 0 i32.const 1536 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1426,7 +1426,7 @@ if i32.const 0 i32.const 1536 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1510,7 +1510,7 @@ if i32.const 0 i32.const 1536 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1562,7 +1562,7 @@ if i32.const 0 i32.const 1536 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1661,7 +1661,7 @@ if i32.const 1200 i32.const 1536 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1686,6 +1686,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1696,21 +1718,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1752,7 +1759,7 @@ if i32.const 0 i32.const 1536 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1767,7 +1774,7 @@ if i32.const 0 i32.const 1536 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1786,7 +1793,7 @@ if i32.const 0 i32.const 1536 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/map.debug.wat b/tests/compiler/std/map.debug.wat index 01a174d157..f8b67fdf6a 100644 --- a/tests/compiler/std/map.debug.wat +++ b/tests/compiler/std/map.debug.wat @@ -1064,7 +1064,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1110,7 +1110,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1143,7 +1143,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1387,7 +1387,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1716,7 +1716,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1725,6 +1725,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1754,24 +1774,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1809,7 +1818,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1880,7 +1889,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1944,19 +1953,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2045,7 +2046,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2160,7 +2161,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2180,7 +2181,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat index 758503f2bd..65fa89cce5 100644 --- a/tests/compiler/std/map.release.wat +++ b/tests/compiler/std/map.release.wat @@ -652,7 +652,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -677,7 +677,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -705,7 +705,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1072,7 +1072,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1156,7 +1156,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1208,7 +1208,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1307,7 +1307,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1332,6 +1332,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1342,21 +1364,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1398,7 +1405,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1413,7 +1420,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1432,7 +1439,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/new.debug.wat b/tests/compiler/std/new.debug.wat index aac8f3b069..e8912548ca 100644 --- a/tests/compiler/std/new.debug.wat +++ b/tests/compiler/std/new.debug.wat @@ -1050,7 +1050,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1096,7 +1096,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1129,7 +1129,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1373,7 +1373,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1702,7 +1702,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1711,6 +1711,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1740,24 +1760,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1795,7 +1804,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1866,7 +1875,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1930,19 +1939,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2031,7 +2032,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2146,7 +2147,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2166,7 +2167,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat index 0ca01c2f2c..f42da5d035 100644 --- a/tests/compiler/std/new.release.wat +++ b/tests/compiler/std/new.release.wat @@ -625,7 +625,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -650,7 +650,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -678,7 +678,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1045,7 +1045,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1112,7 +1112,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1245,7 +1245,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1260,7 +1260,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/operator-overloading.debug.wat b/tests/compiler/std/operator-overloading.debug.wat index 8ad0f46599..b262deed12 100644 --- a/tests/compiler/std/operator-overloading.debug.wat +++ b/tests/compiler/std/operator-overloading.debug.wat @@ -1106,7 +1106,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1152,7 +1152,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1185,7 +1185,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1429,7 +1429,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1758,7 +1758,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1767,6 +1767,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1796,24 +1816,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1851,7 +1860,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1922,7 +1931,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1986,19 +1995,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2087,7 +2088,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2202,7 +2203,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2222,7 +2223,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat index 909368dfce..5e5f9130c8 100644 --- a/tests/compiler/std/operator-overloading.release.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -558,7 +558,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -583,7 +583,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -611,7 +611,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -978,7 +978,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1045,7 +1045,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1178,7 +1178,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1193,7 +1193,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/set.debug.wat b/tests/compiler/std/set.debug.wat index a04dae3ba0..0bba1a96ff 100644 --- a/tests/compiler/std/set.debug.wat +++ b/tests/compiler/std/set.debug.wat @@ -1059,7 +1059,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1105,7 +1105,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1138,7 +1138,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1382,7 +1382,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1711,7 +1711,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1720,6 +1720,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1749,24 +1769,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1804,7 +1813,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1875,7 +1884,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1939,19 +1948,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2040,7 +2041,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2155,7 +2156,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2175,7 +2176,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat index ad66b0a6d0..19b518d3f0 100644 --- a/tests/compiler/std/set.release.wat +++ b/tests/compiler/std/set.release.wat @@ -643,7 +643,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -668,7 +668,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -696,7 +696,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1063,7 +1063,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1147,7 +1147,7 @@ if i32.const 0 i32.const 1392 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1199,7 +1199,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1298,7 +1298,7 @@ if i32.const 1056 i32.const 1392 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1323,6 +1323,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1333,21 +1355,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1389,7 +1396,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1404,7 +1411,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1423,7 +1430,7 @@ if i32.const 0 i32.const 1392 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.debug.wat b/tests/compiler/std/static-array.debug.wat index e01afe16c2..1da1570de1 100644 --- a/tests/compiler/std/static-array.debug.wat +++ b/tests/compiler/std/static-array.debug.wat @@ -1075,7 +1075,7 @@ if i32.const 0 i32.const 880 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1121,7 +1121,7 @@ if i32.const 0 i32.const 880 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1154,7 +1154,7 @@ if i32.const 0 i32.const 880 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1398,7 +1398,7 @@ if i32.const 0 i32.const 880 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1727,7 +1727,7 @@ if i32.const 608 i32.const 880 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1736,6 +1736,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1765,24 +1785,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1820,7 +1829,7 @@ if i32.const 0 i32.const 880 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1891,7 +1900,7 @@ if i32.const 0 i32.const 880 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1955,19 +1964,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2056,7 +2057,7 @@ if i32.const 0 i32.const 880 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2171,7 +2172,7 @@ if i32.const 0 i32.const 880 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2191,7 +2192,7 @@ if i32.const 0 i32.const 880 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat index d502efedf2..9f31ef8c98 100644 --- a/tests/compiler/std/static-array.release.wat +++ b/tests/compiler/std/static-array.release.wat @@ -655,7 +655,7 @@ if i32.const 0 i32.const 1904 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -680,7 +680,7 @@ if i32.const 0 i32.const 1904 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -708,7 +708,7 @@ if i32.const 0 i32.const 1904 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1075,7 +1075,7 @@ if i32.const 0 i32.const 1904 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1159,7 +1159,7 @@ if i32.const 0 i32.const 1904 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1211,7 +1211,7 @@ if i32.const 0 i32.const 1904 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1555,7 +1555,7 @@ if i32.const 1632 i32.const 1904 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1580,6 +1580,28 @@ if memory.size $0 local.tee $1 + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $8 + local.get $8 + i32.const 536870910 + i32.lt_u + select + else + local.get $8 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1590,21 +1612,6 @@ i32.sub i32.ne i32.shl - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $8 - local.get $8 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1646,7 +1653,7 @@ if i32.const 0 i32.const 1904 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1661,7 +1668,7 @@ if i32.const 0 i32.const 1904 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1680,7 +1687,7 @@ if i32.const 0 i32.const 1904 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/staticarray.debug.wat b/tests/compiler/std/staticarray.debug.wat index a3c675da3c..46165bea4d 100644 --- a/tests/compiler/std/staticarray.debug.wat +++ b/tests/compiler/std/staticarray.debug.wat @@ -1136,7 +1136,7 @@ if i32.const 0 i32.const 592 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1182,7 +1182,7 @@ if i32.const 0 i32.const 592 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1215,7 +1215,7 @@ if i32.const 0 i32.const 592 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1459,7 +1459,7 @@ if i32.const 0 i32.const 592 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1788,7 +1788,7 @@ if i32.const 320 i32.const 592 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1797,6 +1797,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1826,24 +1846,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1881,7 +1890,7 @@ if i32.const 0 i32.const 592 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1952,7 +1961,7 @@ if i32.const 0 i32.const 592 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2016,19 +2025,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2117,7 +2118,7 @@ if i32.const 0 i32.const 592 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2232,7 +2233,7 @@ if i32.const 0 i32.const 592 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2252,7 +2253,7 @@ if i32.const 0 i32.const 592 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index a04bc8b7d8..e074cbf905 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -769,7 +769,7 @@ if i32.const 0 i32.const 1616 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -794,7 +794,7 @@ if i32.const 0 i32.const 1616 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -822,7 +822,7 @@ if i32.const 0 i32.const 1616 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -990,7 +990,7 @@ if i32.const 0 i32.const 1616 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1279,7 +1279,7 @@ if i32.const 0 i32.const 1616 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1331,7 +1331,7 @@ if i32.const 0 i32.const 1616 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1362,7 +1362,7 @@ if i32.const 1344 i32.const 1616 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1387,6 +1387,28 @@ if memory.size $0 local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + else + local.get $3 + end i32.const 4 local.get $0 i32.load $0 offset=1568 @@ -1397,21 +1419,6 @@ i32.sub i32.ne i32.shl - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1453,7 +1460,7 @@ if i32.const 0 i32.const 1616 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1468,7 +1475,7 @@ if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1487,7 +1494,7 @@ if i32.const 0 i32.const 1616 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-casemapping.debug.wat b/tests/compiler/std/string-casemapping.debug.wat index 52f384ab23..ee2b866fe8 100644 --- a/tests/compiler/std/string-casemapping.debug.wat +++ b/tests/compiler/std/string-casemapping.debug.wat @@ -1227,7 +1227,7 @@ if i32.const 0 i32.const 400 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1273,7 +1273,7 @@ if i32.const 0 i32.const 400 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1306,7 +1306,7 @@ if i32.const 0 i32.const 400 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1550,7 +1550,7 @@ if i32.const 0 i32.const 400 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1879,7 +1879,7 @@ if i32.const 64 i32.const 400 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1888,6 +1888,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1917,24 +1937,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1972,7 +1981,7 @@ if i32.const 0 i32.const 400 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2043,7 +2052,7 @@ if i32.const 0 i32.const 400 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2107,19 +2116,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2208,7 +2209,7 @@ if i32.const 0 i32.const 400 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2323,7 +2324,7 @@ if i32.const 0 i32.const 400 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2343,7 +2344,7 @@ if i32.const 0 i32.const 400 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat index 07b351bde9..f4ffed5598 100644 --- a/tests/compiler/std/string-casemapping.release.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -1074,7 +1074,7 @@ if i32.const 0 i32.const 1424 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1099,7 +1099,7 @@ if i32.const 0 i32.const 1424 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1127,7 +1127,7 @@ if i32.const 0 i32.const 1424 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1494,7 +1494,7 @@ if i32.const 0 i32.const 1424 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1578,7 +1578,7 @@ if i32.const 0 i32.const 1424 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1630,7 +1630,7 @@ if i32.const 0 i32.const 1424 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1729,7 +1729,7 @@ if i32.const 1088 i32.const 1424 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1754,6 +1754,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1764,21 +1786,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1820,7 +1827,7 @@ if i32.const 0 i32.const 1424 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1835,7 +1842,7 @@ if i32.const 0 i32.const 1424 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1854,7 +1861,7 @@ if i32.const 0 i32.const 1424 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-encoding.debug.wat b/tests/compiler/std/string-encoding.debug.wat index 4460a39e87..05b49de702 100644 --- a/tests/compiler/std/string-encoding.debug.wat +++ b/tests/compiler/std/string-encoding.debug.wat @@ -1066,7 +1066,7 @@ if i32.const 0 i32.const 464 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1112,7 +1112,7 @@ if i32.const 0 i32.const 464 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1145,7 +1145,7 @@ if i32.const 0 i32.const 464 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1389,7 +1389,7 @@ if i32.const 0 i32.const 464 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1718,7 +1718,7 @@ if i32.const 128 i32.const 464 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1727,6 +1727,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1756,24 +1776,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1811,7 +1820,7 @@ if i32.const 0 i32.const 464 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1882,7 +1891,7 @@ if i32.const 0 i32.const 464 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1946,19 +1955,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2047,7 +2048,7 @@ if i32.const 0 i32.const 464 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2162,7 +2163,7 @@ if i32.const 0 i32.const 464 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2182,7 +2183,7 @@ if i32.const 0 i32.const 464 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat index abe6d3822a..e6c6135966 100644 --- a/tests/compiler/std/string-encoding.release.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -661,7 +661,7 @@ if i32.const 0 i32.const 1488 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -686,7 +686,7 @@ if i32.const 0 i32.const 1488 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -714,7 +714,7 @@ if i32.const 0 i32.const 1488 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1081,7 +1081,7 @@ if i32.const 0 i32.const 1488 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1165,7 +1165,7 @@ if i32.const 0 i32.const 1488 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1217,7 +1217,7 @@ if i32.const 0 i32.const 1488 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1316,7 +1316,7 @@ if i32.const 1152 i32.const 1488 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1341,6 +1341,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1351,21 +1373,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1407,7 +1414,7 @@ if i32.const 0 i32.const 1488 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1422,7 +1429,7 @@ if i32.const 0 i32.const 1488 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1441,7 +1448,7 @@ if i32.const 0 i32.const 1488 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.debug.wat b/tests/compiler/std/string.debug.wat index f0e0fa679f..594709c44f 100644 --- a/tests/compiler/std/string.debug.wat +++ b/tests/compiler/std/string.debug.wat @@ -1657,7 +1657,7 @@ if i32.const 0 i32.const 624 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1703,7 +1703,7 @@ if i32.const 0 i32.const 624 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1736,7 +1736,7 @@ if i32.const 0 i32.const 624 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1980,7 +1980,7 @@ if i32.const 0 i32.const 624 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2309,7 +2309,7 @@ if i32.const 352 i32.const 624 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2318,6 +2318,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2347,24 +2367,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2402,7 +2411,7 @@ if i32.const 0 i32.const 624 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2473,7 +2482,7 @@ if i32.const 0 i32.const 624 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2537,19 +2546,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2638,7 +2639,7 @@ if i32.const 0 i32.const 624 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2753,7 +2754,7 @@ if i32.const 0 i32.const 624 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2773,7 +2774,7 @@ if i32.const 0 i32.const 624 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index a5c74289b8..db65c7ba36 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -1653,7 +1653,7 @@ if i32.const 0 i32.const 1648 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1678,7 +1678,7 @@ if i32.const 0 i32.const 1648 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1706,7 +1706,7 @@ if i32.const 0 i32.const 1648 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -2073,7 +2073,7 @@ if i32.const 0 i32.const 1648 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2157,7 +2157,7 @@ if i32.const 0 i32.const 1648 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2209,7 +2209,7 @@ if i32.const 0 i32.const 1648 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2308,7 +2308,7 @@ if i32.const 1376 i32.const 1648 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2333,6 +2333,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -2343,21 +2365,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -2399,7 +2406,7 @@ if i32.const 0 i32.const 1648 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2414,7 +2421,7 @@ if i32.const 0 i32.const 1648 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -2433,7 +2440,7 @@ if i32.const 0 i32.const 1648 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/symbol.debug.wat b/tests/compiler/std/symbol.debug.wat index e97c478ab3..38d21d35f4 100644 --- a/tests/compiler/std/symbol.debug.wat +++ b/tests/compiler/std/symbol.debug.wat @@ -1095,7 +1095,7 @@ if i32.const 0 i32.const 448 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1141,7 +1141,7 @@ if i32.const 0 i32.const 448 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1174,7 +1174,7 @@ if i32.const 0 i32.const 448 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1418,7 +1418,7 @@ if i32.const 0 i32.const 448 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1747,7 +1747,7 @@ if i32.const 112 i32.const 448 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1756,6 +1756,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1785,24 +1805,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1840,7 +1849,7 @@ if i32.const 0 i32.const 448 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1911,7 +1920,7 @@ if i32.const 0 i32.const 448 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1975,19 +1984,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2076,7 +2077,7 @@ if i32.const 0 i32.const 448 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2191,7 +2192,7 @@ if i32.const 0 i32.const 448 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2211,7 +2212,7 @@ if i32.const 0 i32.const 448 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat index 5a815c1b93..daa6a5d421 100644 --- a/tests/compiler/std/symbol.release.wat +++ b/tests/compiler/std/symbol.release.wat @@ -724,7 +724,7 @@ if i32.const 0 i32.const 1472 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -749,7 +749,7 @@ if i32.const 0 i32.const 1472 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -777,7 +777,7 @@ if i32.const 0 i32.const 1472 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1144,7 +1144,7 @@ if i32.const 0 i32.const 1472 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1228,7 +1228,7 @@ if i32.const 0 i32.const 1472 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1280,7 +1280,7 @@ if i32.const 0 i32.const 1472 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1379,7 +1379,7 @@ if i32.const 1136 i32.const 1472 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1404,6 +1404,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1414,21 +1436,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1470,7 +1477,7 @@ if i32.const 0 i32.const 1472 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1485,7 +1492,7 @@ if i32.const 0 i32.const 1472 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1504,7 +1511,7 @@ if i32.const 0 i32.const 1472 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.debug.wat b/tests/compiler/std/typedarray.debug.wat index c1cb45a49d..4196d9a65b 100644 --- a/tests/compiler/std/typedarray.debug.wat +++ b/tests/compiler/std/typedarray.debug.wat @@ -1404,7 +1404,7 @@ if i32.const 0 i32.const 480 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1450,7 +1450,7 @@ if i32.const 0 i32.const 480 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1483,7 +1483,7 @@ if i32.const 0 i32.const 480 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1727,7 +1727,7 @@ if i32.const 0 i32.const 480 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2056,7 +2056,7 @@ if i32.const 144 i32.const 480 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2065,6 +2065,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2094,24 +2114,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2149,7 +2158,7 @@ if i32.const 0 i32.const 480 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2220,7 +2229,7 @@ if i32.const 0 i32.const 480 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2284,19 +2293,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2385,7 +2386,7 @@ if i32.const 0 i32.const 480 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2500,7 +2501,7 @@ if i32.const 0 i32.const 480 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2520,7 +2521,7 @@ if i32.const 0 i32.const 480 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index a321d5a075..2cf1a259c5 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -1285,7 +1285,7 @@ if i32.const 0 i32.const 1504 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1310,7 +1310,7 @@ if i32.const 0 i32.const 1504 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1338,7 +1338,7 @@ if i32.const 0 i32.const 1504 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1506,7 +1506,7 @@ if i32.const 0 i32.const 1504 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1795,7 +1795,7 @@ if i32.const 0 i32.const 1504 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1847,7 +1847,7 @@ if i32.const 0 i32.const 1504 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1878,7 +1878,7 @@ if i32.const 1168 i32.const 1504 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1903,6 +1903,28 @@ if memory.size $0 local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + else + local.get $3 + end i32.const 4 local.get $0 i32.load $0 offset=1568 @@ -1913,21 +1935,6 @@ i32.sub i32.ne i32.shl - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1969,7 +1976,7 @@ if i32.const 0 i32.const 1504 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1984,7 +1991,7 @@ if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -2003,7 +2010,7 @@ if i32.const 0 i32.const 1504 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/uri.debug.wat b/tests/compiler/std/uri.debug.wat index 2ebe24dff2..0a61dbfdb2 100644 --- a/tests/compiler/std/uri.debug.wat +++ b/tests/compiler/std/uri.debug.wat @@ -1109,7 +1109,7 @@ if i32.const 0 i32.const 496 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1155,7 +1155,7 @@ if i32.const 0 i32.const 496 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1188,7 +1188,7 @@ if i32.const 0 i32.const 496 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1432,7 +1432,7 @@ if i32.const 0 i32.const 496 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1761,7 +1761,7 @@ if i32.const 160 i32.const 496 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1770,6 +1770,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1799,24 +1819,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1854,7 +1863,7 @@ if i32.const 0 i32.const 496 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1925,7 +1934,7 @@ if i32.const 0 i32.const 496 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1989,19 +1998,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2090,7 +2091,7 @@ if i32.const 0 i32.const 496 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2205,7 +2206,7 @@ if i32.const 0 i32.const 496 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2225,7 +2226,7 @@ if i32.const 0 i32.const 496 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat index 19c6803f62..f72e4f3bee 100644 --- a/tests/compiler/std/uri.release.wat +++ b/tests/compiler/std/uri.release.wat @@ -741,7 +741,7 @@ if i32.const 0 i32.const 1520 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -766,7 +766,7 @@ if i32.const 0 i32.const 1520 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -794,7 +794,7 @@ if i32.const 0 i32.const 1520 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1161,7 +1161,7 @@ if i32.const 0 i32.const 1520 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1245,7 +1245,7 @@ if i32.const 0 i32.const 1520 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1297,7 +1297,7 @@ if i32.const 0 i32.const 1520 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1396,7 +1396,7 @@ if i32.const 1184 i32.const 1520 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1421,6 +1421,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1431,21 +1453,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1487,7 +1494,7 @@ if i32.const 0 i32.const 1520 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1502,7 +1509,7 @@ if i32.const 0 i32.const 1520 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1521,7 +1528,7 @@ if i32.const 0 i32.const 1520 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/super-inline.debug.wat b/tests/compiler/super-inline.debug.wat index f308e52d90..a82a1ae02d 100644 --- a/tests/compiler/super-inline.debug.wat +++ b/tests/compiler/super-inline.debug.wat @@ -1034,7 +1034,7 @@ if i32.const 0 i32.const 368 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1080,7 +1080,7 @@ if i32.const 0 i32.const 368 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1113,7 +1113,7 @@ if i32.const 0 i32.const 368 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1357,7 +1357,7 @@ if i32.const 0 i32.const 368 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1686,7 +1686,7 @@ if i32.const 32 i32.const 368 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1695,6 +1695,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1724,24 +1744,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1779,7 +1788,7 @@ if i32.const 0 i32.const 368 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1850,7 +1859,7 @@ if i32.const 0 i32.const 368 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1914,19 +1923,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2015,7 +2016,7 @@ if i32.const 0 i32.const 368 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2130,7 +2131,7 @@ if i32.const 0 i32.const 368 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2150,7 +2151,7 @@ if i32.const 0 i32.const 368 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat index 19e7500ee8..ba821f9359 100644 --- a/tests/compiler/super-inline.release.wat +++ b/tests/compiler/super-inline.release.wat @@ -632,7 +632,7 @@ if i32.const 0 i32.const 1392 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -657,7 +657,7 @@ if i32.const 0 i32.const 1392 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -685,7 +685,7 @@ if i32.const 0 i32.const 1392 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1052,7 +1052,7 @@ if i32.const 0 i32.const 1392 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1119,7 +1119,7 @@ if i32.const 0 i32.const 1392 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1252,7 +1252,7 @@ if i32.const 0 i32.const 1392 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1267,7 +1267,7 @@ if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/templateliteral.debug.wat b/tests/compiler/templateliteral.debug.wat index df057be5d8..75092f31b9 100644 --- a/tests/compiler/templateliteral.debug.wat +++ b/tests/compiler/templateliteral.debug.wat @@ -1215,7 +1215,7 @@ if i32.const 0 i32.const 528 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1261,7 +1261,7 @@ if i32.const 0 i32.const 528 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1294,7 +1294,7 @@ if i32.const 0 i32.const 528 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1538,7 +1538,7 @@ if i32.const 0 i32.const 528 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1867,7 +1867,7 @@ if i32.const 192 i32.const 528 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1876,6 +1876,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1905,24 +1925,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1960,7 +1969,7 @@ if i32.const 0 i32.const 528 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2031,7 +2040,7 @@ if i32.const 0 i32.const 528 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2095,19 +2104,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2196,7 +2197,7 @@ if i32.const 0 i32.const 528 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2311,7 +2312,7 @@ if i32.const 0 i32.const 528 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2331,7 +2332,7 @@ if i32.const 0 i32.const 528 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index 9f8bf21cc3..4f4a8d016b 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -721,7 +721,7 @@ if i32.const 0 i32.const 1552 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -746,7 +746,7 @@ if i32.const 0 i32.const 1552 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -774,7 +774,7 @@ if i32.const 0 i32.const 1552 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1141,7 +1141,7 @@ if i32.const 0 i32.const 1552 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1225,7 +1225,7 @@ if i32.const 0 i32.const 1552 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1277,7 +1277,7 @@ if i32.const 0 i32.const 1552 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1376,7 +1376,7 @@ if i32.const 1216 i32.const 1552 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1401,6 +1401,28 @@ if memory.size $0 local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + else + local.get $5 + end i32.const 4 local.get $4 i32.load $0 offset=1568 @@ -1411,21 +1433,6 @@ i32.sub i32.ne i32.shl - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $5 - local.get $5 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1467,7 +1474,7 @@ if i32.const 0 i32.const 1552 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1482,7 +1489,7 @@ if i32.const 0 i32.const 1552 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1501,7 +1508,7 @@ if i32.const 0 i32.const 1552 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/throw.debug.wat b/tests/compiler/throw.debug.wat index 48e30b244d..e18fa212c9 100644 --- a/tests/compiler/throw.debug.wat +++ b/tests/compiler/throw.debug.wat @@ -1146,7 +1146,7 @@ if i32.const 0 i32.const 608 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1192,7 +1192,7 @@ if i32.const 0 i32.const 608 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1225,7 +1225,7 @@ if i32.const 0 i32.const 608 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1469,7 +1469,7 @@ if i32.const 0 i32.const 608 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat index 0ad7784a30..66c340701c 100644 --- a/tests/compiler/throw.release.wat +++ b/tests/compiler/throw.release.wat @@ -921,7 +921,7 @@ if i32.const 0 i32.const 1632 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -940,7 +940,7 @@ if i32.const 0 i32.const 1632 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1028,7 +1028,7 @@ if i32.const 0 i32.const 1632 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/typeof.debug.wat b/tests/compiler/typeof.debug.wat index 09f0b882ed..53a934fd4e 100644 --- a/tests/compiler/typeof.debug.wat +++ b/tests/compiler/typeof.debug.wat @@ -1173,7 +1173,7 @@ if i32.const 0 i32.const 672 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1219,7 +1219,7 @@ if i32.const 0 i32.const 672 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1252,7 +1252,7 @@ if i32.const 0 i32.const 672 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1496,7 +1496,7 @@ if i32.const 0 i32.const 672 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1825,7 +1825,7 @@ if i32.const 336 i32.const 672 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -1834,6 +1834,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -1863,24 +1883,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -1918,7 +1927,7 @@ if i32.const 0 i32.const 672 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1989,7 +1998,7 @@ if i32.const 0 i32.const 672 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2053,19 +2062,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2154,7 +2155,7 @@ if i32.const 0 i32.const 672 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2269,7 +2270,7 @@ if i32.const 0 i32.const 672 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2289,7 +2290,7 @@ if i32.const 0 i32.const 672 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat index cd688379c0..34f7c56d60 100644 --- a/tests/compiler/typeof.release.wat +++ b/tests/compiler/typeof.release.wat @@ -648,7 +648,7 @@ if i32.const 0 i32.const 1696 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -673,7 +673,7 @@ if i32.const 0 i32.const 1696 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -701,7 +701,7 @@ if i32.const 0 i32.const 1696 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1068,7 +1068,7 @@ if i32.const 0 i32.const 1696 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1135,7 +1135,7 @@ if i32.const 0 i32.const 1696 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1268,7 +1268,7 @@ if i32.const 0 i32.const 1696 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1283,7 +1283,7 @@ if i32.const 0 i32.const 1696 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/while.debug.wat b/tests/compiler/while.debug.wat index 2e2d3d5025..27f83c7032 100644 --- a/tests/compiler/while.debug.wat +++ b/tests/compiler/while.debug.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_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) @@ -1456,7 +1456,7 @@ if i32.const 0 i32.const 416 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -1502,7 +1502,7 @@ if i32.const 0 i32.const 416 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -1535,7 +1535,7 @@ if i32.const 0 i32.const 416 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1779,7 +1779,7 @@ if i32.const 0 i32.const 416 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -2108,7 +2108,7 @@ if i32.const 80 i32.const 416 - i32.const 459 + i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable @@ -2117,6 +2117,26 @@ call $~lib/rt/tlsf/computeSize return ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) (local $fl i32) (local $sl i32) @@ -2146,24 +2166,13 @@ local.set $sl else local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size - end + call $~lib/rt/tlsf/roundSize local.set $requestSize - i32.const 31 + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub local.get $requestSize i32.clz i32.sub @@ -2201,7 +2210,7 @@ if i32.const 0 i32.const 416 - i32.const 330 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -2272,7 +2281,7 @@ if i32.const 0 i32.const 416 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -2336,19 +2345,11 @@ i32.const 0 drop local.get $size - i32.const 536870910 - i32.lt_u + i32.const 256 + i32.ge_u if local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + call $~lib/rt/tlsf/roundSize local.set $size end memory.size $0 @@ -2437,7 +2438,7 @@ if i32.const 0 i32.const 416 - i32.const 357 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -2552,7 +2553,7 @@ if i32.const 0 i32.const 416 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -2572,7 +2573,7 @@ if i32.const 0 i32.const 416 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat index 1c6e3ebbe4..b6ef7b8ce6 100644 --- a/tests/compiler/while.release.wat +++ b/tests/compiler/while.release.wat @@ -620,7 +620,7 @@ if i32.const 0 i32.const 1440 - i32.const 378 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable @@ -645,7 +645,7 @@ if i32.const 0 i32.const 1440 - i32.const 385 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable @@ -673,7 +673,7 @@ if i32.const 0 i32.const 1440 - i32.const 398 + i32.const 402 i32.const 5 call $~lib/builtins/abort unreachable @@ -1040,7 +1040,7 @@ if i32.const 0 i32.const 1440 - i32.const 560 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -1107,7 +1107,7 @@ if i32.const 0 i32.const 1440 - i32.const 343 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1240,7 +1240,7 @@ if i32.const 0 i32.const 1440 - i32.const 497 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1255,7 +1255,7 @@ if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable