Utilize Binaryen's -O4

When specifying -O3 or -Oz, asc now automatically increases the optimize level to 4, then including costly non-LLVM optimizations for blocky code, in turn achieving similar results as an LLVM-based generator.
This commit is contained in:
dcodeIO 2018-06-09 14:05:33 +02:00
parent e9094bbd6f
commit c6ec5e2832
46 changed files with 14240 additions and 16223 deletions

View File

@ -491,6 +491,10 @@ exports.main = function main(argv, options, callback) {
shrinkLevel = 2; shrinkLevel = 2;
} }
// Implicitly run costly non-LLVM optimizations on -O3 or -Oz
// see: https://github.com/WebAssembly/binaryen/pull/1596
if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;
module.setOptimizeLevel(optimizeLevel > 0 ? optimizeLevel : 0); module.setOptimizeLevel(optimizeLevel > 0 ? optimizeLevel : 0);
module.setShrinkLevel(shrinkLevel); module.setShrinkLevel(shrinkLevel);
module.setDebugInfo(debugInfo); module.setDebugInfo(debugInfo);

2
dist/asc.js vendored

File diff suppressed because one or more lines are too long

2
dist/asc.js.map vendored

File diff suppressed because one or more lines are too long

6
package-lock.json generated
View File

@ -1496,9 +1496,9 @@
"dev": true "dev": true
}, },
"binaryen": { "binaryen": {
"version": "48.0.0-nightly.20180605", "version": "48.0.0-nightly.20180609",
"resolved": "https://registry.npmjs.org/binaryen/-/binaryen-48.0.0-nightly.20180605.tgz", "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-48.0.0-nightly.20180609.tgz",
"integrity": "sha512-P2Q7fl1k+SWUUhcO+nR0FvokwuTFTLU2JQhhSzGTSen70JFGArEAfr936sxiK/SGUQjBwXvHLoO6ggEYn82rbQ==" "integrity": "sha512-+E+PO+B1JsXJb9F6PJelL/MsDzp1tCJW2/tDd98VrDL0HfMtSmaL2sACwUPDw2EQVcz70ZbItkcnuvGj+hlqdg=="
}, },
"binaryextensions": { "binaryextensions": {
"version": "2.1.1", "version": "2.1.1",

View File

@ -12,7 +12,7 @@
}, },
"dependencies": { "dependencies": {
"@protobufjs/utf8": "^1.1.0", "@protobufjs/utf8": "^1.1.0",
"binaryen": "48.0.0-nightly.20180605", "binaryen": "48.0.0-nightly.20180609",
"glob": "^7.1.2", "glob": "^7.1.2",
"long": "^4.0.0", "long": "^4.0.0",
"minimist": "^1.2.0", "minimist": "^1.2.0",

View File

@ -123,7 +123,7 @@ tests.forEach(filename => {
filename, filename,
"--baseDir", basedir, "--baseDir", basedir,
"--validate", "--validate",
"--optimize", "-O3",
"--measure", "--measure",
"--binaryFile" // -> stdout "--binaryFile" // -> stdout
]; ];

View File

@ -31,46 +31,12 @@
) )
) )
(func $start (; 5 ;) (type $v) (func $start (; 5 ;) (type $v)
(local $0 i32)
(drop (drop
(call $abi/internal) (call $abi/internal)
) )
(set_global $abi/condition (set_global $abi/condition
(i32.const 1) (i32.const 1)
) )
(set_local $0
(i32.const 256)
)
(if
(tee_local $0
(select
(i32.shr_s
(i32.shr_s
(i32.shl
(get_local $0)
(i32.const 24)
)
(i32.const 24)
)
(i32.const 24)
)
(i32.and
(get_local $0)
(i32.const 127)
)
(get_global $abi/condition)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 58)
(i32.const 2)
)
(unreachable)
)
)
(set_global $abi/y (set_global $abi/y
(i32.const 0) (i32.const 0)
) )

View File

@ -1,33 +1,6 @@
(module (module
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\t\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s") (data (i32.const 8) "\t\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s")
(data (i32.const 32) "\0c\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e") (data (i32.const 32) "\0c\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e")
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start)
(func $start (; 1 ;) (type $v)
(local $0 i32)
(if
(i32.eqz
(if (result i32)
(tee_local $0
(i32.const 1)
)
(get_local $0)
(block
(call $~lib/env/abort
(i32.const 32)
(i32.const 8)
(i32.const 10)
(i32.const 5)
)
(unreachable)
)
)
)
(unreachable)
)
)
) )

File diff suppressed because it is too large Load Diff

View File

@ -60,24 +60,6 @@
(nop) (nop)
) )
(func $start (; 7 ;) (type $v) (func $start (; 7 ;) (type $v)
(local $0 i32)
(local $1 i32)
(local $2 i64)
(local $3 i64)
(drop
(select
(tee_local $0
(i32.const 1)
)
(tee_local $1
(i32.const 2)
)
(i32.gt_s
(get_local $0)
(get_local $1)
)
)
)
(set_global $builtins/i (set_global $builtins/i
(i32.const 31) (i32.const 31)
) )
@ -94,19 +76,7 @@
(i32.const -2147483648) (i32.const -2147483648)
) )
(set_global $builtins/i (set_global $builtins/i
(select (i32.const 42)
(tee_local $0
(i32.const -42)
)
(i32.sub
(i32.const 0)
(get_local $0)
)
(i32.gt_s
(get_local $0)
(i32.const 0)
)
)
) )
(if (if
(i32.ne (i32.ne
@ -124,16 +94,7 @@
) )
) )
(set_global $builtins/i (set_global $builtins/i
(select (i32.const 2)
(tee_local $0
(i32.const 1)
)
(i32.const 2)
(i32.gt_s
(get_local $0)
(get_local $1)
)
)
) )
(if (if
(i32.ne (i32.ne
@ -151,14 +112,7 @@
) )
) )
(set_global $builtins/i (set_global $builtins/i
(select (i32.const 1)
(i32.const 1)
(i32.const 2)
(i32.lt_s
(get_local $0)
(get_local $1)
)
)
) )
(if (if
(i32.ne (i32.ne
@ -191,19 +145,7 @@
(i64.const -9223372036854775808) (i64.const -9223372036854775808)
) )
(set_global $builtins/I (set_global $builtins/I
(select (i64.const 42)
(tee_local $2
(i64.const -42)
)
(i64.sub
(i64.const 0)
(get_local $2)
)
(i64.gt_s
(get_local $2)
(i64.const 0)
)
)
) )
(if (if
(i64.ne (i64.ne
@ -221,18 +163,7 @@
) )
) )
(set_global $builtins/I (set_global $builtins/I
(select (i64.const 2)
(tee_local $2
(i64.const 1)
)
(tee_local $3
(i64.const 2)
)
(i64.gt_s
(get_local $2)
(get_local $3)
)
)
) )
(if (if
(i64.ne (i64.ne
@ -250,14 +181,7 @@
) )
) )
(set_global $builtins/I (set_global $builtins/I
(select (i64.const 1)
(i64.const 1)
(i64.const 2)
(i64.lt_s
(get_local $2)
(get_local $3)
)
)
) )
(if (if
(i32.ne (i32.ne

View File

@ -50,16 +50,14 @@
) )
) )
(func $start (; 3 ;) (type $v) (func $start (; 3 ;) (type $v)
(set_global $~argc
(i32.const 1)
)
(if (if
(block (result i32) (call $call-optional/opt|trampoline
(set_global $~argc (i32.const 3)
(i32.const 1) (i32.const 0)
) (i32.const 0)
(call $call-optional/opt|trampoline
(i32.const 3)
(i32.const 0)
(i32.const 0)
)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -71,19 +69,17 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 2)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call $call-optional/opt|trampoline
(i32.const 2) (i32.const 3)
) (i32.const 4)
(i32.ne (i32.const 0)
(call $call-optional/opt|trampoline
(i32.const 3)
(i32.const 4)
(i32.const 0)
)
(i32.const 5)
) )
(i32.const 5)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -114,17 +110,15 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 1)
)
(if (if
(block (result i32) (call_indirect (type $iiii)
(set_global $~argc (i32.const 3)
(i32.const 1) (i32.const 0)
) (i32.const 0)
(call_indirect (type $iiii) (get_global $call-optional/optIndirect)
(i32.const 3)
(i32.const 0)
(i32.const 0)
(get_global $call-optional/optIndirect)
)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -136,20 +130,18 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 2)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call_indirect (type $iiii)
(i32.const 2) (i32.const 3)
) (i32.const 4)
(i32.ne (i32.const 0)
(call_indirect (type $iiii) (get_global $call-optional/optIndirect)
(i32.const 3)
(i32.const 4)
(i32.const 0)
(get_global $call-optional/optIndirect)
)
(i32.const 5)
) )
(i32.const 5)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -161,20 +153,18 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 3)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call_indirect (type $iiii)
(i32.const 3) (i32.const 3)
(i32.const 4)
(i32.const 5)
(get_global $call-optional/optIndirect)
) )
(i32.ne (i32.const 12)
(call_indirect (type $iiii)
(i32.const 3)
(i32.const 4)
(i32.const 5)
(get_global $call-optional/optIndirect)
)
(i32.const 12)
)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort

View File

@ -4,13 +4,12 @@
(export "test" (func $class-with-boolean-field/test)) (export "test" (func $class-with-boolean-field/test))
(export "memory" (memory $0)) (export "memory" (memory $0))
(func $class-with-boolean-field/test (; 0 ;) (type $i) (result i32) (func $class-with-boolean-field/test (; 0 ;) (type $i) (result i32)
(local $0 i32)
(i32.store8 (i32.store8
(get_local $0) (i32.const 0)
(i32.const 1) (i32.const 1)
) )
(i32.load8_u (i32.load8_u
(get_local $0) (i32.const 0)
) )
) )
) )

View File

