diff options
author | Alon Zakai <azakai@google.com> | 2022-08-22 13:53:47 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-22 13:53:47 -0700 |
commit | 38c084ee386e257389d44c6200a403f74432e1af (patch) | |
tree | 8e41abd3ad903b9fcb426bf0c4be3dd66a092247 /test/wasm2js/stack-modified.2asm.js.opt | |
parent | b24df4d0c4705027fdc6e261aa3f8e4f61dc5c0a (diff) | |
download | binaryen-38c084ee386e257389d44c6200a403f74432e1af.tar.gz binaryen-38c084ee386e257389d44c6200a403f74432e1af.tar.bz2 binaryen-38c084ee386e257389d44c6200a403f74432e1af.zip |
Avoid adding new unneeded names to blocks in text roundtripping (#4943)
Previously the wat parser would turn this input:
(block
(nop)
)
into something like this:
(block $block17
(nop)
)
It just added a name all the time, in case the block is referred to by an index
later even though it doesn't have a name.
This PR makes us rountrip more precisely by not adding such names: if there
was no name before, and there is no break by index, then do not add a name.
In addition, this will be useful for non-nullable locals since whether a block has
a name or not matters there. Like #4912, this makes us more regular in our
usage of block names.
Diffstat (limited to 'test/wasm2js/stack-modified.2asm.js.opt')
-rw-r--r-- | test/wasm2js/stack-modified.2asm.js.opt | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/test/wasm2js/stack-modified.2asm.js.opt b/test/wasm2js/stack-modified.2asm.js.opt index 63d2e4829..4944c5046 100644 --- a/test/wasm2js/stack-modified.2asm.js.opt +++ b/test/wasm2js/stack-modified.2asm.js.opt @@ -17,35 +17,40 @@ function asmFunc(env) { var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function legalstub$0($0, $1) { - var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; - $4 = $1; - $2 = 1; + var $2 = 0, $3 = 0, $4 = 0; + $2 = $1; + $3 = 1; while (1) { - if ($0 | $4) { - $1 = $2 >>> 16 | 0; - $3 = $0 >>> 16 | 0; - $9 = Math_imul($1, $3); - $5 = $2 & 65535; - $6 = $0 & 65535; - $7 = Math_imul($5, $6); - $3 = ($7 >>> 16 | 0) + Math_imul($3, $5) | 0; - $1 = ($3 & 65535) + Math_imul($1, $6) | 0; - i64toi32_i32$HIGH_BITS = (Math_imul($2, $4) + $9 | 0) + Math_imul($0, $8) + ($3 >>> 16) + ($1 >>> 16) | 0; - $2 = $7 & 65535 | $1 << 16; - $8 = i64toi32_i32$HIGH_BITS; + if ($0 | $2) { + $3 = __wasm_i64_mul($0, $2, $3, $4); + $4 = i64toi32_i32$HIGH_BITS; $1 = $0; - $0 = $1 - 1 | 0; - $4 = $4 - !$1 | 0; + $0 = $0 - 1 | 0; + $2 = $2 - !$1 | 0; continue; } break; }; - i64toi32_i32$HIGH_BITS = $8; - $0 = $2; + i64toi32_i32$HIGH_BITS = $4; + $0 = $3; setTempRet0(i64toi32_i32$HIGH_BITS | 0); return $0; } + function __wasm_i64_mul($0, $1, $2, $3) { + var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; + $4 = $2 >>> 16 | 0; + $5 = $0 >>> 16 | 0; + $9 = Math_imul($4, $5); + $6 = $2 & 65535; + $7 = $0 & 65535; + $8 = Math_imul($6, $7); + $5 = ($8 >>> 16 | 0) + Math_imul($5, $6) | 0; + $4 = ($5 & 65535) + Math_imul($4, $7) | 0; + i64toi32_i32$HIGH_BITS = (Math_imul($1, $2) + $9 | 0) + Math_imul($0, $3) + ($5 >>> 16) + ($4 >>> 16) | 0; + return $8 & 65535 | $4 << 16; + } + return { "fac_expr": legalstub$0, "fac_stack": legalstub$0, |