@ -10,19 +10,17 @@
(start $start) (start $start)
(func $start (; 1 ;) (type $v) (func $start (; 1 ;) (type $v)
(local $0 i32) (local $0 i32)
(set_global $comma/b (set_global $comma/a
(block (result i32) (i32.add
(set_global $comma/a (tee_local $0
(i32.add (get_global $comma/a)
(tee_local $0
(get_global $comma/a)
)
(i32.const 1)
)
) )
(get_local $0) (i32.const 1)
) )
) )
(set_global $comma/b
(get_local $0)
)
(if (if
(i32.ne (i32.ne
(get_global $comma/a) (get_global $comma/a)
@ -89,24 +87,20 @@
(unreachable) (unreachable)
) )
) )
(set_global $comma/b
(i32.const 0)
)
(set_global $comma/a (set_global $comma/a
(block (result i32) (get_global $comma/b)
(set_global $comma/b )
(i32.const 0) (set_global $comma/a
) (i32.add
(get_global $comma/b) (get_global $comma/a)
(i32.const 1)
) )
) )
(set_global $comma/b (set_global $comma/b
(block (result i32) (get_global $comma/a)
(set_global $comma/a
(i32.add
(get_global $comma/a)
(i32.const 1)
)
)
(get_global $comma/a)
)
) )
(if (if
(i32.ne (i32.ne
@ -139,19 +133,17 @@
) )
) )
(set_global $comma/a (set_global $comma/a
(block (result i32) (i32.add
(set_global $comma/a (get_global $comma/a)
(i32.add (i32.const 1)
(get_global $comma/a)
(i32.const 1)
)
)
(set_global $comma/b
(get_global $comma/a)
)
(get_global $comma/b)
) )
) )
(set_global $comma/b
(get_global $comma/a)
)
(set_global $comma/a
(get_global $comma/b)
)
(if (if
(i32.ne (i32.ne
(get_global $comma/a) (get_global $comma/a)

View File

@ -90,7 +90,6 @@
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32)
(if (if
(get_local $0) (get_local $0)
(block (block
@ -129,26 +128,24 @@
(grow_memory (grow_memory
(select (select
(get_local $2) (get_local $2)
(tee_local $4 (tee_local $3
(tee_local $3 (i32.shr_u
(i32.shr_u (i32.and
(i32.and (i32.add
(i32.add (i32.sub
(i32.sub (get_local $0)
(get_local $0) (get_local $1)
(get_local $1)
)
(i32.const 65535)
) )
(i32.const -65536) (i32.const 65535)
) )
(i32.const 16) (i32.const -65536)
) )
(i32.const 16)
) )
) )
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
) )
@ -176,25 +173,21 @@
(i32.const 0) (i32.const 0)
) )
(func $exports/Car#constructor (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (func $exports/Car#constructor (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (if
(i32.store (i32.eqz
(if (result i32)
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (i32.store
(i32.store (tee_local $0
(tee_local $2 (call $~lib/allocator/arena/allocate_memory
(call $~lib/allocator/arena/allocate_memory (i32.const 4)
(i32.const 4)
)
)
(get_local $1)
)
(tee_local $0
(get_local $2)
) )
) )
(get_local $1)
) )
)
(i32.store
(get_local $0)
(get_local $1) (get_local $1)
) )
(get_local $0) (get_local $0)

View File

@ -26,18 +26,16 @@
(i32.const 1) (i32.const 1)
) )
(func $start (; 4 ;) (type $v) (func $start (; 4 ;) (type $v)
(set_global $~argc
(i32.const 1)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call_indirect (type $ii)
(i32.const 1)
)
(i32.ne
(call_indirect (type $ii)
(i32.const 1)
(get_global $function-expression/f1)
)
(i32.const 1) (i32.const 1)
(get_global $function-expression/f1)
) )
(i32.const 1)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -49,18 +47,16 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 1)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call_indirect (type $ii)
(i32.const 1)
)
(i32.ne
(call_indirect (type $ii)
(i32.const 2)
(get_global $function-expression/f2)
)
(i32.const 2) (i32.const 2)
(get_global $function-expression/f2)
) )
(i32.const 2)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -78,17 +74,15 @@
(call_indirect (type $v) (call_indirect (type $v)
(get_global $function-expression/f3) (get_global $function-expression/f3)
) )
(set_global $~argc
(i32.const 0)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call_indirect (type $i)
(i32.const 0) (get_global $function-expression/f4)
)
(i32.ne
(call_indirect (type $i)
(get_global $function-expression/f4)
)
(i32.const 1)
) )
(i32.const 1)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort

View File

@ -91,19 +91,17 @@
(set_global $function-types/i32Adder (set_global $function-types/i32Adder
(call $function-types/makeAdder<i32>) (call $function-types/makeAdder<i32>)
) )
(set_global $~argc
(i32.const 2)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call_indirect (type $iii)
(i32.const 1)
(i32.const 2) (i32.const 2)
(get_global $function-types/i32Adder)
) )
(i32.ne (i32.const 3)
(call_indirect (type $iii)
(i32.const 1)
(i32.const 2)
(get_global $function-types/i32Adder)
)
(i32.const 3)
)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -118,19 +116,17 @@
(set_global $function-types/i64Adder (set_global $function-types/i64Adder
(call $function-types/makeAdder<i64>) (call $function-types/makeAdder<i64>)
) )
(set_global $~argc
(i32.const 2)
)
(if (if
(block (result i32) (i64.ne
(set_global $~argc (call_indirect (type $III)
(i32.const 2) (i64.const 10)
) (i64.const 20)
(i64.ne (get_global $function-types/i64Adder)
(call_indirect (type $III)
(i64.const 10)
(i64.const 20)
(get_global $function-types/i64Adder)
)
(i64.const 30)
) )
(i64.const 30)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -142,19 +138,17 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 2)
)
(if (if
(block (result i32) (f64.ne
(set_global $~argc (call_indirect (type $FFF)
(i32.const 2) (f64.const 1.5)
) (f64.const 2.5)
(f64.ne (call $function-types/makeAdder<f64>)
(call_indirect (type $FFF)
(f64.const 1.5)
(f64.const 2.5)
(call $function-types/makeAdder<f64>)
)
(f64.const 4)
) )
(f64.const 4)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort
@ -222,19 +216,17 @@
(unreachable) (unreachable)
) )
) )
(set_global $~argc
(i32.const 2)
)
(if (if
(block (result i32) (i32.ne
(set_global $~argc (call $function-types/makeAndAdd<i32>|trampoline
(i32.const 1)
(i32.const 2) (i32.const 2)
(i32.const 0)
) )
(i32.ne (i32.const 3)
(call $function-types/makeAndAdd<i32>|trampoline
(i32.const 1)
(i32.const 2)
(i32.const 0)
)
(i32.const 3)
)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort

View File

@ -48,15 +48,13 @@
(unreachable) (unreachable)
) )
) )
(call $getter-setter/Foo.set:bar
(i32.const 2)
)
(if (if
(block (result i32) (i32.ne
(call $getter-setter/Foo.set:bar (call $getter-setter/Foo.get:bar)
(i32.const 2) (i32.const 2)
)
(i32.ne
(call $getter-setter/Foo.get:bar)
(i32.const 2)
)
) )
(block (block
(call $~lib/env/abort (call $~lib/env/abort

View File

@ -12,10 +12,10 @@
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $if/ifThenElse (; 1 ;) (type $ii) (param $0 i32) (result i32) (func $if/ifThenElse (; 1 ;) (type $ii) (param $0 i32) (result i32)
(select (if (result i32)
(get_local $0)
(i32.const 1) (i32.const 1)
(i32.const 0) (i32.const 0)
(get_local $0)
) )
) )
(func $if/ifThen (; 2 ;) (type $ii) (param $0 i32) (result i32) (func $if/ifThen (; 2 ;) (type $ii) (param $0 i32) (result i32)

View File

@ -28,7 +28,6 @@
) )
(func $start (; 5 ;) (type $v) (func $start (; 5 ;) (type $v)
(local $0 i32) (local $0 i32)
(local $1 i32)
(call $infer-type/locals) (call $infer-type/locals)
(set_global $infer-type/ri (set_global $infer-type/ri
(call $infer-type/reti) (call $infer-type/reti)
@ -43,14 +42,11 @@
(call $infer-type/refF) (call $infer-type/refF)
) )
(block $break|0 (block $break|0
(set_local $1
(i32.const 10)
)
(loop $repeat|0 (loop $repeat|0
(br_if $break|0 (br_if $break|0
(i32.ge_s (i32.ge_s
(get_local $0) (get_local $0)
(get_local $1) (i32.const 10)
) )
) )
(set_local $0 (set_local $0

View File

@ -20,125 +20,17 @@
(get_local $0) (get_local $0)
) )
(func $inlining/test_funcs (; 3 ;) (type $v) (func $inlining/test_funcs (; 3 ;) (type $v)
(local $0 i32) (set_global $~argc
(if (i32.const 1)
(i32.ne
(block $inlining/func_ii|inlined.0 (result i32)
(drop
(br_if $inlining/func_ii|inlined.0
(i32.const 1)
(i32.eq
(tee_local $0
(i32.const 42)
)
(i32.const 42)
)
)
)
(select
(i32.const 2)
(i32.const 3)
(i32.lt_s
(get_local $0)
(i32.const 42)
)
)
)
(i32.const 1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 60)
(i32.const 2)
)
(unreachable)
)
) )
(if (if
(i32.ne (i32.ne
(block $inlining/func_ii|inlined.1 (result i32) (call_indirect (type $ii)
(drop (i32.const 2)
(br_if $inlining/func_ii|inlined.1 (i32.const 0)
(i32.const 1)
(i32.eq
(tee_local $0
(i32.const 41)
)
(i32.const 42)
)
)
)
(select
(i32.const 2)
(i32.const 3)
(i32.lt_s
(get_local $0)
(i32.const 42)
)
)
) )
(i32.const 2) (i32.const 2)
) )
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 61)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(block $inlining/func_ii|inlined.2 (result i32)
(drop
(br_if $inlining/func_ii|inlined.2
(i32.const 1)
(i32.eq
(tee_local $0
(i32.const 43)
)
(i32.const 42)
)
)
)
(select
(i32.const 2)
(i32.const 3)
(i32.lt_s
(get_local $0)
(i32.const 42)
)
)
)
(i32.const 3)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 62)
(i32.const 2)
)
(unreachable)
)
)
(if
(block (result i32)
(set_global $~argc
(i32.const 1)
)
(i32.ne
(call_indirect (type $ii)
(i32.const 2)
(i32.const 0)
)
(i32.const 2)
)
)
(block (block
(call $~lib/env/abort (call $~lib/env/abort
(i32.const 0) (i32.const 0)

View File

@ -11,25 +11,6 @@
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $start (; 1 ;) (type $v) (func $start (; 1 ;) (type $v)
(local $0 i32)
(local $1 f64)
(if
(i32.eqz
(tee_local $0
(i32.const 2)
)
)
(unreachable)
)
(if
(f64.eq
(tee_local $1
(f64.const 2)
)
(f64.const 0)
)
(unreachable)
)
(set_global $logical/i (set_global $logical/i
(i32.const 2) (i32.const 2)
) )

View File

@ -9,20 +9,19 @@
(func $~lib/math/NativeMath.log (; 0 ;) (type $FF) (param $0 f64) (result f64) (func $~lib/math/NativeMath.log (; 0 ;) (type $FF) (param $0 f64) (result f64)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i64) (local $3 i32)
(local $4 f64) (local $4 i64)
(local $5 i32) (local $5 f64)
(local $6 f64) (local $6 f64)
(local $7 f64) (local $7 f64)
(local $8 f64)
(if (if
(if (result i32) (i32.eqz
(tee_local $5 (tee_local $2
(i32.lt_u (i32.lt_u
(tee_local $1 (tee_local $1
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(tee_local $3 (tee_local $4
(i64.reinterpret/f64 (i64.reinterpret/f64
(get_local $0) (get_local $0)
) )
@ -34,17 +33,21 @@
(i32.const 1048576) (i32.const 1048576)
) )
) )
(get_local $5) )
(set_local $2
(i32.shr_u (i32.shr_u
(get_local $1) (get_local $1)
(i32.const 31) (i32.const 31)
) )
) )
)
(if
(get_local $2)
(block (block
(if (if
(i64.eq (i64.eq
(i64.shl (i64.shl
(get_local $3) (get_local $4)
(i64.const 1) (i64.const 1)
) )
(i64.const 0) (i64.const 0)
@ -74,16 +77,13 @@
) )
) )
) )
(set_local $2 (set_local $3
(i32.sub (i32.const -54)
(get_local $2)
(i32.const 54)
)
) )
(set_local $1 (set_local $1
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(tee_local $3 (tee_local $4
(i64.reinterpret/f64 (i64.reinterpret/f64
(f64.mul (f64.mul
(get_local $0) (get_local $0)
@ -104,32 +104,36 @@
(return (return
(get_local $0) (get_local $0)
) )
(if (block
(if (result i32) (if
(tee_local $5 (tee_local $2
(i32.eq (i32.eq
(get_local $1) (get_local $1)
(i32.const 1072693248) (i32.const 1072693248)
) )
) )
(i64.eq (set_local $2
(i64.shl (i64.eq
(get_local $3) (i64.shl
(i64.const 32) (get_local $4)
(i64.const 32)
)
(i64.const 0)
) )
(i64.const 0)
) )
(get_local $5)
) )
(return (if
(f64.const 0) (get_local $2)
(return
(f64.const 0)
)
) )
) )
) )
) )
(set_local $2 (set_local $3
(i32.add (i32.add
(get_local $2) (get_local $3)
(i32.sub (i32.sub
(i32.shr_s (i32.shr_s
(tee_local $1 (tee_local $1
@ -144,56 +148,47 @@
) )
) )
) )
(set_local $6
(f64.mul
(f64.mul
(f64.const 0.5)
(tee_local $4
(f64.sub
(f64.reinterpret/i64
(i64.or
(i64.shl
(i64.extend_u/i32
(i32.add
(i32.and
(get_local $1)
(i32.const 1048575)
)
(i32.const 1072079006)
)
)
(i64.const 32)
)
(i64.and
(get_local $3)
(i64.const 4294967295)
)
)
)
(f64.const 1)
)
)
)
(get_local $4)
)
)
(set_local $0 (set_local $0
(f64.mul (f64.mul
(tee_local $8 (tee_local $7
(f64.mul (f64.mul
(tee_local $7 (tee_local $6
(f64.div (f64.div
(get_local $4) (tee_local $5
(f64.sub
(f64.reinterpret/i64
(i64.or
(i64.shl
(i64.extend_u/i32
(i32.add
(i32.and
(get_local $1)
(i32.const 1048575)
)
(i32.const 1072079006)
)
)
(i64.const 32)
)
(i64.and
(get_local $4)
(i64.const 4294967295)
)
)
)
(f64.const 1)
)
)
(f64.add (f64.add
(f64.const 2) (f64.const 2)
(get_local $4) (get_local $5)
) )
) )
) )
(get_local $7) (get_local $6)
) )
) )
(get_local $8) (get_local $7)
) )
) )
(f64.add (f64.add
@ -201,12 +196,20 @@
(f64.sub (f64.sub
(f64.add (f64.add
(f64.mul (f64.mul
(get_local $7) (get_local $6)
(f64.add (f64.add
(get_local $6) (tee_local $6
(f64.mul
(f64.mul
(f64.const 0.5)
(get_local $5)
)
(get_local $5)
)
)
(f64.add (f64.add
(f64.mul (f64.mul
(get_local $8) (get_local $7)
(f64.add (f64.add
(f64.const 0.6666666666666735) (f64.const 0.6666666666666735)
(f64.mul (f64.mul
@ -247,20 +250,20 @@
) )
) )
(f64.mul (f64.mul
(f64.convert_s/i32 (tee_local $0
(get_local $2) (f64.convert_s/i32
(get_local $3)
)
) )
(f64.const 1.9082149292705877e-10) (f64.const 1.9082149292705877e-10)
) )
) )
(get_local $6) (get_local $6)
) )
(get_local $4) (get_local $5)
) )
(f64.mul (f64.mul
(f64.convert_s/i32 (get_local $0)
(get_local $2)
)
(f64.const 0.6931471803691238) (f64.const 0.6931471803691238)
) )
) )
@ -286,17 +289,19 @@
(func $../../examples/mandelbrot/assembly/index/computeLine (; 3 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $../../examples/mandelbrot/assembly/index/computeLine (; 3 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 f64) (local $4 f64)
(local $5 f64) (local $5 f64)
(local $6 i32) (local $6 f64)
(local $7 f64) (local $7 f64)
(local $8 f64) (local $8 i32)
(local $9 f64) (local $9 f64)
(local $10 f64) (local $10 f64)
(local $11 f64) (local $11 f64)
(local $12 f64) (local $12 f64)
(set_local $11 (set_local $11
(f64.div (f64.div
(f64.convert_u/i32 (tee_local $6
(get_local $1) (f64.convert_u/i32
(get_local $1)
)
) )
(f64.const 1.6) (f64.const 1.6)
) )
@ -307,11 +312,15 @@
(f64.convert_u/i32 (f64.convert_u/i32
(get_local $0) (get_local $0)
) )
(f64.div (tee_local $7
(f64.convert_u/i32 (f64.div
(get_local $2) (tee_local $4
(f64.convert_u/i32
(get_local $2)
)
)
(f64.const 2)
) )
(f64.const 2)
) )
) )
(tee_local $12 (tee_local $12
@ -320,15 +329,11 @@
(f64.min (f64.min
(f64.mul (f64.mul
(f64.const 3) (f64.const 3)
(f64.convert_u/i32 (get_local $6)
(get_local $1)
)
) )
(f64.mul (f64.mul
(f64.const 4) (f64.const 4)
(f64.convert_u/i32 (get_local $4)
(get_local $2)
)
) )
) )
) )
@ -336,13 +341,10 @@
) )
) )
(block $break|0 (block $break|0
(set_local $2
(i32.const 0)
)
(loop $repeat|0 (loop $repeat|0
(br_if $break|0 (br_if $break|0
(i32.ge_u (i32.ge_u
(get_local $2) (get_local $8)
(get_local $1) (get_local $1)
) )
) )
@ -350,7 +352,7 @@
(f64.mul (f64.mul
(f64.sub (f64.sub
(f64.convert_u/i32 (f64.convert_u/i32
(get_local $2) (get_local $8)
) )
(get_local $11) (get_local $11)
) )
@ -363,7 +365,7 @@
(set_local $5 (set_local $5
(f64.const 0) (f64.const 0)
) )
(set_local $6 (set_local $2
(i32.const 0) (i32.const 0)
) )
(block $break|1 (block $break|1
@ -371,13 +373,13 @@
(if (if
(f64.le (f64.le
(f64.add (f64.add
(tee_local $7 (tee_local $6
(f64.mul (f64.mul
(get_local $4) (get_local $4)
(get_local $4) (get_local $4)
) )
) )
(tee_local $8 (tee_local $7
(f64.mul (f64.mul
(get_local $5) (get_local $5)
(get_local $5) (get_local $5)
@ -402,21 +404,21 @@
(set_local $4 (set_local $4
(f64.add (f64.add
(f64.sub (f64.sub
(get_local $6)
(get_local $7) (get_local $7)
(get_local $8)
) )
(get_local $10) (get_local $10)
) )
) )
(br_if $break|1 (br_if $break|1
(i32.ge_u (i32.ge_u
(get_local $6) (get_local $2)
(get_local $3) (get_local $3)
) )
) )
(set_local $6 (set_local $2
(i32.add (i32.add
(get_local $6) (get_local $2)
(i32.const 1) (i32.const 1)
) )
) )
@ -426,7 +428,7 @@
) )
) )
(block $break|2 (block $break|2
(set_local $7 (set_local $6
(f64.min (f64.min
(f64.const 8) (f64.const 8)
(f64.convert_u/i32 (f64.convert_u/i32
@ -439,13 +441,13 @@
(i32.eqz (i32.eqz
(f64.lt (f64.lt
(f64.convert_u/i32 (f64.convert_u/i32
(get_local $6) (get_local $2)
) )
(get_local $7) (get_local $6)
) )
) )
) )
(set_local $8 (set_local $7
(f64.add (f64.add
(f64.sub (f64.sub
(f64.mul (f64.mul
@ -473,11 +475,11 @@
) )
) )
(set_local $4 (set_local $4
(get_local $8) (get_local $7)
) )
(set_local $6 (set_local $2
(i32.add (i32.add
(get_local $6) (get_local $2)
(i32.const 1) (i32.const 1)
) )
) )
@ -491,63 +493,67 @@
(get_local $0) (get_local $0)
(get_local $1) (get_local $1)
) )
(get_local $2) (get_local $8)
) )
(i32.const 1) (i32.const 1)
) )
(if (result i32) (tee_local $2
(call $isFinite<f64> (if (result i32)
(tee_local $7 (call $isFinite<f64>
(f64.div (tee_local $6
(call $~lib/math/NativeMath.log
(call $~lib/math/NativeMath.log
(f64.sqrt
(f64.add
(f64.mul
(get_local $4)
(get_local $4)
)
(f64.mul
(get_local $5)
(get_local $5)
)
)
)
)
)
(f64.const 0.6931471805599453)
)
)
)
(i32.trunc_u/f64
(f64.mul
(f64.const 2047)
(call $../../examples/mandelbrot/assembly/index/clamp<f64>
(f64.div (f64.div
(f64.sub (call $~lib/math/NativeMath.log
(f64.convert_u/i32 (call $~lib/math/NativeMath.log
(i32.add (tee_local $7
(get_local $6) (f64.sqrt
(i32.const 1) (f64.add
(f64.mul
(get_local $4)
(get_local $4)
)
(f64.mul
(get_local $5)
(get_local $5)
)
)
)
) )
) )
(get_local $7)
)
(f64.convert_u/i32
(get_local $3)
) )
(f64.const 0.6931471805599453)
) )
(f64.const 0)
(f64.const 1)
) )
) )
(i32.trunc_u/f64
(f64.mul
(f64.const 2047)
(call $../../examples/mandelbrot/assembly/index/clamp<f64>
(f64.div
(f64.sub
(f64.convert_u/i32
(i32.add
(get_local $2)
(i32.const 1)
)
)
(get_local $6)
)
(f64.convert_u/i32
(get_local $3)
)
)
(f64.const 0)
(f64.const 1)
)
)
)
(i32.const 2047)
) )
(i32.const 2047)
) )
) )
(set_local $2 (set_local $8
(i32.add (i32.add
(get_local $2) (get_local $8)
(i32.const 1) (i32.const 1)
) )
) )

File diff suppressed because it is too large Load Diff

View File

@ -11,6 +11,7 @@
(func $memmove/memmove (; 1 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $memmove/memmove (; 1 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32)
(set_local $4 (set_local $4
(get_local $0) (get_local $0)
) )
@ -65,25 +66,25 @@
(set_local $0 (set_local $0
(i32.add (i32.add
(tee_local $3 (tee_local $3
(get_local $0) (tee_local $5
(get_local $0)
)
)
(i32.const 1)
)
)
(set_local $1
(i32.add
(tee_local $3
(get_local $1)
) )
(i32.const 1) (i32.const 1)
) )
) )
(i32.store8 (i32.store8
(get_local $3) (get_local $5)
(block (result i32) (i32.load8_u
(set_local $1 (get_local $3)
(i32.add
(tee_local $3
(get_local $1)
)
(i32.const 1)
)
)
(i32.load8_u
(get_local $3)
)
) )
) )
(br $continue|0) (br $continue|0)
@ -134,25 +135,25 @@
(set_local $0 (set_local $0
(i32.add (i32.add
(tee_local $3 (tee_local $3
(get_local $0) (tee_local $5
(get_local $0)
)
)
(i32.const 1)
)
)
(set_local $1
(i32.add
(tee_local $3
(get_local $1)
) )
(i32.const 1) (i32.const 1)
) )
) )
(i32.store8 (i32.store8
(get_local $3) (get_local $5)
(block (result i32) (i32.load8_u
(set_local $1 (get_local $3)
(i32.add
(tee_local $3
(get_local $1)
)
(i32.const 1)
)
)
(i32.load8_u
(get_local $3)
)
) )
) )
(set_local $2 (set_local $2

View File

@ -11,8 +11,8 @@
(start $start) (start $start)
(func $memset/memset (; 1 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $memset/memset (; 1 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i64) (local $4 i32)
(local $5 i32) (local $5 i64)
(block $folding-inner0 (block $folding-inner0
(set_local $3 (set_local $3
(get_local $0) (get_local $0)
@ -23,13 +23,13 @@
) )
) )
(i32.store8 (i32.store8
(get_local $0) (get_local $3)
(get_local $1) (get_local $1)
) )
(i32.store8 (i32.store8
(i32.sub (i32.sub
(i32.add (i32.add
(get_local $0) (get_local $3)
(get_local $2) (get_local $2)
) )
(i32.const 1) (i32.const 1)
@ -44,34 +44,33 @@
) )
(i32.store8 (i32.store8
(i32.add (i32.add
(get_local $0) (get_local $3)
(i32.const 1) (i32.const 1)
) )
(get_local $1) (get_local $1)
) )
(i32.store8 (i32.store8
(i32.add (i32.add
(get_local $3)
(i32.const 2)
)
(get_local $1)
)
(i32.store8
(i32.sub
(tee_local $0
(i32.add
(get_local $3)
(get_local $2)
)
)
(i32.const 2)
)
(get_local $1)
)
(i32.store8
(i32.sub
(get_local $0) (get_local $0)
(i32.const 2)
)
(get_local $1)
)
(i32.store8
(i32.sub
(i32.add
(get_local $0)
(get_local $2)
)
(i32.const 2)
)
(get_local $1)
)
(i32.store8
(i32.sub
(i32.add
(get_local $0)
(get_local $2)
)
(i32.const 3) (i32.const 3)
) )
(get_local $1) (get_local $1)
@ -84,7 +83,7 @@
) )
(i32.store8 (i32.store8
(i32.add (i32.add
(get_local $0) (get_local $3)
(i32.const 3) (i32.const 3)
) )
(get_local $1) (get_local $1)
@ -92,7 +91,7 @@
(i32.store8 (i32.store8
(i32.sub (i32.sub
(i32.add (i32.add
(get_local $0) (get_local $3)
(get_local $2) (get_local $2)
) )
(i32.const 4) (i32.const 4)
@ -105,19 +104,25 @@
(i32.const 8) (i32.const 8)
) )
) )
(set_local $2
(i32.sub
(get_local $2)
(tee_local $4
(i32.and
(i32.sub
(i32.const 0)
(get_local $3)
)
(i32.const 3)
)
)
)
)
(i32.store (i32.store
(tee_local $0 (tee_local $0
(i32.add (i32.add
(get_local $0) (get_local $3)
(tee_local $5 (get_local $4)
(i32.and
(i32.sub
(i32.const 0)
(get_local $0)
)
(i32.const 3)
)
)
) )
) )
(tee_local $1 (tee_local $1
@ -136,10 +141,7 @@
(get_local $0) (get_local $0)
(tee_local $2 (tee_local $2
(i32.and (i32.and
(i32.sub (get_local $2)
(get_local $2)
(get_local $5)
)
(i32.const -4) (i32.const -4)
) )
) )
@ -170,9 +172,11 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (tee_local $4
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 12) (i32.const 12)
) )
@ -180,10 +184,7 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $4)
(get_local $0)
(get_local $2)
)
(i32.const 8) (i32.const 8)
) )
(get_local $1) (get_local $1)
@ -224,9 +225,11 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (tee_local $4
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 28) (i32.const 28)
) )
@ -234,30 +237,21 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $4)
(get_local $0)
(get_local $2)
)
(i32.const 24) (i32.const 24)
) )
(get_local $1) (get_local $1)
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $4)
(get_local $0)
(get_local $2)
)
(i32.const 20) (i32.const 20)
) )
(get_local $1) (get_local $1)
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $4)
(get_local $0)
(get_local $2)
)
(i32.const 16) (i32.const 16)
) )
(get_local $1) (get_local $1)
@ -265,7 +259,7 @@
(set_local $0 (set_local $0
(i32.add (i32.add
(get_local $0) (get_local $0)
(tee_local $5 (tee_local $4
(i32.add (i32.add
(i32.and (i32.and
(get_local $0) (get_local $0)
@ -279,18 +273,18 @@
(set_local $2 (set_local $2
(i32.sub (i32.sub
(get_local $2) (get_local $2)
(get_local $5) (get_local $4)
) )
) )
(set_local $4 (set_local $5
(i64.or (i64.or
(i64.extend_u/i32 (tee_local $5
(get_local $1)
)
(i64.shl
(i64.extend_u/i32 (i64.extend_u/i32
(get_local $1) (get_local $1)
) )
)
(i64.shl
(get_local $5)
(i64.const 32) (i64.const 32)
) )
) )
@ -304,28 +298,28 @@
(block (block
(i64.store (i64.store
(get_local $0) (get_local $0)
(get_local $4) (get_local $5)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 8) (i32.const 8)
) )
(get_local $4) (get_local $5)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 16) (i32.const 16)
) )
(get_local $4) (get_local $5)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 24) (i32.const 24)
) )
(get_local $4) (get_local $5)
) )
(set_local $2 (set_local $2
(i32.sub (i32.sub

View File

@ -1,815 +1,5 @@
(module (module
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\0b\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") (data (i32.const 8) "\0b\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s")
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start)
(func $start (; 1 ;) (type $v)
(local $0 i32)
(local $1 i32)
(if
(i32.ne
(tee_local $0
(i32.const 128)
)
(i32.const 128)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 10)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 127)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 13)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.add
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.ne
(i32.and
(get_local $0)
(i32.const 255)
)
(i32.const 128)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 16)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.sub
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.ne
(i32.and
(get_local $0)
(i32.const 255)
)
(i32.const 127)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 19)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 128)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 22)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 127)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 25)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 128)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 28)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 127)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 31)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(i32.add
(get_local $0)
(i32.const 1)
)
(i32.const 255)
)
(i32.const 128)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 33)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(tee_local $0
(i32.const 32768)
)
(i32.const 32768)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 42)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 32767)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 45)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.add
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.ne
(i32.and
(get_local $0)
(i32.const 65535)
)
(i32.const 32768)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 48)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.sub
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.ne
(i32.and
(get_local $0)
(i32.const 65535)
)
(i32.const 32767)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 51)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 32768)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 54)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 32767)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 57)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 32768)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 60)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 32767)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 63)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(i32.add
(get_local $0)
(i32.const 1)
)
(i32.const 65535)
)
(i32.const 32768)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 65)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.const -1)
)
(i32.const 255)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 74)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 77)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.sub
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.ne
(i32.and
(get_local $0)
(i32.const 255)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 80)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.add
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.and
(get_local $0)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 83)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 86)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 89)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 92)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 95)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(i32.sub
(get_local $0)
(i32.const 1)
)
(i32.const 255)
)
(i32.const 255)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 97)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.const -1)
)
(i32.const 65535)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 106)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 109)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.sub
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.ne
(i32.and
(get_local $0)
(i32.const 65535)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 112)
(i32.const 2)
)
(unreachable)
)
)
(set_local $0
(i32.add
(tee_local $1
(get_local $0)
)
(i32.const 1)
)
)
(if
(i32.and
(get_local $0)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 115)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 118)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 121)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(tee_local $0
(i32.sub
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 124)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.and
(tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 127)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(i32.and
(i32.sub
(get_local $0)
(i32.const 1)
)
(i32.const 65535)
)
(i32.const 65535)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 129)
(i32.const 2)
)
(unreachable)
)
)
)
) )

File diff suppressed because it is too large Load Diff

View File

@ -14,31 +14,32 @@
(export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall))
(export "memory" (memory $0)) (export "memory" (memory $0))
(func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (tee_local $0
(if (result i32) (if (result i32)
(i32.lt_u (i32.lt_u
(get_local $1) (get_local $1)
(i32.shr_u (i32.shr_u
(i32.load (i32.load
(tee_local $2 (tee_local $0
(i32.load (i32.load
(get_local $0) (get_local $0)
)
) )
) )
)
(i32.const 2)
)
)
(i32.load offset=8
(i32.add
(get_local $2)
(i32.shl
(get_local $1)
(i32.const 2) (i32.const 2)
) )
) )
(i32.load offset=8
(i32.add
(get_local $0)
(i32.shl
(get_local $1)
(i32.const 2)
)
)
)
(unreachable)
) )
(unreachable)
) )
) )
(func $std/array-access/i32ArrayArrayElementAccess (; 2 ;) (type $ii) (param $0 i32) (result i32) (func $std/array-access/i32ArrayArrayElementAccess (; 2 ;) (type $ii) (param $0 i32) (result i32)
@ -105,23 +106,24 @@
) )
) )
) )
(if (result i32) (tee_local $0
(get_local $2) (if (result i32)
(i32.sub (get_local $2)
(i32.load8_u (i32.sub
(get_local $0) (i32.load8_u
) (get_local $0)
(i32.load8_u )
(get_local $1) (i32.load8_u
(get_local $1)
)
) )
(i32.const 0)
) )
(i32.const 0)
) )
) )
(func $~lib/string/String#startsWith (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#startsWith (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32)
(if (if
(i32.eqz (i32.eqz
(get_local $0) (get_local $0)
@ -152,33 +154,31 @@
(get_local $1) (get_local $1)
) )
) )
(tee_local $2 (tee_local $3
(select (select
(tee_local $2 (tee_local $3
(select (select
(get_local $2) (get_local $2)
(i32.const 0) (i32.const 0)
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $3) (i32.const 0)
) )
) )
) )
(tee_local $3 (tee_local $2
(tee_local $5 (i32.load
(i32.load (get_local $0)
(get_local $0)
)
) )
) )
(i32.lt_s (i32.lt_s
(get_local $2)
(get_local $3) (get_local $3)
(get_local $2)
) )
) )
) )
) )
(get_local $5) (get_local $2)
) )
(return (return
(i32.const 0) (i32.const 0)
@ -192,7 +192,7 @@
(i32.const 4) (i32.const 4)
) )
(i32.shl (i32.shl
(get_local $2) (get_local $3)
(i32.const 1) (i32.const 1)
) )
) )

View File

@ -25,31 +25,32 @@
) )
) )
(func $~lib/array/Array<i32>#__get (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i32>#__get (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (tee_local $0
(if (result i32) (if (result i32)
(i32.lt_u (i32.lt_u
(get_local $1) (get_local $1)
(i32.shr_u (i32.shr_u
(i32.load (i32.load
(tee_local $2 (tee_local $0
(i32.load (i32.load
(get_local $0) (get_local $0)
)
) )
) )
)
(i32.const 2)
)
)
(i32.load offset=8
(i32.add
(get_local $2)
(i32.shl
(get_local $1)
(i32.const 2) (i32.const 2)
) )
) )
(i32.load offset=8
(i32.add
(get_local $0)
(i32.shl
(get_local $1)
(i32.const 2)
)
)
)
(unreachable)
) )
(unreachable)
) )
) )
(func $~lib/internal/arraybuffer/computeSize (; 3 ;) (type $ii) (param $0 i32) (result i32) (func $~lib/internal/arraybuffer/computeSize (; 3 ;) (type $ii) (param $0 i32) (result i32)
@ -70,7 +71,6 @@
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32)
(if (if
(get_local $0) (get_local $0)
(block (block
@ -109,26 +109,24 @@
(grow_memory (grow_memory
(select (select
(get_local $2) (get_local $2)
(tee_local $4 (tee_local $3
(tee_local $3 (i32.shr_u
(i32.shr_u (i32.and
(i32.and (i32.add
(i32.add (i32.sub
(i32.sub (get_local $0)
(get_local $0) (get_local $1)
(get_local $1)
)
(i32.const 65535)
) )
(i32.const -65536) (i32.const 65535)
) )
(i32.const 16) (i32.const -65536)
) )
(i32.const 16)
) )
) )
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
) )
@ -185,8 +183,8 @@
(get_local $1) (get_local $1)
) )
(func $~lib/memory/set_memory (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/set_memory (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i64) (local $3 i32)
(local $4 i32) (local $4 i64)
(if (if
(i32.eqz (i32.eqz
(get_local $2) (get_local $2)
@ -230,9 +228,11 @@
) )
(i32.store8 (i32.store8
(i32.sub (i32.sub
(i32.add (tee_local $3
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 2) (i32.const 2)
) )
@ -240,10 +240,7 @@
) )
(i32.store8 (i32.store8
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 3) (i32.const 3)
) )
(get_local $1) (get_local $1)
@ -279,19 +276,25 @@
) )
(return) (return)
) )
(set_local $2
(i32.sub
(get_local $2)
(tee_local $3
(i32.and
(i32.sub
(i32.const 0)
(get_local $0)
)
(i32.const 3)
)
)
)
)
(i32.store (i32.store
(tee_local $0 (tee_local $0
(i32.add (i32.add
(get_local $0) (get_local $0)
(tee_local $4 (get_local $3)
(i32.and
(i32.sub
(i32.const 0)
(get_local $0)
)
(i32.const 3)
)
)
) )
) )
(tee_local $1 (tee_local $1
@ -310,10 +313,7 @@
(get_local $0) (get_local $0)
(tee_local $2 (tee_local $2
(i32.and (i32.and
(i32.sub (get_local $2)
(get_local $2)
(get_local $4)
)
(i32.const -4) (i32.const -4)
) )
) )
@ -345,9 +345,11 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (tee_local $3
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 12) (i32.const 12)
) )
@ -355,10 +357,7 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 8) (i32.const 8)
) )
(get_local $1) (get_local $1)
@ -400,9 +399,11 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (tee_local $3
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 28) (i32.const 28)
) )
@ -410,30 +411,21 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 24) (i32.const 24)
) )
(get_local $1) (get_local $1)
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 20) (i32.const 20)
) )
(get_local $1) (get_local $1)
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 16) (i32.const 16)
) )
(get_local $1) (get_local $1)
@ -441,7 +433,7 @@
(set_local $0 (set_local $0
(i32.add (i32.add
(get_local $0) (get_local $0)
(tee_local $4 (tee_local $3
(i32.add (i32.add
(i32.and (i32.and
(get_local $0) (get_local $0)
@ -455,18 +447,18 @@
(set_local $2 (set_local $2
(i32.sub (i32.sub
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
(set_local $3 (set_local $4
(i64.or (i64.or
(i64.extend_u/i32 (tee_local $4
(get_local $1)
)
(i64.shl
(i64.extend_u/i32 (i64.extend_u/i32
(get_local $1) (get_local $1)
) )
)
(i64.shl
(get_local $4)
(i64.const 32) (i64.const 32)
) )
) )
@ -480,28 +472,28 @@
(block (block
(i64.store (i64.store
(get_local $0) (get_local $0)
(get_local $3) (get_local $4)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 8) (i32.const 8)
) )
(get_local $3) (get_local $4)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 16) (i32.const 16)
) )
(get_local $3) (get_local $4)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 24) (i32.const 24)
) )
(get_local $3) (get_local $4)
) )
(set_local $2 (set_local $2
(i32.sub (i32.sub
@ -548,26 +540,27 @@
) )
) )
) )
(i32.store (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (block
(i32.store (i32.store
(tee_local $0 (tee_local $0
(call $~lib/allocator/arena/allocate_memory (call $~lib/allocator/arena/allocate_memory
(i32.const 8) (i32.const 8)
)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0)
(i32.const 0)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0) (get_local $0)
(i32.const 0)
) )
) )
)
(i32.store
(get_local $0)
(get_local $2) (get_local $2)
) )
(i32.store offset=4 (i32.store offset=4
@ -700,46 +693,40 @@
(unreachable) (unreachable)
) )
) )
(set_global $std/array-literal/dynamicArray (call $~lib/array/Array<i32>#__unchecked_set
(block (result i32) (tee_local $0
(call $~lib/array/Array<i32>#__unchecked_set (call $~lib/array/Array<i32>#constructor
(tee_local $0
(call $~lib/array/Array<i32>#constructor
(i32.const 0)
(i32.const 3)
)
)
(i32.const 0) (i32.const 0)
(get_global $std/array-literal/i) (i32.const 3)
) )
(call $~lib/array/Array<i32>#__unchecked_set
(get_local $0)
(i32.const 1)
(block (result i32)
(set_global $std/array-literal/i
(i32.add
(get_global $std/array-literal/i)
(i32.const 1)
)
)
(get_global $std/array-literal/i)
)
)
(call $~lib/array/Array<i32>#__unchecked_set
(get_local $0)
(i32.const 2)
(block (result i32)
(set_global $std/array-literal/i
(i32.add
(get_global $std/array-literal/i)
(i32.const 1)
)
)
(get_global $std/array-literal/i)
)
)
(get_local $0)
) )
(i32.const 0)
(get_global $std/array-literal/i)
)
(set_global $std/array-literal/i
(i32.add
(get_global $std/array-literal/i)
(i32.const 1)
)
)
(call $~lib/array/Array<i32>#__unchecked_set
(get_local $0)
(i32.const 1)
(get_global $std/array-literal/i)
)
(set_global $std/array-literal/i
(i32.add
(get_global $std/array-literal/i)
(i32.const 1)
)
)
(call $~lib/array/Array<i32>#__unchecked_set
(get_local $0)
(i32.const 2)
(get_global $std/array-literal/i)
)
(set_global $std/array-literal/dynamicArray
(get_local $0)
) )
(if (if
(i32.ne (i32.ne

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,6 @@
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32)
(if (if
(get_local $0) (get_local $0)
(block (block
@ -61,26 +60,24 @@
(grow_memory (grow_memory
(select (select
(get_local $2) (get_local $2)
(tee_local $4 (tee_local $3
(tee_local $3 (i32.shr_u
(i32.shr_u (i32.and
(i32.and (i32.add
(i32.add (i32.sub
(i32.sub (get_local $0)
(get_local $0) (get_local $1)
(get_local $1)
)
(i32.const 65535)
) )
(i32.const -65536) (i32.const 65535)
) )
(i32.const 16) (i32.const -65536)
) )
(i32.const 16)
) )
) )
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
) )
@ -117,40 +114,36 @@
) )
) )
(func $std/constructor/EmptyCtorWithFieldInit#constructor (; 2 ;) (type $ii) (param $0 i32) (result i32) (func $std/constructor/EmptyCtorWithFieldInit#constructor (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32) (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (i32.store
(i32.store (tee_local $0
(tee_local $1 (call $~lib/allocator/arena/allocate_memory
(call $~lib/allocator/arena/allocate_memory (i32.const 4)
(i32.const 4)
)
) )
(i32.const 1)
) )
(get_local $1) (i32.const 1)
) )
) )
(get_local $0)
) )
(func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 3 ;) (type $ii) (param $0 i32) (result i32) (func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32) (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (i32.store
(i32.store (tee_local $0
(tee_local $1 (call $~lib/allocator/arena/allocate_memory
(call $~lib/allocator/arena/allocate_memory (i32.const 4)
(i32.const 4)
)
) )
(i32.const 0)
) )
(get_local $1) (i32.const 0)
) )
) )
(get_local $0)
) )
(func $std/constructor/CtorReturns#constructor (; 4 ;) (type $ii) (param $0 i32) (result i32) (func $std/constructor/CtorReturns#constructor (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/allocate_memory (call $~lib/allocator/arena/allocate_memory
@ -188,13 +181,17 @@
) )
) )
) )
(if (result i32) (if
(get_local $0) (i32.eqz
(get_local $0) (get_local $0)
(call $~lib/allocator/arena/allocate_memory )
(i32.const 0) (set_local $0
(call $~lib/allocator/arena/allocate_memory
(i32.const 0)
)
) )
) )
(get_local $0)
) )
(func $start (; 7 ;) (type $v) (func $start (; 7 ;) (type $v)
(local $0 i32) (local $0 i32)
@ -230,31 +227,27 @@
(i32.const 0) (i32.const 0)
) )
) )
(set_global $std/constructor/justFieldInit (i32.store
(block (result i32) (tee_local $0
(i32.store (call $~lib/allocator/arena/allocate_memory
(tee_local $0 (i32.const 4)
(call $~lib/allocator/arena/allocate_memory
(i32.const 4)
)
)
(i32.const 1)
) )
(get_local $0)
) )
(i32.const 1)
)
(set_global $std/constructor/justFieldInit
(get_local $0)
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(i32.const 4)
)
)
(i32.const 0)
) )
(set_global $std/constructor/justFieldNoInit (set_global $std/constructor/justFieldNoInit
(block (result i32) (get_local $0)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(i32.const 4)
)
)
(i32.const 0)
)
(get_local $0)
)
) )
(set_global $std/constructor/ctorReturns (set_global $std/constructor/ctorReturns
(call $std/constructor/CtorReturns#constructor (call $std/constructor/CtorReturns#constructor

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -28,6 +28,7 @@
(local $5 i64) (local $5 i64)
(local $6 i32) (local $6 i32)
(local $7 i32) (local $7 i32)
(local $8 i32)
(block $folding-inner0 (block $folding-inner0
(set_local $3 (set_local $3
(i32.wrap/i64 (i32.wrap/i64
@ -59,41 +60,54 @@
) )
) )
) )
(set_local $8
(i32.wrap/i64
(i64.shr_u
(get_local $2)
(i64.const 63)
)
)
)
(if (if
(if (result i32) (i32.eqz
(if (result i32) (tee_local $7
(tee_local $7 (i64.eq
(i64.eq (i64.shl
(i64.shl (get_local $5)
(get_local $5) (i64.const 1)
(i64.const 1)
)
(i64.const 0)
)
)
(get_local $7)
(tee_local $7
(call $isNaN<f64>
(get_local $1)
) )
(i64.const 0)
) )
) )
)
(set_local $7
(call $isNaN<f64>
(get_local $1)
)
)
)
(if
(i32.eqz
(get_local $7) (get_local $7)
)
(set_local $7
(i32.eq (i32.eq
(get_local $3) (get_local $3)
(i32.const 2047) (i32.const 2047)
) )
) )
)
(if
(get_local $7)
(return (return
(f64.div (f64.div
(f64.mul (tee_local $0
(get_local $0) (f64.mul
(get_local $1) (get_local $0)
) (get_local $1)
(f64.mul )
(get_local $0)
(get_local $1)
) )
(get_local $0)
) )
) )
) )
@ -126,14 +140,6 @@
) )
) )
) )
(set_local $7
(i32.wrap/i64
(i64.shr_u
(get_local $2)
(i64.const 63)
)
)
)
(set_local $2 (set_local $2
(if (result i64) (if (result i64)
(get_local $3) (get_local $3)
@ -346,7 +352,11 @@
(f64.reinterpret/i64 (f64.reinterpret/i64
(i64.or (i64.or
(tee_local $2 (tee_local $2
(select (if (result i64)
(i32.gt_s
(get_local $3)
(i32.const 0)
)
(i64.or (i64.or
(i64.sub (i64.sub
(get_local $2) (get_local $2)
@ -368,15 +378,11 @@
) )
) )
) )
(i32.gt_s
(get_local $3)
(i32.const 0)
)
) )
) )
(i64.shl (i64.shl
(i64.extend_u/i32 (i64.extend_u/i32
(get_local $7) (get_local $8)
) )
(i64.const 63) (i64.const 63)
) )
@ -425,7 +431,7 @@
) )
(func $std/mod/test_fmod (; 5 ;) (type $FFFi) (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (func $std/mod/test_fmod (; 5 ;) (type $FFFi) (param $0 f64) (param $1 f64) (param $2 f64) (result i32)
(local $3 i32) (local $3 i32)
(if (result i32) (if
(tee_local $3 (tee_local $3
(call $std/mod/check<f64> (call $std/mod/check<f64>
(call $~lib/math/NativeMath.mod (call $~lib/math/NativeMath.mod
@ -435,21 +441,19 @@
(get_local $2) (get_local $2)
) )
) )
(if (result i32) (set_local $3
(tee_local $3
(i32.const 0)
)
(get_local $3)
(call $std/mod/check<f64> (call $std/mod/check<f64>
(call $std/mod/JSOp.mod (tee_local $0
(get_local $0) (call $std/mod/JSOp.mod
(get_local $1) (get_local $0)
(get_local $1)
)
) )
(get_local $2) (get_local $2)
) )
) )
(get_local $3)
) )
(get_local $3)
) )
(func $isNaN<f32> (; 6 ;) (type $fi) (param $0 f32) (result i32) (func $isNaN<f32> (; 6 ;) (type $fi) (param $0 f32) (result i32)
(f32.ne (f32.ne
@ -491,40 +495,51 @@
(i32.const 255) (i32.const 255)
) )
) )
(set_local $7
(i32.and
(get_local $2)
(i32.const -2147483648)
)
)
(if (if
(if (result i32) (i32.eqz
(if (result i32) (tee_local $3
(tee_local $3 (i32.eqz
(i32.eqz (i32.shl
(i32.shl (get_local $5)
(get_local $5) (i32.const 1)
(i32.const 1)
)
)
)
(get_local $3)
(tee_local $3
(call $isNaN<f32>
(get_local $1)
) )
) )
) )
)
(set_local $3
(call $isNaN<f32>
(get_local $1)
)
)
)
(if
(i32.eqz
(get_local $3) (get_local $3)
)
(set_local $3
(i32.eq (i32.eq
(get_local $4) (get_local $4)
(i32.const 255) (i32.const 255)
) )
) )
)
(if
(get_local $3)
(return (return
(f32.div (f32.div
(f32.mul (tee_local $0
(get_local $0) (f32.mul
(get_local $1) (get_local $0)
) (get_local $1)
(f32.mul )
(get_local $0)
(get_local $1)
) )
(get_local $0)
) )
) )
) )
@ -557,12 +572,6 @@
) )
) )
) )
(set_local $7
(i32.and
(get_local $2)
(i32.const -2147483648)
)
)
(set_local $2 (set_local $2
(if (result i32) (if (result i32)
(get_local $4) (get_local $4)
@ -759,7 +768,11 @@
(f32.reinterpret/i32 (f32.reinterpret/i32
(i32.or (i32.or
(tee_local $2 (tee_local $2
(select (if (result i32)
(i32.gt_s
(get_local $4)
(i32.const 0)
)
(i32.or (i32.or
(i32.sub (i32.sub
(get_local $2) (get_local $2)
@ -777,10 +790,6 @@
(get_local $4) (get_local $4)
) )
) )
(i32.gt_s
(get_local $4)
(i32.const 0)
)
) )
) )
(get_local $7) (get_local $7)

View File

@ -13,7 +13,6 @@
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32)
(if (if
(get_local $0) (get_local $0)
(block (block
@ -52,26 +51,24 @@
(grow_memory (grow_memory
(select (select
(get_local $2) (get_local $2)
(tee_local $4 (tee_local $3
(tee_local $3 (i32.shr_u
(i32.shr_u (i32.and
(i32.and (i32.add
(i32.add (i32.sub
(i32.sub (get_local $0)
(get_local $0) (get_local $1)
(get_local $1)
)
(i32.const 65535)
) )
(i32.const -65536) (i32.const 65535)
) )
(i32.const 16) (i32.const -65536)
) )
(i32.const 16)
) )
) )
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
) )
@ -100,31 +97,32 @@
) )
(func $std/new/AClass#constructor (; 1 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32) (func $std/new/AClass#constructor (; 1 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(local $2 i32) (local $2 i32)
(i32.store (if
(get_local $0) (i32.eqz
(i32.add (tee_local $2
(i32.load (get_local $0)
(if (result i32) )
(get_local $0) )
(get_local $0) (block
(block (result i32) (i32.store
(i32.store (tee_local $0
(tee_local $2 (call $~lib/allocator/arena/allocate_memory
(call $~lib/allocator/arena/allocate_memory (i32.const 8)
(i32.const 8)
)
)
(i32.const 1)
)
(f32.store offset=4
(get_local $2)
(f32.const 2)
)
(tee_local $0
(get_local $2)
)
) )
) )
(i32.const 1)
)
(f32.store offset=4
(get_local $0)
(f32.const 2)
)
)
)
(i32.store
(get_local $2)
(i32.add
(i32.load
(get_local $0)
) )
(i32.const 1) (i32.const 1)
) )

File diff suppressed because it is too large Load Diff

View File

@ -13,14 +13,18 @@
(local $1 i32) (local $1 i32)
(if (if
(i32.eqz (i32.eqz
(if (result i32) (tee_local $1
(tee_local $1 (i32.const 1)
(i32.const 1)
)
(get_local $1)
(i32.const 0)
) )
) )
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(block (block
(call $~lib/env/abort (call $~lib/env/abort
(i32.const 0) (i32.const 0)
@ -32,12 +36,8 @@
) )
) )
(if (if
(if (result i32) (tee_local $1
(tee_local $1 (i32.const 1)
(i32.const 1)
)
(get_local $1)
(i32.const 0)
) )
(return (return
(i32.or (i32.or
@ -70,20 +70,26 @@
(local $1 i32) (local $1 i32)
(if (if
(i32.eqz (i32.eqz
(if (result i32) (tee_local $1
(if (result i32) (i32.const 1)
(tee_local $1
(i32.const 1)
)
(get_local $1)
(tee_local $1
(i32.const 0)
)
)
(get_local $1)
(i32.const 0)
) )
) )
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(block (block
(call $~lib/env/abort (call $~lib/env/abort
(i32.const 0) (i32.const 0)
@ -102,14 +108,18 @@
(local $1 i32) (local $1 i32)
(if (if
(i32.eqz (i32.eqz
(if (result i32) (tee_local $1
(tee_local $1 (i32.const 1)
(i32.const 1)
)
(get_local $1)
(i32.const 0)
) )
) )
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(block (block
(call $~lib/env/abort (call $~lib/env/abort
(i32.const 0) (i32.const 0)
@ -121,12 +131,8 @@
) )
) )
(if (if
(if (result i32) (tee_local $1
(tee_local $1 (i32.const 1)
(i32.const 1)
)
(get_local $1)
(i32.const 0)
) )
(return (return
(i32.or (i32.or
@ -162,20 +168,26 @@
(local $1 i32) (local $1 i32)
(if (if
(i32.eqz (i32.eqz
(if (result i32) (tee_local $1
(if (result i32) (i32.const 1)
(tee_local $1
(i32.const 1)
)
(get_local $1)
(tee_local $1
(i32.const 0)
)
)
(get_local $1)
(i32.const 0)
) )
) )
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(block (block
(call $~lib/env/abort (call $~lib/env/abort
(i32.const 0) (i32.const 0)
@ -194,14 +206,18 @@
(local $1 i32) (local $1 i32)
(if (if
(i32.eqz (i32.eqz
(if (result i32) (tee_local $1
(tee_local $1 (i32.const 1)
(i32.const 1)
)
(get_local $1)
(i32.const 0)
) )
) )
(set_local $1
(i32.const 0)
)
)
(if
(i32.eqz
(get_local $1)
)
(block (block
(call $~lib/env/abort (call $~lib/env/abort
(i32.const 0) (i32.const 0)
@ -230,21 +246,6 @@
) )
) )
(func $~lib/polyfills/bswap<u64> (; 6 ;) (type $II) (param $0 i64) (result i64) (func $~lib/polyfills/bswap<u64> (; 6 ;) (type $II) (param $0 i64) (result i64)
(local $1 i32)
(if
(i32.eqz
(i32.const 1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 2)
(i32.const 2)
)
(unreachable)
)
)
(i64.rotr (i64.rotr
(i64.or (i64.or
(i64.and (i64.and
@ -283,85 +284,51 @@
) )
) )
(func $~lib/polyfills/bswap16<u32> (; 7 ;) (type $ii) (param $0 i32) (result i32) (func $~lib/polyfills/bswap16<u32> (; 7 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32) (i32.or
(if
(i32.eqz
(i32.const 1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 27)
(i32.const 2)
)
(unreachable)
)
)
(return
(i32.or (i32.or
(i32.or (i32.and
(i32.and (i32.shl
(i32.shl (get_local $0)
(get_local $0) (i32.const 8)
(i32.const 8)
)
(i32.const 65280)
)
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 8)
)
(i32.const 255)
) )
(i32.const 65280)
) )
(i32.and (i32.and
(get_local $0) (i32.shr_u
(i32.const -65536) (get_local $0)
(i32.const 8)
)
(i32.const 255)
) )
) )
(i32.and
(get_local $0)
(i32.const -65536)
)
) )
) )
(func $~lib/polyfills/bswap16<i32> (; 8 ;) (type $ii) (param $0 i32) (result i32) (func $~lib/polyfills/bswap16<i32> (; 8 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32) (i32.or
(if
(i32.eqz
(i32.const 1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 27)
(i32.const 2)
)
(unreachable)
)
)
(return
(i32.or (i32.or
(i32.or (i32.and
(i32.and (i32.shl
(i32.shl (get_local $0)
(get_local $0) (i32.const 8)
(i32.const 8)
)
(i32.const 65280)
)
(i32.and
(i32.shr_s
(get_local $0)
(i32.const 8)
)
(i32.const 255)
) )
(i32.const 65280)
) )
(i32.and (i32.and
(get_local $0) (i32.shr_s
(i32.const -65536) (get_local $0)
(i32.const 8)
)
(i32.const 255)
) )
) )
(i32.and
(get_local $0)
(i32.const -65536)
)
) )
) )
(func $start (; 9 ;) (type $v) (func $start (; 9 ;) (type $v)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -80,71 +80,75 @@
(i32.const 1) (i32.const 1)
) )
) )
(if (result i32) (block (result i32)
(if (result i32) (if
(if (result i32) (tee_local $3
(tee_local $3 (i32.eq
(i32.eq (i32.and
(i32.and (get_local $3)
(get_local $3) (i32.const 64512)
(i32.const 64512)
)
(i32.const 55296)
) )
(i32.const 55296)
) )
(tee_local $3
(i32.lt_u
(i32.add
(get_local $2)
(i32.const 1)
)
(get_local $4)
)
)
(get_local $3)
) )
(i32.eq (set_local $3
(i32.and (i32.lt_u
(i32.load16_u offset=4 (i32.add
(i32.add (get_local $2)
(get_local $0) (i32.const 1)
(i32.shl )
(i32.add (get_local $4)
(get_local $2) )
)
)
(if
(get_local $3)
(set_local $3
(i32.eq
(i32.and
(i32.load16_u offset=4
(i32.add
(get_local $0)
(i32.shl
(i32.add
(get_local $2)
(i32.const 1)
)
(i32.const 1) (i32.const 1)
) )
(i32.const 1)
) )
) )
(i32.const 64512)
) )
(i32.const 64512) (i32.const 56320)
) )
(i32.const 56320)
) )
)
(if (result i32)
(get_local $3) (get_local $3)
) (block (result i32)
(block (result i32) (set_local $1
(set_local $1 (i32.add
(get_local $1)
(i32.const 4)
)
)
(i32.add (i32.add
(get_local $1) (get_local $2)
(i32.const 4) (i32.const 2)
) )
) )
(i32.add (block (result i32)
(get_local $2) (set_local $1
(i32.const 2) (i32.add
) (get_local $1)
) (i32.const 3)
(block (result i32) )
(set_local $1 )
(i32.add (i32.add
(get_local $1) (get_local $2)
(i32.const 3) (i32.const 1)
) )
)
(i32.add
(get_local $2)
(i32.const 1)
) )
) )
) )
@ -161,7 +165,6 @@
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32)
(if (if
(get_local $0) (get_local $0)
(block (block
@ -200,26 +203,24 @@
(grow_memory (grow_memory
(select (select
(get_local $2) (get_local $2)
(tee_local $4 (tee_local $3
(tee_local $3 (i32.shr_u
(i32.shr_u (i32.and
(i32.and (i32.add
(i32.add (i32.sub
(i32.sub (get_local $0)
(get_local $0) (get_local $1)
(get_local $1)
)
(i32.const 65535)
) )
(i32.const -65536) (i32.const 65535)
) )
(i32.const 16) (i32.const -65536)
) )
(i32.const 16)
) )
) )
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
) )
@ -349,16 +350,16 @@
) )
) )
(if (if
(if (result i32) (tee_local $6
(tee_local $6 (i32.eq
(i32.eq (i32.and
(i32.and (get_local $1)
(get_local $1) (i32.const 64512)
(i32.const 64512)
)
(i32.const 55296)
) )
(i32.const 55296)
) )
)
(set_local $6
(i32.lt_u (i32.lt_u
(i32.add (i32.add
(get_local $3) (get_local $3)
@ -366,8 +367,10 @@
) )
(get_local $7) (get_local $7)
) )
(get_local $6)
) )
)
(if
(get_local $6)
(if (if
(i32.eq (i32.eq
(i32.and (i32.and

File diff suppressed because it is too large Load Diff

View File

@ -36,7 +36,6 @@
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32)
(if (if
(get_local $0) (get_local $0)
(block (block
@ -75,26 +74,24 @@
(grow_memory (grow_memory
(select (select
(get_local $2) (get_local $2)
(tee_local $4 (tee_local $3
(tee_local $3 (i32.shr_u
(i32.shr_u (i32.and
(i32.and (i32.add
(i32.add (i32.sub
(i32.sub (get_local $0)
(get_local $0) (get_local $1)
(get_local $1)
)
(i32.const 65535)
) )
(i32.const -65536) (i32.const 65535)
) )
(i32.const 16) (i32.const -65536)
) )
(i32.const 16)
) )
) )
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
) )
@ -151,8 +148,8 @@
(get_local $1) (get_local $1)
) )
(func $~lib/memory/set_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/set_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i64) (local $3 i32)
(local $4 i32) (local $4 i64)
(if (if
(i32.eqz (i32.eqz
(get_local $2) (get_local $2)
@ -196,9 +193,11 @@
) )
(i32.store8 (i32.store8
(i32.sub (i32.sub
(i32.add (tee_local $3
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 2) (i32.const 2)
) )
@ -206,10 +205,7 @@
) )
(i32.store8 (i32.store8
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 3) (i32.const 3)
) )
(get_local $1) (get_local $1)
@ -245,19 +241,25 @@
) )
(return) (return)
) )
(set_local $2
(i32.sub
(get_local $2)
(tee_local $3
(i32.and
(i32.sub
(i32.const 0)
(get_local $0)
)
(i32.const 3)
)
)
)
)
(i32.store (i32.store
(tee_local $0 (tee_local $0
(i32.add (i32.add
(get_local $0) (get_local $0)
(tee_local $4 (get_local $3)
(i32.and
(i32.sub
(i32.const 0)
(get_local $0)
)
(i32.const 3)
)
)
) )
) )
(tee_local $1 (tee_local $1
@ -276,10 +278,7 @@
(get_local $0) (get_local $0)
(tee_local $2 (tee_local $2
(i32.and (i32.and
(i32.sub (get_local $2)
(get_local $2)
(get_local $4)
)
(i32.const -4) (i32.const -4)
) )
) )
@ -311,9 +310,11 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (tee_local $3
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 12) (i32.const 12)
) )
@ -321,10 +322,7 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 8) (i32.const 8)
) )
(get_local $1) (get_local $1)
@ -366,9 +364,11 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (tee_local $3
(get_local $0) (i32.add
(get_local $2) (get_local $0)
(get_local $2)
)
) )
(i32.const 28) (i32.const 28)
) )
@ -376,30 +376,21 @@
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 24) (i32.const 24)
) )
(get_local $1) (get_local $1)
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 20) (i32.const 20)
) )
(get_local $1) (get_local $1)
) )
(i32.store (i32.store
(i32.sub (i32.sub
(i32.add (get_local $3)
(get_local $0)
(get_local $2)
)
(i32.const 16) (i32.const 16)
) )
(get_local $1) (get_local $1)
@ -407,7 +398,7 @@
(set_local $0 (set_local $0
(i32.add (i32.add
(get_local $0) (get_local $0)
(tee_local $4 (tee_local $3
(i32.add (i32.add
(i32.and (i32.and
(get_local $0) (get_local $0)
@ -421,18 +412,18 @@
(set_local $2 (set_local $2
(i32.sub (i32.sub
(get_local $2) (get_local $2)
(get_local $4) (get_local $3)
) )
) )
(set_local $3 (set_local $4
(i64.or (i64.or
(i64.extend_u/i32 (tee_local $4
(get_local $1)
)
(i64.shl
(i64.extend_u/i32 (i64.extend_u/i32
(get_local $1) (get_local $1)
) )
)
(i64.shl
(get_local $4)
(i64.const 32) (i64.const 32)
) )
) )
@ -446,28 +437,28 @@
(block (block
(i64.store (i64.store
(get_local $0) (get_local $0)
(get_local $3) (get_local $4)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 8) (i32.const 8)
) )
(get_local $3) (get_local $4)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 16) (i32.const 16)
) )
(get_local $3) (get_local $4)
) )
(i64.store (i64.store
(i32.add (i32.add
(get_local $0) (get_local $0)
(i32.const 24) (i32.const 24)
) )
(get_local $3) (get_local $4)
) )
(set_local $2 (set_local $2
(i32.sub (i32.sub
@ -488,7 +479,6 @@
) )
(func $~lib/internal/typedarray/TypedArray<i8,i32>#constructor (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/internal/typedarray/TypedArray<i8,i32>#constructor (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32)
(if (if
(i32.gt_u (i32.gt_u
(get_local $1) (get_local $1)
@ -506,11 +496,9 @@
) )
(call $~lib/memory/set_memory (call $~lib/memory/set_memory
(i32.add (i32.add
(tee_local $3 (tee_local $2
(call $~lib/internal/arraybuffer/allocUnsafe (call $~lib/internal/arraybuffer/allocUnsafe
(tee_local $2 (get_local $1)
(get_local $1)
)
) )
) )
(i32.const 8) (i32.const 8)
@ -518,31 +506,32 @@
(i32.const 0) (i32.const 0)
(get_local $1) (get_local $1)
) )
(i32.store (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (block
(i32.store (i32.store
(tee_local $0 (tee_local $0
(call $~lib/allocator/arena/allocate_memory (call $~lib/allocator/arena/allocate_memory
(i32.const 12) (i32.const 12)
)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0) (get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
) )
(get_local $3) )
(i32.store
(get_local $0)
(get_local $2)
) )
(i32.store offset=4 (i32.store offset=4
(get_local $0) (get_local $0)
@ -550,7 +539,7 @@
) )
(i32.store offset=8 (i32.store offset=8
(get_local $0) (get_local $0)
(get_local $2) (get_local $1)
) )
(get_local $0) (get_local $0)
) )
@ -598,30 +587,31 @@
(i32.const 0) (i32.const 0)
(get_local $1) (get_local $1)
) )
(i32.store (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (block
(i32.store (i32.store
(tee_local $0 (tee_local $0
(call $~lib/allocator/arena/allocate_memory (call $~lib/allocator/arena/allocate_memory
(i32.const 12) (i32.const 12)
)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0) (get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
) )
)
(i32.store
(get_local $0)
(get_local $2) (get_local $2)
) )
(i32.store offset=4 (i32.store offset=4
@ -681,30 +671,31 @@
(i32.const 0) (i32.const 0)
(get_local $1) (get_local $1)
) )
(i32.store (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (block
(i32.store (i32.store
(tee_local $0 (tee_local $0
(call $~lib/allocator/arena/allocate_memory (call $~lib/allocator/arena/allocate_memory
(i32.const 12) (i32.const 12)
)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0) (get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
) )
)
(i32.store
(get_local $0)
(get_local $2) (get_local $2)
) )
(i32.store offset=4 (i32.store offset=4
@ -764,30 +755,31 @@
(i32.const 0) (i32.const 0)
(get_local $1) (get_local $1)
) )
(i32.store (if
(if (result i32) (i32.eqz
(get_local $0) (get_local $0)
(get_local $0) )
(block (result i32) (block
(i32.store (i32.store
(tee_local $0 (tee_local $0
(call $~lib/allocator/arena/allocate_memory (call $~lib/allocator/arena/allocate_memory
(i32.const 12) (i32.const 12)
)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
(i32.const 0)
)
(i32.store offset=4
(get_local $0) (get_local $0)
(i32.const 0)
)
(i32.store offset=8
(get_local $0)
(i32.const 0)
) )
) )
)
(i32.store
(get_local $0)
(get_local $2) (get_local $2)
) )
(i32.store offset=4 (i32.store offset=4
@ -1497,17 +1489,19 @@
(unreachable) (unreachable)
) )
) )
(i32.load offset=8 (tee_local $0
(i32.add (i32.load offset=8
(i32.add (i32.add
(i32.load (i32.add
(get_local $0) (i32.load
(get_local $0)
)
(get_local $2)
)
(i32.shl
(get_local $1)
(i32.const 2)
) )
(get_local $2)
)
(i32.shl
(get_local $1)
(i32.const 2)
) )
) )
) )
@ -1515,108 +1509,104 @@
(func $~lib/typedarray/Int32Array#subarray (; 16 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/typedarray/Int32Array#subarray (; 16 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(set_local $4 (block $~lib/internal/typedarray/TypedArray<i32,i32>#subarray|inlined.0
(call $~lib/internal/typedarray/TypedArray<i32,i32>#get:length (set_local $4
(get_local $0) (call $~lib/internal/typedarray/TypedArray<i32,i32>#get:length
) (get_local $0)
)
(set_local $1
(if (result i32)
(i32.lt_s
(get_local $1)
(i32.const 0)
) )
(select )
(tee_local $3 (set_local $1
(i32.add (if (result i32)
(i32.lt_s
(get_local $1)
(i32.const 0)
)
(select
(tee_local $3
(i32.add
(get_local $4)
(get_local $1)
)
)
(i32.const 0)
(i32.gt_s
(get_local $3)
(i32.const 0)
)
)
(select
(tee_local $3
(get_local $1)
)
(get_local $4)
(i32.lt_s
(get_local $1)
(get_local $4) (get_local $4)
)
)
)
)
(set_local $2
(if (result i32)
(i32.lt_s
(get_local $2)
(i32.const 0)
)
(select
(tee_local $3
(i32.add
(get_local $4)
(get_local $2)
)
)
(get_local $1)
(i32.gt_s
(get_local $3)
(get_local $1) (get_local $1)
) )
) )
(tee_local $1 (select
(i32.const 0) (tee_local $3
) (select
(i32.gt_s
(get_local $3)
(get_local $1)
)
)
(select
(tee_local $3
(get_local $1)
)
(tee_local $1
(get_local $4)
)
(i32.lt_s
(get_local $3)
(get_local $1)
)
)
)
)
(set_local $2
(if (result i32)
(i32.lt_s
(get_local $2)
(i32.const 0)
)
(select
(tee_local $3
(i32.add
(get_local $4)
(get_local $2)
)
)
(get_local $1)
(i32.gt_s
(get_local $3)
(get_local $1)
)
)
(select
(tee_local $3
(select
(tee_local $3
(get_local $2) (get_local $2)
)
(get_local $4)
(i32.lt_s
(get_local $3)
(get_local $4) (get_local $4)
(i32.lt_s
(get_local $2)
(get_local $4)
)
) )
) )
)
(get_local $1)
(i32.gt_s
(get_local $3)
(get_local $1) (get_local $1)
(i32.gt_s
(get_local $3)
(get_local $1)
)
) )
) )
) )
) (i32.store
(i32.store (tee_local $3
(tee_local $3 (call $~lib/allocator/arena/allocate_memory
(call $~lib/allocator/arena/allocate_memory (i32.const 12)
(i32.const 12) )
)
(i32.load
(get_local $0)
) )
) )
(i32.load (i32.store offset=4
(get_local $0) (get_local $3)
(i32.shl
(get_local $1)
(i32.const 2)
)
) )
) (i32.store offset=8
(i32.store offset=4 (get_local $3)
(get_local $3) (i32.shl
(i32.shl (get_local $2)
(get_local $1) (i32.const 2)
(i32.const 2) )
)
)
(i32.store offset=8
(get_local $3)
(i32.shl
(get_local $2)
(i32.const 2)
) )
) )
(get_local $3) (get_local $3)
@ -1661,28 +1651,25 @@
) )
) )
(func $~lib/typedarray/Uint8ClampedArray#__set (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/typedarray/Uint8ClampedArray#__set (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(call $~lib/internal/typedarray/TypedArray<u8,u32>#__set (call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
(get_local $0) (get_local $0)
(get_local $1) (get_local $1)
(select (select
(tee_local $2 (tee_local $3
(select (select
(get_local $2) (get_local $2)
(tee_local $0 (i32.const 255)
(i32.const 255)
)
(i32.lt_s (i32.lt_s
(get_local $2) (get_local $2)
(get_local $0) (i32.const 255)
) )
) )
) )
(tee_local $0 (i32.const 0)
(i32.const 0)
)
(i32.gt_s (i32.gt_s
(get_local $2) (get_local $3)
(get_local $0) (i32.const 0)
) )
) )
) )
@ -1713,15 +1700,17 @@
(unreachable) (unreachable)
) )
) )
(i32.load8_u offset=8 (tee_local $0
(i32.add (i32.load8_u offset=8
(i32.add (i32.add
(i32.load (i32.add
(get_local $0) (i32.load
(get_local $0)
)
(get_local $2)
) )
(get_local $2) (get_local $1)
) )
(get_local $1)
) )
) )
) )

View File

@ -13,27 +13,27 @@
(block $case2|0 (block $case2|0
(if (if
(i32.ne (i32.ne
(tee_local $1 (get_local $0)
(get_local $0)
)
(i32.const 1) (i32.const 1)
) )
(block (block
(br_if $case2|0 (br_if $case2|0
(i32.eqz (i32.eqz
(get_local $1) (tee_local $1
(get_local $0)
)
) )
) )
(br_if $case4|0 (br_if $case4|0
(i32.or (i32.eq
(i32.eq (get_local $1)
(get_local $1) (i32.const 2)
(i32.const 2) )
) )
(i32.eq (br_if $case4|0
(get_local $1) (i32.eq
(i32.const 3) (get_local $1)
) (i32.const 3)
) )
) )
(br $case2|0) (br $case2|0)
@ -55,22 +55,22 @@
(block $case2|0 (block $case2|0
(if (if
(i32.ne (i32.ne
(tee_local $1 (get_local $0)
(get_local $0)
)
(i32.const 1) (i32.const 1)
) )
(block (block
(br_if $case2|0 (br_if $case2|0
(i32.or (i32.eq
(i32.eq (tee_local $1
(get_local $1) (get_local $0)
(i32.const 2)
)
(i32.eq
(get_local $1)
(i32.const 3)
) )
(i32.const 2)
)
)
(br_if $case2|0
(i32.eq
(get_local $1)
(i32.const 3)
) )
) )
(br $break|0) (br $break|0)
@ -87,6 +87,36 @@
(i32.const 0) (i32.const 0)
) )
(func $switch/doSwitchBreakCase (; 3 ;) (type $ii) (param $0 i32) (result i32) (func $switch/doSwitchBreakCase (; 3 ;) (type $ii) (param $0 i32) (result i32)
(block $break|0
(br_if $break|0
(i32.eq
(get_local $0)
(i32.const 1)
)
)
(return
(i32.const 2)
)
)
(i32.const 1)
)
(func $switch/doSwitchBreakDefault (; 4 ;) (type $ii) (param $0 i32) (result i32)
(block $break|0
(block $case1|0
(br_if $break|0
(i32.ne
(get_local $0)
(i32.const 1)
)
)
(return
(i32.const 1)
)
)
)
(i32.const 2)
)
(func $switch/doSwitchFallThroughCase (; 5 ;) (type $ii) (param $0 i32) (result i32)
(if (if
(i32.ne (i32.ne
(get_local $0) (get_local $0)
@ -98,7 +128,7 @@
) )
(i32.const 1) (i32.const 1)
) )
(func $switch/doSwitchBreakDefault (; 4 ;) (type $ii) (param $0 i32) (result i32) (func $switch/doSwitchFallThroughDefault (; 6 ;) (type $ii) (param $0 i32) (result i32)
(if (if
(i32.eq (i32.eq
(get_local $0) (get_local $0)
@ -110,10 +140,10 @@
) )
(i32.const 2) (i32.const 2)
) )
(func $switch/doSwitchEmpty (; 5 ;) (type $ii) (param $0 i32) (result i32) (func $switch/doSwitchEmpty (; 7 ;) (type $ii) (param $0 i32) (result i32)
(i32.const 2) (i32.const 2)
) )
(func $start (; 6 ;) (type $v) (func $start (; 8 ;) (type $v)
(if (if
(call $switch/doSwitch (call $switch/doSwitch
(i32.const 0) (i32.const 0)
@ -455,7 +485,7 @@
) )
(if (if
(i32.ne (i32.ne
(call $switch/doSwitchBreakCase (call $switch/doSwitchFallThroughCase
(i32.const 0) (i32.const 0)
) )
(i32.const 2) (i32.const 2)
@ -472,7 +502,7 @@
) )
(if (if
(i32.ne (i32.ne
(call $switch/doSwitchBreakCase (call $switch/doSwitchFallThroughCase
(i32.const 1) (i32.const 1)
) )
(i32.const 1) (i32.const 1)
@ -489,7 +519,7 @@
) )
(if (if
(i32.ne (i32.ne
(call $switch/doSwitchBreakCase (call $switch/doSwitchFallThroughCase
(i32.const 2) (i32.const 2)
) )
(i32.const 2) (i32.const 2)
@ -506,7 +536,7 @@
) )
(if (if
(i32.ne (i32.ne
(call $switch/doSwitchBreakDefault (call $switch/doSwitchFallThroughDefault
(i32.const 0) (i32.const 0)
) )
(i32.const 2) (i32.const 2)
@ -523,7 +553,7 @@
) )
(if (if
(i32.ne (i32.ne
(call $switch/doSwitchBreakDefault (call $switch/doSwitchFallThroughDefault
(i32.const 1) (i32.const 1)
) )
(i32.const 1) (i32.const 1)
@ -540,7 +570,7 @@
) )
(if (if
(i32.ne (i32.ne
(call $switch/doSwitchBreakDefault (call $switch/doSwitchFallThroughDefault
(i32.const 2) (i32.const 2)
) )
(i32.const 2) (i32.const 2)

View File

@ -66,53 +66,39 @@
) )
) )
(set_global $unary/i (set_global $unary/i
(block (result i32) (i32.add
(set_global $unary/i
(i32.add
(get_global $unary/i)
(i32.const 1)
)
)
(get_global $unary/i) (get_global $unary/i)
(i32.const 1)
) )
) )
(set_global $unary/i (set_global $unary/i
(block (result i32) (i32.sub
(set_global $unary/i
(i32.sub
(get_global $unary/i)
(i32.const 1)
)
)
(get_global $unary/i) (get_global $unary/i)
(i32.const 1)
) )
) )
(set_global $unary/i (set_global $unary/i
(block (result i32) (i32.add
(set_global $unary/i (tee_local $0
(i32.add (get_global $unary/i)
(tee_local $0
(get_global $unary/i)
)
(i32.const 1)
)
) )
(get_local $0) (i32.const 1)
) )
) )
(set_global $unary/i (set_global $unary/i
(block (result i32) (get_local $0)
(set_global $unary/i )
(i32.sub (set_global $unary/i
(tee_local $0 (i32.sub
(get_global $unary/i) (tee_local $0
) (get_global $unary/i)
(i32.const 1)
)
) )
(get_local $0) (i32.const 1)
) )
) )
(set_global $unary/i
(get_local $0)
)
(set_global $unary/I (set_global $unary/I
(i64.add (i64.add
(get_global $unary/I) (get_global $unary/I)
@ -169,53 +155,39 @@
) )
) )
(set_global $unary/I (set_global $unary/I
(block (result i64) (i64.add
(set_global $unary/I
(i64.add
(get_global $unary/I)
(i64.const 1)
)
)
(get_global $unary/I) (get_global $unary/I)
(i64.const 1)
) )
) )
(set_global $unary/I (set_global $unary/I
(block (result i64) (i64.sub
(set_global $unary/I
(i64.sub
(get_global $unary/I)
(i64.const 1)
)
)
(get_global $unary/I) (get_global $unary/I)
(i64.const 1)
) )
) )
(set_global $unary/I (set_global $unary/I
(block (result i64) (i64.add
(set_global $unary/I (tee_local $1
(i64.add (get_global $unary/I)
(tee_local $1
(get_global $unary/I)
)
(i64.const 1)
)
) )
(get_local $1) (i64.const 1)
) )
) )
(set_global $unary/I (set_global $unary/I
(block (result i64) (get_local $1)
(set_global $unary/I )
(i64.sub (set_global $unary/I
(tee_local $1 (i64.sub
(get_global $unary/I) (tee_local $1
) (get_global $unary/I)
(i64.const 1)
)
) )
(get_local $1) (i64.const 1)
) )
) )
(set_global $unary/I
(get_local $1)
)
(set_global $unary/f (set_global $unary/f
(f32.add (f32.add
(get_global $unary/f) (get_global $unary/f)
@ -261,53 +233,39 @@
) )
) )
(set_global $unary/f (set_global $unary/f
(block (result f32) (f32.add
(set_global $unary/f
(f32.add
(get_global $unary/f)
(f32.const 1)
)
)
(get_global $unary/f) (get_global $unary/f)
(f32.const 1)
) )
) )
(set_global $unary/f (set_global $unary/f
(block (result f32) (f32.sub
(set_global $unary/f
(f32.sub
(get_global $unary/f)
(f32.const 1)
)
)
(get_global $unary/f) (get_global $unary/f)
(f32.const 1)
) )
) )
(set_global $unary/f (set_global $unary/f
(block (result f32) (f32.add
(set_global $unary/f (tee_local $2
(f32.add (get_global $unary/f)
(tee_local $2
(get_global $unary/f)
)
(f32.const 1)
)
) )
(get_local $2) (f32.const 1)
) )
) )
(set_global $unary/f (set_global $unary/f
(block (result f32) (get_local $2)
(set_global $unary/f )
(f32.sub (set_global $unary/f
(tee_local $2 (f32.sub
(get_global $unary/f) (tee_local $2
) (get_global $unary/f)
(f32.const 1)
)
) )
(get_local $2) (f32.const 1)
) )
) )
(set_global $unary/f
(get_local $2)
)
(set_global $unary/F (set_global $unary/F
(f64.add (f64.add
(get_global $unary/F) (get_global $unary/F)
@ -355,52 +313,38 @@
) )
) )
(set_global $unary/F (set_global $unary/F
(block (result f64) (f64.add
(set_global $unary/F
(f64.add
(get_global $unary/F)
(f64.const 1)
)
)
(get_global $unary/F) (get_global $unary/F)
(f64.const 1)
) )
) )
(set_global $unary/F (set_global $unary/F
(block (result f64) (f64.sub
(set_global $unary/F
(f64.sub
(get_global $unary/F)
(f64.const 1)
)
)
(get_global $unary/F) (get_global $unary/F)
(f64.const 1)
) )
) )
(set_global $unary/F (set_global $unary/F
(block (result f64) (f64.add
(set_global $unary/F (tee_local $3
(f64.add (get_global $unary/F)
(tee_local $3
(get_global $unary/F)
)
(f64.const 1)
)
) )
(get_local $3) (f64.const 1)
) )
) )
(set_global $unary/F (set_global $unary/F
(block (result f64) (get_local $3)
(set_global $unary/F )
(f64.sub (set_global $unary/F
(tee_local $3 (f64.sub
(get_global $unary/F) (tee_local $3
) (get_global $unary/F)
(f64.const 1)
)
) )
(get_local $3) (f64.const 1)
) )
) )
(set_global $unary/F
(get_local $3)
)
) )
) )

View File

@ -180,31 +180,31 @@
(i32.const 0) (i32.const 0)
) )
(loop $continue|3 (loop $continue|3
(br_if $continue|3 (set_global $while/n
(if (result i32) (i32.sub
(block (result i32) (tee_local $0
(set_global $while/n (get_global $while/n)
(i32.sub
(tee_local $0
(get_global $while/n)
)
(i32.const 1)
)
)
(get_local $0)
) )
(block (result i32) (i32.const 1)
(set_global $while/m )
(i32.add )
(get_global $while/m) (if
(i32.const 1) (get_local $0)
) (block
(set_global $while/m
(i32.add
(get_global $while/m)
(i32.const 1)
) )
)
(set_local $0
(get_global $while/m) (get_global $while/m)
) )
(get_local $0)
) )
) )
(br_if $continue|3
(get_local $0)
)
) )
(if (if
(i32.ne (i32.ne