use more useful defaults for -O, fix an utoa issue

This commit is contained in:
dcode 2019-05-24 14:45:27 +02:00
parent c41c57e6d6
commit af00bdeefe
42 changed files with 6210 additions and 7097 deletions

View File

@ -70,7 +70,7 @@ exports.sourceMapRoot = "assemblyscript:///";
exports.libraryPrefix = assemblyscript.LIBRARY_PREFIX; exports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;
/** Default Binaryen optimization level. */ /** Default Binaryen optimization level. */
exports.defaultOptimizeLevel = 2; exports.defaultOptimizeLevel = 3;
/** Default Binaryen shrink level. */ /** Default Binaryen shrink level. */
exports.defaultShrinkLevel = 1; exports.defaultShrinkLevel = 1;

View File

@ -13,7 +13,7 @@
"description": [ "description": [
"Optimizes the module. Also has the usual shorthands:", "Optimizes the module. Also has the usual shorthands:",
"", "",
" -O Uses defaults. Equivalent to -O2s", " -O Uses defaults. Equivalent to -O3s",
" -O0 Equivalent to --optimizeLevel 0", " -O0 Equivalent to --optimizeLevel 0",
" -O1 Equivalent to --optimizeLevel 1", " -O1 Equivalent to --optimizeLevel 1",
" -O2 Equivalent to --optimizeLevel 2", " -O2 Equivalent to --optimizeLevel 2",

View File

@ -107,14 +107,6 @@ const FRC_POWERS: u64[] = [
// Count number of decimals for u32 values // Count number of decimals for u32 values
// In our case input value always non-zero so we can simplify some parts // In our case input value always non-zero so we can simplify some parts
export function decimalCount32(value: u32): u32 { export function decimalCount32(value: u32): u32 {
if (ASC_SHRINK_LEVEL >= 1) {
let l: u32 = 32 - clz<u32>(value); // log2
let t = l * 1233 >>> 12; // log10
let power = unchecked(POWERS10[t]);
t -= u32(value < power);
return t + 1;
} else {
if (value < 100000) { if (value < 100000) {
if (value < 100) { if (value < 100) {
return select<u32>(1, 2, value < 10); return select<u32>(1, 2, value < 10);
@ -130,20 +122,11 @@ export function decimalCount32(value: u32): u32 {
return select<u32>(8, m, value < 100000000); return select<u32>(8, m, value < 100000000);
} }
} }
}
} }
// Count number of decimals for u64 values // Count number of decimals for u64 values
// In our case input value always greater than 2^32-1 so we can skip some parts // In our case input value always greater than 2^32-1 so we can skip some parts
export function decimalCount64(value: u64): u32 { export function decimalCount64(value: u64): u32 {
if (ASC_SHRINK_LEVEL >= 1) {
let l: u32 = 64 - <u32>clz<u64>(value); // log2
let t = l * 1233 >>> 12; // log10
let power = unchecked(<u64>POWERS10[t]);
t -= u32(value < 10000000000 * power);
return t + 1;
} else {
if (value < 1000000000000000) { if (value < 1000000000000000) {
if (value < 1000000000000) { if (value < 1000000000000) {
return select<u32>(11, 12, value < 100000000000); return select<u32>(11, 12, value < 100000000000);
@ -159,7 +142,6 @@ export function decimalCount64(value: u64): u32 {
return select<u32>(18, m, value < 1000000000000000000); return select<u32>(18, m, value < 1000000000000000000);
} }
} }
}
} }
function utoa32_lut(buffer: usize, num: u32, offset: usize): void { function utoa32_lut(buffer: usize, num: u32, offset: usize): void {

View File

@ -217,7 +217,7 @@ tests.forEach(filename => {
"--validate", "--validate",
"--measure", "--measure",
"--binaryFile", // -> stdout "--binaryFile", // -> stdout
"-O3" "-O"
]; ];
if (asc_flags) if (asc_flags)
Array.prototype.push.apply(cmd, asc_flags); Array.prototype.push.apply(cmd, asc_flags);

View File

@ -51,7 +51,12 @@
end end
local.get $0 local.get $0
) )
(func $~lib/array/Array<assert-nonnull/Foo>#__get (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<assert-nonnull/Foo>#__unchecked_get (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load offset=4
i32.load
)
(func $~lib/array/Array<assert-nonnull/Foo>#__get (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.load offset=12 i32.load offset=12
@ -79,10 +84,9 @@
unreachable unreachable
end end
local.get $0 local.get $0
i32.load offset=4 call $~lib/array/Array<assert-nonnull/Foo>#__unchecked_get
i32.load
) )
(func $assert-nonnull/testArr (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testArr (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -91,7 +95,7 @@
local.get $0 local.get $0
call $~lib/array/Array<assert-nonnull/Foo>#__get call $~lib/array/Array<assert-nonnull/Foo>#__get
) )
(func $~lib/array/Array<assert-nonnull/Foo | null>#__get (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<assert-nonnull/Foo | null>#__get (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -107,14 +111,13 @@
unreachable unreachable
end end
local.get $0 local.get $0
i32.load offset=4 call $~lib/array/Array<assert-nonnull/Foo>#__unchecked_get
i32.load
) )
(func $assert-nonnull/testElem (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testElem (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
call $~lib/array/Array<assert-nonnull/Foo | null>#__get call $~lib/array/Array<assert-nonnull/Foo | null>#__get
) )
(func $assert-nonnull/testAll (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testAll (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -130,13 +133,13 @@
end end
local.get $0 local.get $0
) )
(func $assert-nonnull/testFn (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testFn (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
local.get $0 local.get $0
call_indirect (type $FUNCSIG$i) call_indirect (type $FUNCSIG$i)
) )
(func $assert-nonnull/testFn2 (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testFn2 (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -147,7 +150,7 @@
local.get $0 local.get $0
call_indirect (type $FUNCSIG$i) call_indirect (type $FUNCSIG$i)
) )
(func $assert-nonnull/testRet (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testRet (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
@ -162,14 +165,14 @@
end end
local.get $1 local.get $1
) )
(func $assert-nonnull/testObjFn (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testObjFn (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
call_indirect (type $FUNCSIG$i) call_indirect (type $FUNCSIG$i)
) )
(func $assert-nonnull/testObjRet (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $assert-nonnull/testObjRet (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
@ -185,7 +188,7 @@
end end
local.get $1 local.get $1
) )
(func $null (; 14 ;) (type $FUNCSIG$v) (func $null (; 15 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -14,43 +14,36 @@
(local $1 i32) (local $1 i32)
(local $2 i64) (local $2 i64)
(local $3 i32) (local $3 i32)
(local $4 i32)
local.get $0 local.get $0
i64.reinterpret_f64 i64.reinterpret_f64
local.tee $2 local.tee $2
i64.const 32
i64.shr_u
i32.wrap_i64 i32.wrap_i64
local.set $1 local.set $1
i32.const 1 i32.const 1
i32.const 0 i32.const 0
local.get $2
i64.const 32
i64.shr_u
i32.wrap_i64
local.tee $3
i32.const 2147483647
i32.and
local.tee $4
i32.const 2146435072
i32.gt_s
if (result i32)
i32.const 1 i32.const 1
else i32.const 0
local.get $1 i32.const 1
local.get $2
i32.wrap_i64
i32.const 0 i32.const 0
i32.ne i32.ne
i32.const 0 i32.const 0
local.get $4 local.get $1
i32.const 2147483647
i32.and
local.tee $3
i32.const 2146435072 i32.const 2146435072
i32.eq i32.eq
select select
end local.get $3
i32.const 2146435072
i32.gt_s
select
select
select select
if (result i32)
i32.const 1
else
i32.const 0
end
local.tee $1
if if
local.get $0 local.get $0
f64.const 1 f64.const 1
@ -205,7 +198,27 @@
local.get $0 local.get $0
f32.mul f32.mul
) )
(func $~lib/math/NativeMath.mod (; 2 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (func $~lib/math/NativeMathf.pow (; 2 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32)
(local $1 i32)
i32.const 1
i32.const 0
local.get $0
i32.reinterpret_f32
local.tee $1
i32.const 2147483647
i32.and
i32.const 2139095040
i32.gt_s
select
if
local.get $0
f32.const 1
f32.add
return
end
local.get $0
)
(func $~lib/math/NativeMath.mod (; 3 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64)
(local $1 i64) (local $1 i64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
@ -358,46 +371,40 @@
local.get $0 local.get $0
f64.mul f64.mul
) )
(func $start:binary (; 3 ;) (type $FUNCSIG$v) (func $start:binary (; 4 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 f32)
(local $2 i64)
(local $3 f64)
(local $4 i32)
global.get $binary/i global.get $binary/i
local.tee $0
i32.const 1 i32.const 1
i32.rem_s i32.rem_s
drop drop
local.get $0 global.get $binary/i
f64.convert_i32_s f64.convert_i32_s
call $~lib/math/NativeMath.pow call $~lib/math/NativeMath.pow
drop drop
global.get $binary/i global.get $binary/i
local.tee $0
i32.const 1 i32.const 1
i32.lt_s i32.lt_s
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/i
i32.const 1 i32.const 1
i32.gt_s i32.gt_s
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/i
i32.const 1 i32.const 1
i32.le_s i32.le_s
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/i
i32.const 1 i32.const 1
i32.ge_s i32.ge_s
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/i
i32.const 1 i32.const 1
i32.eq i32.eq
local.tee $4
global.set $binary/b global.set $binary/b
local.get $4 global.get $binary/i
i32.const 1
i32.eq
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/i
i32.const 1 i32.const 1
i32.add i32.add
global.set $binary/i global.set $binary/i
@ -475,39 +482,38 @@
i32.xor i32.xor
global.set $binary/i global.set $binary/i
global.get $binary/I global.get $binary/I
local.tee $2
i64.const 1 i64.const 1
i64.rem_s i64.rem_s
drop drop
local.get $2 global.get $binary/I
f64.convert_i64_s f64.convert_i64_s
call $~lib/math/NativeMath.pow call $~lib/math/NativeMath.pow
drop drop
global.get $binary/I global.get $binary/I
local.tee $2
i64.const 1 i64.const 1
i64.lt_s i64.lt_s
global.set $binary/b global.set $binary/b
local.get $2 global.get $binary/I
i64.const 1 i64.const 1
i64.gt_s i64.gt_s
global.set $binary/b global.set $binary/b
local.get $2 global.get $binary/I
i64.const 1 i64.const 1
i64.le_s i64.le_s
global.set $binary/b global.set $binary/b
local.get $2 global.get $binary/I
i64.const 1 i64.const 1
i64.ge_s i64.ge_s
global.set $binary/b global.set $binary/b
local.get $2 global.get $binary/I
i64.const 1 i64.const 1
i64.eq i64.eq
local.tee $0
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/I
i64.const 1
i64.eq
global.set $binary/b global.set $binary/b
local.get $2 global.get $binary/I
i64.const 1 i64.const 1
i64.add i64.add
global.set $binary/I global.set $binary/I
@ -587,43 +593,34 @@
global.get $binary/f global.get $binary/f
call $~lib/math/NativeMathf.mod call $~lib/math/NativeMathf.mod
drop drop
block $__inlined_func$~lib/math/NativeMathf.pow
i32.const 1
i32.const 0
global.get $binary/f global.get $binary/f
i32.reinterpret_f32 call $~lib/math/NativeMathf.pow
i32.const 2147483647 drop
i32.and
i32.const 2139095040
i32.gt_s
select
br_if $__inlined_func$~lib/math/NativeMathf.pow
end
global.get $binary/f global.get $binary/f
local.tee $1
f32.const 1 f32.const 1
f32.lt f32.lt
global.set $binary/b global.set $binary/b
local.get $1 global.get $binary/f
f32.const 1 f32.const 1
f32.gt f32.gt
global.set $binary/b global.set $binary/b
local.get $1 global.get $binary/f
f32.const 1 f32.const 1
f32.le f32.le
global.set $binary/b global.set $binary/b
local.get $1 global.get $binary/f
f32.const 1 f32.const 1
f32.ge f32.ge
global.set $binary/b global.set $binary/b
local.get $1 global.get $binary/f
f32.const 1 f32.const 1
f32.eq f32.eq
local.tee $0
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/f
f32.const 1
f32.eq
global.set $binary/b global.set $binary/b
local.get $1 global.get $binary/f
f32.const 1 f32.const 1
f32.add f32.add
global.set $binary/f global.set $binary/f
@ -634,23 +631,8 @@
global.get $binary/f global.get $binary/f
call $~lib/math/NativeMathf.mod call $~lib/math/NativeMathf.mod
global.set $binary/f global.set $binary/f
i32.const 1
i32.const 0
global.get $binary/f global.get $binary/f
local.tee $1 call $~lib/math/NativeMathf.pow
i32.reinterpret_f32
i32.const 2147483647
i32.and
i32.const 2139095040
i32.gt_s
select
if
local.get $1
f32.const 1
f32.add
local.set $1
end
local.get $1
global.set $binary/f global.set $binary/f
global.get $binary/f global.get $binary/f
f32.const 1 f32.const 1
@ -663,23 +645,8 @@
global.get $binary/f global.get $binary/f
call $~lib/math/NativeMathf.mod call $~lib/math/NativeMathf.mod
global.set $binary/f global.set $binary/f
i32.const 1
i32.const 0
global.get $binary/f global.get $binary/f
local.tee $1 call $~lib/math/NativeMathf.pow
i32.reinterpret_f32
i32.const 2147483647
i32.and
i32.const 2139095040
i32.gt_s
select
if
local.get $1
f32.const 1
f32.add
local.set $1
end
local.get $1
global.set $binary/f global.set $binary/f
global.get $binary/F global.get $binary/F
call $~lib/math/NativeMath.mod call $~lib/math/NativeMath.mod
@ -688,30 +655,30 @@
call $~lib/math/NativeMath.pow call $~lib/math/NativeMath.pow
drop drop
global.get $binary/F global.get $binary/F
local.tee $3
f64.const 1 f64.const 1
f64.lt f64.lt
global.set $binary/b global.set $binary/b
local.get $3 global.get $binary/F
f64.const 1 f64.const 1
f64.gt f64.gt
global.set $binary/b global.set $binary/b
local.get $3 global.get $binary/F
f64.const 1 f64.const 1
f64.le f64.le
global.set $binary/b global.set $binary/b
local.get $3 global.get $binary/F
f64.const 1 f64.const 1
f64.ge f64.ge
global.set $binary/b global.set $binary/b
local.get $3 global.get $binary/F
f64.const 1 f64.const 1
f64.eq f64.eq
local.tee $0
global.set $binary/b global.set $binary/b
local.get $0 global.get $binary/F
f64.const 1
f64.eq
global.set $binary/b global.set $binary/b
local.get $3 global.get $binary/F
f64.const 1 f64.const 1
f64.add f64.add
global.set $binary/F global.set $binary/F
@ -740,10 +707,10 @@
call $~lib/math/NativeMath.pow call $~lib/math/NativeMath.pow
global.set $binary/F global.set $binary/F
) )
(func $start (; 4 ;) (type $FUNCSIG$v) (func $start (; 5 ;) (type $FUNCSIG$v)
call $start:binary call $start:binary
) )
(func $null (; 5 ;) (type $FUNCSIG$v) (func $null (; 6 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,5 +1,7 @@
(module (module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$id (func (param f64) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
@ -21,10 +23,34 @@
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "test" (func $builtins/test)) (export "test" (func $builtins/test))
(start $start) (start $start)
(func $start:builtins~anonymous|0 (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/builtins/isNaN<f32> (; 1 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $~lib/builtins/isFinite<f32> (; 2 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.sub
f32.const 0
f32.eq
)
(func $~lib/builtins/isNaN<f64> (; 3 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $~lib/builtins/isFinite<f64> (; 4 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.sub
f64.const 0
f64.eq
)
(func $start:builtins~anonymous|0 (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $start:builtins (; 2 ;) (type $FUNCSIG$v) (func $start:builtins (; 6 ;) (type $FUNCSIG$v)
i32.const 31 i32.const 31
global.set $builtins/i global.set $builtins/i
i32.const 0 i32.const 0
@ -123,6 +149,70 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
f32.const 1.25
call $~lib/builtins/isNaN<f32>
if
i32.const 0
i32.const 24
i32.const 104
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const nan:0x400000
call $~lib/builtins/isNaN<f32>
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 105
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const 1.25
call $~lib/builtins/isFinite<f32>
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 106
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const inf
call $~lib/builtins/isFinite<f32>
if
i32.const 0
i32.const 24
i32.const 107
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const -inf
call $~lib/builtins/isFinite<f32>
if
i32.const 0
i32.const 24
i32.const 108
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const nan:0x400000
call $~lib/builtins/isFinite<f32>
if
i32.const 0
i32.const 24
i32.const 109
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const nan:0x400000 f32.const nan:0x400000
global.set $builtins/f global.set $builtins/f
f32.const inf f32.const inf
@ -145,10 +235,76 @@
global.set $builtins/f global.set $builtins/f
f32.const 1 f32.const 1
global.set $builtins/f global.set $builtins/f
f32.const 1.25
call $~lib/builtins/isNaN<f32>
global.set $builtins/b
f32.const 1.25
call $~lib/builtins/isFinite<f32>
global.set $builtins/b
f64.const 1.25
call $~lib/builtins/isNaN<f64>
if
i32.const 0 i32.const 0
global.set $builtins/b i32.const 24
i32.const 140
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const nan:0x8000000000000
call $~lib/builtins/isNaN<f64>
i32.const 1 i32.const 1
global.set $builtins/b i32.ne
if
i32.const 0
i32.const 24
i32.const 141
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const 1.25
call $~lib/builtins/isFinite<f64>
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 142
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const inf
call $~lib/builtins/isFinite<f64>
if
i32.const 0
i32.const 24
i32.const 143
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const -inf
call $~lib/builtins/isFinite<f64>
if
i32.const 0
i32.const 24
i32.const 144
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const nan:0x8000000000000
call $~lib/builtins/isFinite<f64>
if
i32.const 0
i32.const 24
i32.const 145
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const nan:0x8000000000000 f64.const nan:0x8000000000000
global.set $builtins/F global.set $builtins/F
f64.const inf f64.const inf
@ -171,9 +327,11 @@
global.set $builtins/F global.set $builtins/F
f64.const 1 f64.const 1
global.set $builtins/F global.set $builtins/F
i32.const 0 f64.const 1.25
call $~lib/builtins/isNaN<f64>
global.set $builtins/b global.set $builtins/b
i32.const 1 f64.const 1.25
call $~lib/builtins/isFinite<f64>
global.set $builtins/b global.set $builtins/b
i32.const 8 i32.const 8
i32.load i32.load
@ -374,6 +532,90 @@
i32.const 2 i32.const 2
global.get $builtins/fn global.get $builtins/fn
call_indirect (type $FUNCSIG$vii) call_indirect (type $FUNCSIG$vii)
f32.const nan:0x400000
call $~lib/builtins/isNaN<f32>
i32.eqz
if
i32.const 0
i32.const 24
i32.const 294
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const nan:0x8000000000000
call $~lib/builtins/isNaN<f64>
i32.eqz
if
i32.const 0
i32.const 24
i32.const 295
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const nan:0x400000
call $~lib/builtins/isFinite<f32>
if
i32.const 0
i32.const 24
i32.const 296
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const inf
call $~lib/builtins/isFinite<f32>
if
i32.const 0
i32.const 24
i32.const 297
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const nan:0x8000000000000
call $~lib/builtins/isFinite<f64>
if
i32.const 0
i32.const 24
i32.const 298
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const inf
call $~lib/builtins/isFinite<f64>
if
i32.const 0
i32.const 24
i32.const 299
i32.const 0
call $~lib/builtins/abort
unreachable
end
f32.const 0
call $~lib/builtins/isFinite<f32>
i32.eqz
if
i32.const 0
i32.const 24
i32.const 300
i32.const 0
call $~lib/builtins/abort
unreachable
end
f64.const 0
call $~lib/builtins/isFinite<f64>
i32.eqz
if
i32.const 0
i32.const 24
i32.const 301
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8 i32.const 8
i32.load8_s i32.load8_s
drop drop
@ -443,11 +685,14 @@
i32.const 8 i32.const 8
f64.const 1 f64.const 1
f64.store f64.store
f64.const 1
call $~lib/builtins/isNaN<f64>
drop
) )
(func $builtins/test (; 3 ;) (type $FUNCSIG$v) (func $builtins/test (; 7 ;) (type $FUNCSIG$v)
nop nop
) )
(func $start (; 4 ;) (type $FUNCSIG$v) (func $start (; 8 ;) (type $FUNCSIG$v)
call $start:builtins call $start:builtins
) )
) )

View File

@ -11,7 +11,14 @@
(global $call-optional/optIndirect i32 (i32.const 1)) (global $call-optional/optIndirect i32 (i32.const 1))
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $call-optional/opt|trampoline (; 1 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $call-optional/opt (; 1 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0
local.get $1
i32.add
local.get $2
i32.add
)
(func $call-optional/opt|trampoline (; 2 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
block $2of2 block $2of2
block $1of2 block $1of2
block $0of2 block $0of2
@ -31,37 +38,16 @@
end end
local.get $0 local.get $0
local.get $1 local.get $1
i32.add
local.get $2 local.get $2
i32.add call $call-optional/opt
) )
(func $start:call-optional (; 2 ;) (type $FUNCSIG$v) (func $start:call-optional (; 3 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
i32.const 1 i32.const 1
global.set $~lib/argc global.set $~lib/argc
block $2of2
block $1of2
block $0of2
block $outOfRange
global.get $~lib/argc
i32.const 1
i32.sub
br_table $0of2 $1of2 $2of2 $outOfRange
end
unreachable
end
i32.const -1
local.set $0
end
i32.const -2
local.set $1
end
local.get $0
i32.const 3 i32.const 3
i32.add i32.const 0
local.get $1 i32.const 0
i32.add call $call-optional/opt|trampoline
if if
i32.const 0 i32.const 0
i32.const 24 i32.const 24
@ -72,32 +58,10 @@
end end
i32.const 2 i32.const 2
global.set $~lib/argc global.set $~lib/argc
i32.const 4
local.set $0
i32.const 0
local.set $1
block $2of21
block $1of22
block $0of23
block $outOfRange4
global.get $~lib/argc
i32.const 1
i32.sub
br_table $0of23 $1of22 $2of21 $outOfRange4
end
unreachable
end
i32.const -1
local.set $0
end
i32.const -2
local.set $1
end
local.get $0
i32.const 3 i32.const 3
i32.add i32.const 4
local.get $1 i32.const 0
i32.add call $call-optional/opt|trampoline
i32.const 5 i32.const 5
i32.ne i32.ne
if if
@ -108,6 +72,20 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 3
i32.const 4
i32.const 5
call $call-optional/opt
i32.const 12
i32.ne
if
i32.const 0
i32.const 24
i32.const 6
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1 i32.const 1
global.set $~lib/argc global.set $~lib/argc
i32.const 3 i32.const 3
@ -158,10 +136,10 @@
unreachable unreachable
end end
) )
(func $start (; 3 ;) (type $FUNCSIG$v) (func $start (; 4 ;) (type $FUNCSIG$v)
call $start:call-optional call $start:call-optional
) )
(func $null (; 4 ;) (type $FUNCSIG$v) (func $null (; 5 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -42,9 +42,8 @@
i32.add i32.add
global.set $comma/a global.set $comma/a
global.get $comma/a global.get $comma/a
local.tee $0
global.set $comma/b global.set $comma/b
local.get $0 global.get $comma/a
i32.const 2 i32.const 2
i32.ne i32.ne
if if
@ -75,9 +74,8 @@
i32.add i32.add
global.set $comma/a global.set $comma/a
global.get $comma/a global.get $comma/a
local.tee $0
global.set $comma/b global.set $comma/b
local.get $0 global.get $comma/a
i32.const 1 i32.const 1
i32.ne i32.ne
if if

View File

@ -158,7 +158,7 @@
end end
local.get $0 local.get $0
local.get $1 local.get $1
i32.sub call $exports/subOpt
) )
(func $~lib/setargc (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/setargc (; 10 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0

View File

@ -30,13 +30,21 @@
local.get $1 local.get $1
i32.add i32.add
) )
(func $start:function-expression~anonymous|4 (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $function-expression/testOmitted (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 2
global.set $~lib/argc
i32.const 1
i32.const 2
local.get $0
call_indirect (type $FUNCSIG$iii)
)
(func $start:function-expression~anonymous|4 (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
) )
(func $start:function-expression~anonymous|5 (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $start:function-expression~anonymous|5 (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
i32.const 42 i32.const 42
) )
(func $start:function-expression (; 7 ;) (type $FUNCSIG$v) (func $start:function-expression (; 8 ;) (type $FUNCSIG$v)
i32.const 1 i32.const 1
global.set $~lib/argc global.set $~lib/argc
i32.const 1 i32.const 1
@ -85,11 +93,8 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 2 i32.const 5
global.set $~lib/argc call $function-expression/testOmitted
i32.const 1
i32.const 2
call $start:function-expression~anonymous|3
i32.const 3 i32.const 3
i32.ne i32.ne
if if
@ -100,11 +105,8 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 2 i32.const 6
global.set $~lib/argc call $function-expression/testOmitted
i32.const 1
i32.const 2
call $start:function-expression~anonymous|4
i32.const 1 i32.const 1
i32.ne i32.ne
if if
@ -115,11 +117,8 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 2 i32.const 7
global.set $~lib/argc call $function-expression/testOmitted
i32.const 1
i32.const 2
call $start:function-expression~anonymous|5
i32.const 42 i32.const 42
i32.ne i32.ne
if if
@ -176,7 +175,7 @@
unreachable unreachable
end end
) )
(func $start (; 8 ;) (type $FUNCSIG$v) (func $start (; 9 ;) (type $FUNCSIG$v)
call $start:function-expression call $start:function-expression
) )
) )

View File

@ -3,6 +3,7 @@
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$jjj (func (param i64 i64) (result i64))) (type $FUNCSIG$jjj (func (param i64 i64) (result i64)))
(type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
@ -29,7 +30,15 @@
local.get $1 local.get $1
f64.add f64.add
) )
(func $start:function-types (; 4 ;) (type $FUNCSIG$v) (func $function-types/doAddWithFn<i32> (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
i32.const 2
global.set $~lib/argc
local.get $0
local.get $1
local.get $2
call_indirect (type $FUNCSIG$iii)
)
(func $start:function-types (; 5 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 1 i32.const 1
global.set $function-types/i32Adder global.set $function-types/i32Adder
@ -83,11 +92,9 @@
unreachable unreachable
end end
i32.const 2 i32.const 2
global.set $~lib/argc
i32.const 2
i32.const 3 i32.const 3
global.get $function-types/i32Adder global.get $function-types/i32Adder
call_indirect (type $FUNCSIG$iii) call $function-types/doAddWithFn<i32>
i32.const 5 i32.const 5
i32.ne i32.ne
if if
@ -113,11 +120,10 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 2
global.set $~lib/argc
i32.const 4 i32.const 4
i32.const 5 i32.const 5
call $function-types/makeAdder<i32>~anonymous|0 i32.const 4
call $function-types/doAddWithFn<i32>
i32.const 9 i32.const 9
i32.ne i32.ne
if if
@ -143,12 +149,10 @@
i32.const 1 i32.const 1
local.set $0 local.set $0
end end
i32.const 2
global.set $~lib/argc
i32.const 1 i32.const 1
i32.const 2 i32.const 2
local.get $0 local.get $0
call_indirect (type $FUNCSIG$iii) call $function-types/doAddWithFn<i32>
i32.const 3 i32.const 3
i32.ne i32.ne
if if
@ -159,11 +163,10 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 2
global.set $~lib/argc
i32.const 1 i32.const 1
i32.const 2 i32.const 2
call $function-types/makeAdder<i32>~anonymous|0 i32.const 1
call $function-types/doAddWithFn<i32>
i32.const 3 i32.const 3
i32.ne i32.ne
if if
@ -175,10 +178,10 @@
unreachable unreachable
end end
) )
(func $start (; 5 ;) (type $FUNCSIG$v) (func $start (; 6 ;) (type $FUNCSIG$v)
call $start:function-types call $start:function-types
) )
(func $null (; 6 ;) (type $FUNCSIG$v) (func $null (; 7 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -11,6 +11,7 @@
(export "ifThen" (func $if/ifThen)) (export "ifThen" (func $if/ifThen))
(export "ifThenElseBlock" (func $if/ifThenElse)) (export "ifThenElseBlock" (func $if/ifThenElse))
(export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) (export "ifAlwaysReturns" (func $if/ifAlwaysReturns))
(start $start)
(func $if/ifThenElse (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $if/ifThenElse (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1 i32.const 1
i32.const 0 i32.const 0
@ -25,7 +26,75 @@
end end
i32.const 0 i32.const 0
) )
(func $if/ifAlwaysReturns (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $start:if (; 3 ;) (type $FUNCSIG$v)
i32.const 0
call $if/ifThenElse
if
i32.const 0
i32.const 24
i32.const 8
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $if/ifThenElse
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 9
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $if/ifThen
if
i32.const 0
i32.const 24
i32.const 17
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $if/ifThen
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 18
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $if/ifThenElse
if
i32.const 0
i32.const 24
i32.const 30
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $if/ifThenElse
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 31
i32.const 0
call $~lib/builtins/abort
unreachable
end
)
(func $if/ifAlwaysReturns (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
if (result i32) if (result i32)
i32.const 1 i32.const 1
@ -38,7 +107,10 @@
unreachable unreachable
end end
) )
(func $start (; 4 ;) (type $FUNCSIG$v) (func $start (; 5 ;) (type $FUNCSIG$v)
call $start:if
)
(func $null (; 6 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -161,8 +161,8 @@
i32.sub i32.sub
local.get $5 local.get $5
i32.add i32.add
local.tee $1
f64.convert_i32_s f64.convert_i32_s
local.tee $0
f64.const 1.9082149292705877e-10 f64.const 1.9082149292705877e-10
f64.mul f64.mul
f64.add f64.add
@ -170,7 +170,8 @@
f64.sub f64.sub
local.get $3 local.get $3
f64.add f64.add
local.get $0 local.get $1
f64.convert_i32_s
f64.const 0.6931471803691238 f64.const 0.6931471803691238
f64.mul f64.mul
f64.add f64.add
@ -375,9 +376,9 @@
(func $../../examples/mandelbrot/assembly/index/computeLine (; 2 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $../../examples/mandelbrot/assembly/index/computeLine (; 2 ;) (type $FUNCSIG$viiii) (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 f64) (local $6 i32)
(local $7 i32) (local $7 i32)
(local $8 i32) (local $8 f64)
(local $9 f64) (local $9 f64)
(local $10 f64) (local $10 f64)
(local $11 f64) (local $11 f64)
@ -385,36 +386,34 @@
(local $13 f64) (local $13 f64)
(local $14 f64) (local $14 f64)
(local $15 f64) (local $15 f64)
local.get $1
f64.convert_i32_u
local.tee $9
f64.const 0.625
f64.mul
local.set $4
local.get $0 local.get $0
f64.convert_i32_u f64.convert_i32_u
local.get $2 local.get $2
f64.convert_i32_u f64.convert_i32_u
local.tee $6
f64.const 0.5 f64.const 0.5
f64.mul f64.mul
f64.sub f64.sub
f64.const 10 f64.const 10
f64.const 3 f64.const 3
local.get $9 local.get $1
f64.convert_i32_u
f64.mul f64.mul
f64.const 4 f64.const 4
local.get $6 local.get $2
f64.convert_i32_u
f64.mul f64.mul
f64.min f64.min
f64.div f64.div
local.tee $10 local.tee $9
f64.mul f64.mul
local.set $11 local.set $10
local.get $4 local.get $1
local.get $10 f64.convert_i32_u
f64.const 0.625
f64.mul f64.mul
local.set $13 local.get $9
f64.mul
local.set $12
local.get $0 local.get $0
local.get $1 local.get $1
i32.mul i32.mul
@ -424,41 +423,41 @@
f64.const 1 f64.const 1
local.get $3 local.get $3
f64.convert_i32_u f64.convert_i32_u
local.tee $6
f64.div f64.div
local.set $14 local.set $13
f64.const 8 f64.const 8
local.get $6 local.get $3
f64.convert_i32_u
f64.min f64.min
local.set $15 local.set $14
loop $repeat|0 loop $repeat|0
block $break|0 block $break|0
local.get $8 local.get $7
local.get $1 local.get $1
i32.ge_u i32.ge_u
br_if $break|0 br_if $break|0
local.get $8 local.get $7
f64.convert_i32_u f64.convert_i32_u
local.get $10 local.get $9
f64.mul f64.mul
local.get $13 local.get $12
f64.sub f64.sub
local.set $12 local.set $11
f64.const 0 f64.const 0
local.set $4 local.set $4
f64.const 0 f64.const 0
local.set $5 local.set $5
i32.const 0 i32.const 0
local.set $7 local.set $6
loop $continue|1 loop $continue|1
local.get $4 local.get $4
local.get $4 local.get $4
f64.mul f64.mul
local.tee $9 local.tee $15
local.get $5 local.get $5
local.get $5 local.get $5
f64.mul f64.mul
local.tee $6 local.tee $8
f64.add f64.add
f64.const 4 f64.const 4
f64.le f64.le
@ -469,31 +468,31 @@
f64.mul f64.mul
local.get $5 local.get $5
f64.mul f64.mul
local.get $11 local.get $10
f64.add f64.add
local.set $5 local.set $5
local.get $9 local.get $15
local.get $6 local.get $8
f64.sub f64.sub
local.get $12 local.get $11
f64.add f64.add
local.set $4 local.set $4
local.get $7 local.get $6
local.get $3 local.get $3
i32.ge_u i32.ge_u
br_if $break|1 br_if $break|1
local.get $7 local.get $6
i32.const 1 i32.const 1
i32.add i32.add
local.set $7 local.set $6
br $continue|1 br $continue|1
end end
end end
end end
loop $continue|2 loop $continue|2
local.get $7 local.get $6
f64.convert_i32_u f64.convert_i32_u
local.get $15 local.get $14
f64.lt f64.lt
if if
local.get $4 local.get $4
@ -503,29 +502,29 @@
local.get $5 local.get $5
f64.mul f64.mul
f64.sub f64.sub
local.get $12 local.get $11
f64.add f64.add
local.set $6 local.set $8
f64.const 2 f64.const 2
local.get $4 local.get $4
f64.mul f64.mul
local.get $5 local.get $5
f64.mul f64.mul
local.get $11 local.get $10
f64.add f64.add
local.set $5 local.set $5
local.get $6 local.get $8
local.set $4 local.set $4
local.get $7 local.get $6
i32.const 1 i32.const 1
i32.add i32.add
local.set $7 local.set $6
br $continue|2 br $continue|2
end end
end end
i32.const 2047 i32.const 2047
local.set $2 local.set $2
local.get $8 local.get $7
i32.const 1 i32.const 1
i32.shl i32.shl
local.get $0 local.get $0
@ -537,22 +536,22 @@
local.get $5 local.get $5
f64.mul f64.mul
f64.add f64.add
local.tee $6 local.tee $8
f64.const 1 f64.const 1
f64.gt f64.gt
if (result i32) if (result i32)
f64.const 2047 f64.const 2047
local.get $7 local.get $6
i32.const 1 i32.const 1
i32.add i32.add
f64.convert_i32_u f64.convert_i32_u
f64.const 0.5 f64.const 0.5
local.get $6 local.get $8
call $~lib/math/NativeMath.log call $~lib/math/NativeMath.log
f64.mul f64.mul
call $~lib/math/NativeMath.log2 call $~lib/math/NativeMath.log2
f64.sub f64.sub
local.get $14 local.get $13
f64.mul f64.mul
f64.const 0 f64.const 0
f64.max f64.max
@ -564,10 +563,10 @@
i32.const 2047 i32.const 2047
end end
i32.store16 i32.store16
local.get $8 local.get $7
i32.const 1 i32.const 1
i32.add i32.add
local.set $8 local.set $7
br $repeat|0 br $repeat|0
end end
end end

View File

@ -1,22 +1,39 @@
(module (module
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s")
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "testI32" (func $many-locals/testI32)) (export "testI32" (func $many-locals/testI32))
(export "testI8" (func $many-locals/testI8)) (export "testI8" (func $many-locals/testI8))
(func $many-locals/testI32 (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (start $start)
(func $many-locals/testI32 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
) )
(func $many-locals/testI8 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $many-locals/testI8 (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 24 i32.const 24
i32.shl i32.shl
i32.const 24 i32.const 24
i32.shr_s i32.shr_s
) )
(func $start (; 2 ;) (type $FUNCSIG$v) (func $start (; 3 ;) (type $FUNCSIG$v)
i32.const 42
call $many-locals/testI8
i32.const 42
i32.ne
if
i32.const 0
i32.const 24
i32.const 267
i32.const 0
call $~lib/builtins/abort
unreachable
end
)
(func $null (; 4 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -191,8 +191,8 @@
local.set $2 local.set $2
local.get $1 local.get $1
i64.extend_i32_u i64.extend_i32_u
local.tee $4 local.get $1
local.get $4 i64.extend_i32_u
i64.const 32 i64.const 32
i64.shl i64.shl
i64.or i64.or

File diff suppressed because it is too large Load Diff

View File

@ -41,9 +41,9 @@
(table $0 1 funcref) (table $0 1 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null)
(global $number/a (mut i32) (i32.const 1)) (global $number/a (mut i32) (i32.const 1))
(global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0))
(global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0))
(global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0))
(global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0))
(global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0))
(global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0))
(global $~lib/util/number/_exp (mut i32) (i32.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0))

View File

@ -17,6 +17,7 @@
(export "renamed_add" (func $export/add)) (export "renamed_add" (func $export/add))
(export "rerenamed_sub" (func $export/mul)) (export "rerenamed_sub" (func $export/mul))
(export "renamed_ns.two" (func $export/ns.one)) (export "renamed_ns.two" (func $export/ns.one))
(start $start)
(func $export/add (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $export/add (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -35,4 +36,14 @@
(func $export/ns.one (; 3 ;) (type $FUNCSIG$v) (func $export/ns.one (; 3 ;) (type $FUNCSIG$v)
nop nop
) )
(func $start (; 4 ;) (type $FUNCSIG$v)
i32.const 1
i32.const 2
call $export/add
i32.const 3
i32.const 4
call $export/mul
i32.add
drop
)
) )

View File

@ -2037,14 +2037,21 @@
i32.const 584 i32.const 584
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
) )
(func $~lib/string/String#concat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
)
(func $~lib/string/String#concat (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $1 local.get $1
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
drop drop
block (result i32)
local.get $1 local.get $1
i32.eqz i32.eqz
if if
@ -2053,28 +2060,19 @@
call $~lib/rt/pure/__retainRelease call $~lib/rt/pure/__retainRelease
local.set $1 local.set $1
end end
local.get $1
i32.const 16
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.const 1
i32.shl
local.tee $4
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.const 1 i32.const 1
i32.shl i32.shl
local.tee $3 local.tee $3
local.get $1
call $~lib/string/String#get:length
i32.const 1
i32.shl
local.tee $4
i32.add i32.add
local.tee $2 local.tee $2
i32.eqz i32.eqz
end
if if
i32.const 584 i32.const 584
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
@ -2102,7 +2100,7 @@
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
local.get $2 local.get $2
) )
(func $~lib/string/String.__concat (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__concat (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
@ -2123,7 +2121,7 @@
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
local.get $2 local.get $2
) )
(func $~lib/rt/pure/markGray (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/markGray (; 36 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -2147,7 +2145,7 @@
call $~lib/rt/__visit_members call $~lib/rt/__visit_members
end end
) )
(func $~lib/rt/pure/scanBlack (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/scanBlack (; 37 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -2160,7 +2158,7 @@
i32.const 4 i32.const 4
call $~lib/rt/__visit_members call $~lib/rt/__visit_members
) )
(func $~lib/rt/pure/scan (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/scan (; 38 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -2194,7 +2192,7 @@
end end
end end
) )
(func $~lib/rt/pure/collectWhite (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/collectWhite (; 39 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -2222,7 +2220,7 @@
local.get $0 local.get $0
call $~lib/rt/tlsf/freeBlock call $~lib/rt/tlsf/freeBlock
) )
(func $~lib/rt/pure/__collect (; 39 ;) (type $FUNCSIG$v) (func $~lib/rt/pure/__collect (; 40 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -2346,7 +2344,7 @@
local.get $5 local.get $5
global.set $~lib/rt/pure/CUR global.set $~lib/rt/pure/CUR
) )
(func $start:retain-release-sanity (; 40 ;) (type $FUNCSIG$v) (func $start:retain-release-sanity (; 41 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -2434,7 +2432,7 @@
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
call $~lib/rt/pure/__collect call $~lib/rt/pure/__collect
) )
(func $retain-release-sanity/main (; 41 ;) (type $FUNCSIG$v) (func $retain-release-sanity/main (; 42 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -2443,7 +2441,7 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $~lib/rt/pure/__visit (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/rt/pure/__visit (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0 local.get $0
i32.const 724 i32.const 724
i32.lt_u i32.lt_u
@ -2553,7 +2551,7 @@
unreachable unreachable
end end
) )
(func $~lib/array/Array<~lib/string/String>#__visit_impl (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -2584,7 +2582,7 @@
end end
end end
) )
(func $~lib/rt/__visit_members (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/rt/__visit_members (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
block $block$4$break block $block$4$break
block $switch$1$default block $switch$1$default
block $switch$1$case$6 block $switch$1$case$6
@ -2613,7 +2611,7 @@
call $~lib/rt/pure/__visit call $~lib/rt/pure/__visit
end end
) )
(func $null (; 45 ;) (type $FUNCSIG$v) (func $null (; 46 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -80,17 +80,21 @@
call $~lib/array/Array<~lib/array/Array<i32>>#__get call $~lib/array/Array<~lib/array/Array<i32>>#__get
call $~lib/array/Array<i32>#__get call $~lib/array/Array<i32>#__get
) )
(func $std/array-access/stringArrayPropertyAccess (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0
call $~lib/array/Array<~lib/array/Array<i32>>#__get
i32.const 16 i32.const 16
i32.sub i32.sub
i32.load offset=12 i32.load offset=12
i32.const 1 i32.const 1
i32.shr_u i32.shr_u
) )
(func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $std/array-access/stringArrayPropertyAccess (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 0
call $~lib/array/Array<~lib/array/Array<i32>>#__get
call $~lib/string/String#get:length
)
(func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
i32.const 240 i32.const 240
@ -132,7 +136,7 @@
end end
local.get $4 local.get $4
) )
(func $~lib/string/String#startsWith (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#startsWith (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -146,25 +150,17 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 236
i32.load
i32.const 1
i32.shr_u
local.tee $1
local.set $2
local.get $1
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
local.tee $1 local.tee $1
i32.const 0 i32.const 0
local.get $1 local.get $1
i32.lt_s i32.lt_s
select select
local.tee $2
i32.const 240
call $~lib/string/String#get:length
local.tee $3 local.tee $3
i32.add i32.add
local.get $1 local.get $1
@ -174,30 +170,26 @@
return return
end end
local.get $0 local.get $0
local.get $3
local.get $2 local.get $2
local.get $3
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $std/array-access/stringArrayMethodCall (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/array-access/stringArrayMethodCall (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
call $~lib/array/Array<~lib/array/Array<i32>>#__get call $~lib/array/Array<~lib/array/Array<i32>>#__get
call $~lib/string/String#startsWith call $~lib/string/String#startsWith
) )
(func $std/array-access/stringArrayArrayPropertyAccess (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/array-access/stringArrayArrayPropertyAccess (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
call $~lib/array/Array<~lib/array/Array<i32>>#__get call $~lib/array/Array<~lib/array/Array<i32>>#__get
i32.const 1 i32.const 1
call $~lib/array/Array<~lib/array/Array<i32>>#__get call $~lib/array/Array<~lib/array/Array<i32>>#__get
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
) )
(func $std/array-access/stringArrayArrayMethodCall (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/array-access/stringArrayArrayMethodCall (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
call $~lib/array/Array<~lib/array/Array<i32>>#__get call $~lib/array/Array<~lib/array/Array<i32>>#__get
@ -205,7 +197,7 @@
call $~lib/array/Array<~lib/array/Array<i32>>#__get call $~lib/array/Array<~lib/array/Array<i32>>#__get
call $~lib/string/String#startsWith call $~lib/string/String#startsWith
) )
(func $null (; 10 ;) (type $FUNCSIG$v) (func $null (; 11 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1660,28 +1660,26 @@
i32.const 0 i32.const 0
i32.const 3 i32.const 3
call $~lib/rt/__allocArray call $~lib/rt/__allocArray
local.tee $2 local.tee $1
i32.load offset=4 i32.load offset=4
local.tee $0 local.tee $0
global.get $std/array-literal/i global.get $std/array-literal/i
local.tee $1
i32.store8 i32.store8
local.get $1 global.get $std/array-literal/i
i32.const 1 i32.const 1
i32.add i32.add
global.set $std/array-literal/i global.set $std/array-literal/i
local.get $0 local.get $0
global.get $std/array-literal/i global.get $std/array-literal/i
local.tee $1
i32.store8 offset=1 i32.store8 offset=1
local.get $1 global.get $std/array-literal/i
i32.const 1 i32.const 1
i32.add i32.add
global.set $std/array-literal/i global.set $std/array-literal/i
local.get $0 local.get $0
global.get $std/array-literal/i global.get $std/array-literal/i
i32.store8 offset=2 i32.store8 offset=2
local.get $2 local.get $1
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
global.set $std/array-literal/dynamicArrayI8 global.set $std/array-literal/dynamicArrayI8
global.get $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8
@ -1738,28 +1736,26 @@
i32.const 2 i32.const 2
i32.const 4 i32.const 4
call $~lib/rt/__allocArray call $~lib/rt/__allocArray
local.tee $2 local.tee $1
i32.load offset=4 i32.load offset=4
local.tee $0 local.tee $0
global.get $std/array-literal/i global.get $std/array-literal/i
local.tee $1
i32.store i32.store
local.get $1 global.get $std/array-literal/i
i32.const 1 i32.const 1
i32.add i32.add
global.set $std/array-literal/i global.set $std/array-literal/i
local.get $0 local.get $0
global.get $std/array-literal/i global.get $std/array-literal/i
local.tee $1
i32.store offset=4 i32.store offset=4
local.get $1 global.get $std/array-literal/i
i32.const 1 i32.const 1
i32.add i32.add
global.set $std/array-literal/i global.set $std/array-literal/i
local.get $0 local.get $0
global.get $std/array-literal/i global.get $std/array-literal/i
i32.store offset=8 i32.store offset=8
local.get $2 local.get $1
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
global.set $std/array-literal/dynamicArrayI32 global.set $std/array-literal/dynamicArrayI32
global.get $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32
@ -1814,11 +1810,11 @@
i32.const 2 i32.const 2
i32.const 6 i32.const 6
call $~lib/rt/__allocArray call $~lib/rt/__allocArray
local.tee $2 local.tee $1
i32.load offset=4 i32.load offset=4
local.tee $0 local.tee $0
call $std/array-literal/Ref#constructor call $std/array-literal/Ref#constructor
local.tee $1 local.tee $2
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
i32.store i32.store
local.get $0 local.get $0
@ -1831,7 +1827,7 @@
local.tee $4 local.tee $4
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
i32.store offset=8 i32.store offset=8
local.get $2 local.get $1
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
global.set $std/array-literal/dynamicArrayRef global.set $std/array-literal/dynamicArrayRef
global.get $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef
@ -1849,7 +1845,7 @@
i32.const 2 i32.const 2
i32.const 8 i32.const 8
call $~lib/rt/__allocArray call $~lib/rt/__allocArray
local.tee $2 local.tee $1
i32.load offset=4 i32.load offset=4
local.tee $0 local.tee $0
call $std/array-literal/RefWithCtor#constructor call $std/array-literal/RefWithCtor#constructor
@ -1866,7 +1862,7 @@
local.tee $0 local.tee $0
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
i32.store offset=8 i32.store offset=8
local.get $2 local.get $1
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
global.set $std/array-literal/dynamicArrayRefWithCtor global.set $std/array-literal/dynamicArrayRefWithCtor
global.get $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor
@ -1891,7 +1887,7 @@
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
global.get $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
local.get $1 local.get $2
call $~lib/rt/pure/__release call $~lib/rt/pure/__release
local.get $3 local.get $3
call $~lib/rt/pure/__release call $~lib/rt/pure/__release

File diff suppressed because it is too large Load Diff

View File

@ -2,11 +2,11 @@
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h")
@ -140,7 +140,13 @@
i32.const 0 i32.const 0
i32.store8 i32.store8
) )
(func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=12
)
(func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
block $~lib/util/memory/memmove|inlined.0 block $~lib/util/memory/memmove|inlined.0
@ -313,12 +319,10 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#slice (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#slice (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
local.set $3 local.set $3
local.get $1 local.get $1
i32.const 0 i32.const 0
@ -382,7 +386,15 @@
call $~lib/memory/memory.copy call $~lib/memory/memory.copy
local.get $3 local.get $3
) )
(func $~lib/arraybuffer/ArrayBufferView#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
if
i32.const 1
return
end
i32.const 0
)
(func $~lib/arraybuffer/ArrayBufferView#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
i32.const 1 i32.const 1
i32.const 1073741808 i32.const 1073741808
@ -435,7 +447,7 @@
i32.store offset=8 i32.store offset=8
local.get $0 local.get $0
) )
(func $~lib/rt/__allocArray (; 6 ;) (type $FUNCSIG$i) (result i32) (func $~lib/rt/__allocArray (; 8 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
i32.const 16 i32.const 16
@ -462,16 +474,14 @@
call $~lib/memory/memory.copy call $~lib/memory/memory.copy
local.get $0 local.get $0
) )
(func $~lib/dataview/DataView#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/dataview/DataView#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $1 local.get $1
i32.const 1073741808 i32.const 1073741808
i32.gt_u i32.gt_u
local.get $1 local.get $1
local.get $0 local.get $0
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.gt_u i32.gt_u
i32.or i32.or
if if
@ -508,30 +518,9 @@
i32.store offset=8 i32.store offset=8
local.get $2 local.get $2
) )
(func $~lib/dataview/DataView#constructor|trampoline (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $start:std/arraybuffer (; 10 ;) (type $FUNCSIG$v)
(local $1 i32)
block $2of2
block $1of2
block $outOfRange
global.get $~lib/argc
i32.const 1
i32.sub
br_table $1of2 $1of2 $2of2 $outOfRange
end
unreachable
end
local.get $0
i32.const 16
i32.sub
i32.load offset=12
local.set $1
end
local.get $0
local.get $1
call $~lib/dataview/DataView#constructor
)
(func $start:std/arraybuffer (; 9 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32)
i32.const 240 i32.const 240
global.set $~lib/rt/stub/startOffset global.set $~lib/rt/stub/startOffset
global.get $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset
@ -544,9 +533,7 @@
local.get $0 local.get $0
global.set $std/arraybuffer/buffer global.set $std/arraybuffer/buffer
global.get $std/arraybuffer/buffer global.get $std/arraybuffer/buffer
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 8 i32.const 8
i32.ne i32.ne
if if
@ -563,9 +550,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 8 i32.const 8
i32.ne i32.ne
if if
@ -593,9 +578,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 7 i32.const 7
i32.ne i32.ne
if if
@ -612,9 +595,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 1 i32.const 1
i32.ne i32.ne
if if
@ -631,9 +612,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 2 i32.const 2
i32.ne i32.ne
if if
@ -650,9 +629,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 6 i32.const 6
i32.ne i32.ne
if if
@ -669,9 +646,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 2 i32.const 2
i32.ne i32.ne
if if
@ -688,9 +663,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.const 4 i32.const 4
i32.ne i32.ne
if if
@ -707,9 +680,7 @@
call $~lib/arraybuffer/ArrayBuffer#slice call $~lib/arraybuffer/ArrayBuffer#slice
global.set $std/arraybuffer/sliced global.set $std/arraybuffer/sliced
global.get $std/arraybuffer/sliced global.get $std/arraybuffer/sliced
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
if if
i32.const 0 i32.const 0
i32.const 128 i32.const 128
@ -728,6 +699,36 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 0
call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array>
if
i32.const 0
i32.const 128
i32.const 41
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array>
if
i32.const 0
i32.const 128
i32.const 42
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array>
if
i32.const 0
i32.const 128
i32.const 43
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 12 i32.const 12
i32.const 5 i32.const 5
call $~lib/rt/stub/__alloc call $~lib/rt/stub/__alloc
@ -737,11 +738,7 @@
call $~lib/rt/__allocArray call $~lib/rt/__allocArray
drop drop
global.get $std/arraybuffer/arr8 global.get $std/arraybuffer/arr8
if (result i32) call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array>
i32.const 1
else
i32.const 0
end
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -751,17 +748,12 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array>2 (result i32)
i32.const 1
i32.const 12 i32.const 12
i32.const 9 i32.const 9
call $~lib/rt/stub/__alloc call $~lib/rt/stub/__alloc
i32.const 2 i32.const 2
call $~lib/arraybuffer/ArrayBufferView#constructor call $~lib/arraybuffer/ArrayBufferView#constructor
br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array>2 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array>
drop
i32.const 0
end
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -773,15 +765,27 @@
end end
i32.const 1 i32.const 1
global.set $~lib/argc global.set $~lib/argc
block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView>3 (result i32)
i32.const 1
global.get $std/arraybuffer/arr8 global.get $std/arraybuffer/arr8
i32.load i32.load
call $~lib/dataview/DataView#constructor|trampoline local.set $0
br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView>3 block $2of2
drop block $1of2
i32.const 0 block $outOfRange
global.get $~lib/argc
i32.const 1
i32.sub
br_table $1of2 $1of2 $2of2 $outOfRange
end end
unreachable
end
local.get $0
call $~lib/arraybuffer/ArrayBuffer#get:byteLength
local.set $1
end
local.get $0
local.get $1
call $~lib/dataview/DataView#constructor
call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array>
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -792,10 +796,10 @@
unreachable unreachable
end end
) )
(func $start (; 10 ;) (type $FUNCSIG$v) (func $start (; 11 ;) (type $FUNCSIG$v)
call $start:std/arraybuffer call $start:std/arraybuffer
) )
(func $null (; 11 ;) (type $FUNCSIG$v) (func $null (; 12 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -2,11 +2,11 @@
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32)))
(type $FUNCSIG$jj (func (param i64) (result i64))) (type $FUNCSIG$jj (func (param i64) (result i64)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$dii (func (param i32 i32) (result f64)))
(type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$jii (func (param i32 i32) (result i64)))
(type $FUNCSIG$vifi (func (param i32 f32 i32))) (type $FUNCSIG$vifi (func (param i32 f32 i32)))
@ -159,7 +159,13 @@
local.get $2 local.get $2
i32.store8 i32.store8
) )
(func $~lib/dataview/DataView#constructor (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=12
)
(func $~lib/dataview/DataView#constructor (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
local.get $2 local.get $2
i32.const 1073741808 i32.const 1073741808
@ -168,9 +174,7 @@
local.get $2 local.get $2
i32.add i32.add
local.get $0 local.get $0
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
i32.gt_u i32.gt_u
i32.or i32.or
if if
@ -209,7 +213,27 @@
i32.store offset=8 i32.store offset=8
local.get $3 local.get $3
) )
(func $~lib/dataview/DataView#getFloat32 (; 5 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load offset=4
local.get $0
i32.load
i32.sub
)
(func $~lib/polyfills/bswap<u32> (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const -16711936
i32.and
i32.const 8
i32.rotl
local.get $0
i32.const 16711935
i32.and
i32.const 8
i32.rotr
i32.or
)
(func $~lib/dataview/DataView#getFloat32 (; 8 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32)
local.get $1 local.get $1
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
@ -241,21 +265,11 @@
local.get $1 local.get $1
i32.add i32.add
i32.load i32.load
local.tee $0 call $~lib/polyfills/bswap<u32>
i32.const -16711936
i32.and
i32.const 8
i32.rotl
local.get $0
i32.const 16711935
i32.and
i32.const 8
i32.rotr
i32.or
f32.reinterpret_i32 f32.reinterpret_i32
end end
) )
(func $~lib/polyfills/bswap<u64> (; 6 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (func $~lib/polyfills/bswap<u64> (; 9 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64)
local.get $0 local.get $0
i64.const 8 i64.const 8
i64.shr_u i64.shr_u
@ -281,7 +295,7 @@
i64.const 32 i64.const 32
i64.rotr i64.rotr
) )
(func $~lib/dataview/DataView#getFloat64 (; 7 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (func $~lib/dataview/DataView#getFloat64 (; 10 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64)
i32.const 8 i32.const 8
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -307,7 +321,7 @@
f64.reinterpret_i64 f64.reinterpret_i64
end end
) )
(func $~lib/dataview/DataView#getInt8 (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/dataview/DataView#getInt8 (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -326,7 +340,20 @@
i32.add i32.add
i32.load8_s i32.load8_s
) )
(func $~lib/dataview/DataView#getInt16 (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/polyfills/bswap<i16> (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.shl
i32.const 24
i32.shr_s
i32.const 255
i32.and
local.get $0
i32.const 8
i32.shl
i32.or
)
(func $~lib/dataview/DataView#getInt16 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $1 local.get $1
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
@ -352,23 +379,15 @@
i32.load16_s i32.load16_s
local.set $0 local.set $0
local.get $2 local.get $2
if (result i32) i32.eqz
if
local.get $0 local.get $0
else call $~lib/polyfills/bswap<i16>
local.get $0 local.set $0
i32.const 16
i32.shl
i32.const 24
i32.shr_s
i32.const 255
i32.and
local.get $0
i32.const 8
i32.shl
i32.or
end end
local.get $0
) )
(func $~lib/dataview/DataView#getInt32 (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/dataview/DataView#getInt32 (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $1 local.get $1
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
@ -394,23 +413,15 @@
i32.load i32.load
local.set $0 local.set $0
local.get $2 local.get $2
if (result i32) i32.eqz
if
local.get $0 local.get $0
else call $~lib/polyfills/bswap<u32>
local.get $0 local.set $0
i32.const -16711936
i32.and
i32.const 8
i32.rotl
local.get $0
i32.const 16711935
i32.and
i32.const 8
i32.rotr
i32.or
end end
local.get $0
) )
(func $~lib/dataview/DataView#getInt64 (; 11 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (func $~lib/dataview/DataView#getInt64 (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64)
(local $2 i64) (local $2 i64)
i32.const 8 i32.const 8
local.get $0 local.get $0
@ -436,7 +447,7 @@
call $~lib/polyfills/bswap<u64> call $~lib/polyfills/bswap<u64>
end end
) )
(func $~lib/dataview/DataView#getUint8 (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/dataview/DataView#getUint8 (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -455,7 +466,18 @@
i32.add i32.add
i32.load8_u i32.load8_u
) )
(func $~lib/dataview/DataView#getUint16 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/polyfills/bswap<u16> (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 8
i32.shl
local.get $0
i32.const 65535
i32.and
i32.const 8
i32.shr_u
i32.or
)
(func $~lib/dataview/DataView#getUint16 (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $1 local.get $1
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
@ -481,21 +503,15 @@
i32.load16_u i32.load16_u
local.set $0 local.set $0
local.get $2 local.get $2
if (result i32) i32.eqz
if
local.get $0 local.get $0
else call $~lib/polyfills/bswap<u16>
local.get $0 local.set $0
i32.const 8
i32.shl
local.get $0
i32.const 65535
i32.and
i32.const 8
i32.shr_u
i32.or
end end
local.get $0
) )
(func $~lib/dataview/DataView#getUint32 (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/dataview/DataView#getUint32 (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $1 local.get $1
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
@ -521,23 +537,15 @@
i32.load i32.load
local.set $0 local.set $0
local.get $2 local.get $2
if (result i32) i32.eqz
if
local.get $0 local.get $0
else call $~lib/polyfills/bswap<u32>
local.get $0 local.set $0
i32.const -16711936
i32.and
i32.const 8
i32.rotl
local.get $0
i32.const 16711935
i32.and
i32.const 8
i32.rotr
i32.or
end end
local.get $0
) )
(func $~lib/dataview/DataView#getUint64 (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (func $~lib/dataview/DataView#getUint64 (; 20 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64)
(local $2 i64) (local $2 i64)
i32.const 8 i32.const 8
local.get $0 local.get $0
@ -563,7 +571,7 @@
call $~lib/polyfills/bswap<u64> call $~lib/polyfills/bswap<u64>
end end
) )
(func $~lib/dataview/DataView#setFloat32 (; 16 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (func $~lib/dataview/DataView#setFloat32 (; 21 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32)
i32.const 4 i32.const 4
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -587,21 +595,11 @@
i32.load offset=4 i32.load offset=4
local.get $1 local.get $1
i32.reinterpret_f32 i32.reinterpret_f32
local.tee $0 call $~lib/polyfills/bswap<u32>
i32.const -16711936
i32.and
i32.const 8
i32.rotl
local.get $0
i32.const 16711935
i32.and
i32.const 8
i32.rotr
i32.or
i32.store i32.store
end end
) )
(func $~lib/dataview/DataView#setFloat64 (; 17 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (func $~lib/dataview/DataView#setFloat64 (; 22 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32)
i32.const 8 i32.const 8
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -629,7 +627,7 @@
i64.store i64.store
end end
) )
(func $~lib/dataview/DataView#setInt8 (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/dataview/DataView#setInt8 (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -647,7 +645,7 @@
i32.const 108 i32.const 108
i32.store8 i32.store8
) )
(func $~lib/dataview/DataView#setInt16 (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/dataview/DataView#setInt16 (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
i32.const 2 i32.const 2
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -662,28 +660,16 @@
end end
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.set $0
local.get $2 local.get $2
i32.eqz if (result i32)
if
local.get $1 local.get $1
i32.const 16 else
i32.shl
i32.const 24
i32.shr_s
i32.const 255
i32.and
local.get $1 local.get $1
i32.const 8 call $~lib/polyfills/bswap<i16>
i32.shl
i32.or
local.set $1
end end
local.get $0
local.get $1
i32.store16 i32.store16
) )
(func $~lib/dataview/DataView#setInt32 (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/dataview/DataView#setInt32 (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
i32.const 4 i32.const 4
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -698,28 +684,16 @@
end end
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.set $0
local.get $2 local.get $2
i32.eqz if (result i32)
if
local.get $1 local.get $1
i32.const -16711936 else
i32.and
i32.const 8
i32.rotl
local.get $1 local.get $1
i32.const 16711935 call $~lib/polyfills/bswap<u32>
i32.and
i32.const 8
i32.rotr
i32.or
local.set $1
end end
local.get $0
local.get $1
i32.store i32.store
) )
(func $~lib/dataview/DataView#setInt64 (; 21 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (func $~lib/dataview/DataView#setInt64 (; 26 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
i32.const 8 i32.const 8
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -743,7 +717,7 @@
end end
i64.store i64.store
) )
(func $~lib/dataview/DataView#setUint8 (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/dataview/DataView#setUint8 (; 27 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -761,7 +735,7 @@
i32.const 238 i32.const 238
i32.store8 i32.store8
) )
(func $~lib/dataview/DataView#setUint16 (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/dataview/DataView#setUint16 (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
i32.const 2 i32.const 2
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -776,26 +750,16 @@
end end
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.set $0
local.get $2 local.get $2
i32.eqz if (result i32)
if
local.get $1 local.get $1
i32.const 8 else
i32.shl
local.get $1 local.get $1
i32.const 65535 call $~lib/polyfills/bswap<u16>
i32.and
i32.const 8
i32.shr_u
i32.or
local.set $1
end end
local.get $0
local.get $1
i32.store16 i32.store16
) )
(func $~lib/dataview/DataView#setUint32 (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/dataview/DataView#setUint32 (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
i32.const 4 i32.const 4
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -810,28 +774,16 @@
end end
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.set $0
local.get $2 local.get $2
i32.eqz if (result i32)
if
local.get $1 local.get $1
i32.const -16711936 else
i32.and
i32.const 8
i32.rotl
local.get $1 local.get $1
i32.const 16711935 call $~lib/polyfills/bswap<u32>
i32.and
i32.const 8
i32.rotr
i32.or
local.set $1
end end
local.get $0
local.get $1
i32.store i32.store
) )
(func $~lib/dataview/DataView#setUint64 (; 25 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (func $~lib/dataview/DataView#setUint64 (; 30 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
i32.const 8 i32.const 8
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -855,7 +807,7 @@
end end
i64.store i64.store
) )
(func $~lib/dataview/DataView#constructor|trampoline (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/dataview/DataView#constructor|trampoline (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
block $2of2 block $2of2
block $1of2 block $1of2
@ -868,9 +820,7 @@
unreachable unreachable
end end
local.get $0 local.get $0
i32.const 16 call $~lib/arraybuffer/ArrayBuffer#get:byteLength
i32.sub
i32.load offset=12
local.set $1 local.set $1
end end
local.get $0 local.get $0
@ -878,8 +828,7 @@
local.get $1 local.get $1
call $~lib/dataview/DataView#constructor call $~lib/dataview/DataView#constructor
) )
(func $start:std/dataview (; 27 ;) (type $FUNCSIG$v) (func $start:std/dataview (; 32 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 320 i32.const 320
global.set $~lib/rt/stub/startOffset global.set $~lib/rt/stub/startOffset
global.get $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset
@ -924,12 +873,8 @@
global.get $std/dataview/array global.get $std/dataview/array
i32.load i32.load
global.get $std/dataview/array global.get $std/dataview/array
local.tee $0 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset
i32.load offset=4 global.get $std/dataview/array
local.get $0
i32.load
i32.sub
local.get $0
i32.load offset=8 i32.load offset=8
call $~lib/dataview/DataView#constructor call $~lib/dataview/DataView#constructor
global.set $std/dataview/view global.set $std/dataview/view
@ -2414,11 +2359,7 @@
call $~lib/dataview/DataView#constructor|trampoline call $~lib/dataview/DataView#constructor|trampoline
global.set $std/dataview/view global.set $std/dataview/view
global.get $std/dataview/view global.get $std/dataview/view
local.tee $0 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset
i32.load offset=4
local.get $0
i32.load
i32.sub
if if
i32.const 0 i32.const 0
i32.const 288 i32.const 288
@ -2440,10 +2381,10 @@
unreachable unreachable
end end
) )
(func $start (; 28 ;) (type $FUNCSIG$v) (func $start (; 33 ;) (type $FUNCSIG$v)
call $start:std/dataview call $start:std/dataview
) )
(func $null (; 29 ;) (type $FUNCSIG$v) (func $null (; 34 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -178,15 +178,15 @@
unreachable unreachable
end end
global.get $std/date/date global.get $std/date/date
local.tee $0
global.get $std/date/creationTime global.get $std/date/creationTime
i64.const 1 i64.const 1
i64.add i64.add
local.tee $1
i64.store i64.store
local.get $0 global.get $std/date/date
i64.load i64.load
local.get $1 global.get $std/date/creationTime
i64.const 1
i64.add
i64.ne i64.ne
if if
i32.const 0 i32.const 0

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,12 @@
(module (module
(type $FUNCSIG$iddd (func (param f64 f64 f64) (result i32))) (type $FUNCSIG$iddd (func (param f64 f64 f64) (result i32)))
(type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
(type $FUNCSIG$id (func (param f64) (result i32)))
(type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$idd (func (param f64 f64) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$ifff (func (param f32 f32 f32) (result i32))) (type $FUNCSIG$ifff (func (param f32 f32 f32) (result i32)))
(type $FUNCSIG$fff (func (param f32 f32) (result f32))) (type $FUNCSIG$fff (func (param f32 f32) (result f32)))
(type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$iff (func (param f32 f32) (result i32))) (type $FUNCSIG$iff (func (param f32 f32) (result i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(import "math" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "math" "mod" (func $std/mod/mod (param f64 f64) (result f64)))
@ -14,7 +16,12 @@
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "mod" (func $std/mod/mod)) (export "mod" (func $std/mod/mod))
(start $start) (start $start)
(func $~lib/math/NativeMath.mod (; 2 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (func $~lib/builtins/isNaN<f64> (; 2 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $~lib/math/NativeMath.mod (; 3 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i64)
@ -59,8 +66,7 @@
i32.const 1 i32.const 1
else else
local.get $1 local.get $1
local.get $1 call $~lib/builtins/isNaN<f64>
f64.ne
end end
if if
local.get $0 local.get $0
@ -142,7 +148,7 @@
local.get $2 local.get $2
local.get $3 local.get $3
i64.ge_u i64.ge_u
if if (result i64)
local.get $2 local.get $2
local.get $3 local.get $3
i64.eq i64.eq
@ -150,9 +156,9 @@
local.get $2 local.get $2
local.get $3 local.get $3
i64.sub i64.sub
local.set $2 else
end
local.get $2 local.get $2
end
i64.const 1 i64.const 1
i64.shl i64.shl
local.set $2 local.set $2
@ -187,21 +193,21 @@
local.get $4 local.get $4
local.get $3 local.get $3
i64.sub i64.sub
local.tee $3 local.tee $4
i64.const 0 i64.const 0
i64.gt_s i64.gt_s
if (result i64) if (result i64)
local.get $2 local.get $2
i64.const 4503599627370496 i64.const 4503599627370496
i64.sub i64.sub
local.get $3 local.get $4
i64.const 52 i64.const 52
i64.shl i64.shl
i64.or i64.or
else else
local.get $2 local.get $2
i64.const 0 i64.const 0
local.get $3 local.get $4
i64.sub i64.sub
i64.const 1 i64.const 1
i64.add i64.add
@ -218,14 +224,12 @@
local.get $0 local.get $0
f64.mul f64.mul
) )
(func $std/mod/check<f64> (; 3 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (func $std/mod/check<f64> (; 4 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32)
local.get $1 local.get $1
local.get $1 call $~lib/builtins/isNaN<f64>
f64.ne
if if
local.get $0 local.get $0
local.get $0 call $~lib/builtins/isNaN<f64>
f64.ne
return return
end end
local.get $1 local.get $1
@ -245,7 +249,7 @@
local.get $1 local.get $1
f64.eq f64.eq
) )
(func $std/mod/test_fmod (; 4 ;) (type $FUNCSIG$iddd) (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (func $std/mod/test_fmod (; 5 ;) (type $FUNCSIG$iddd) (param $0 f64) (param $1 f64) (param $2 f64) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/math/NativeMath.mod call $~lib/math/NativeMath.mod
@ -261,7 +265,12 @@
i32.const 0 i32.const 0
end end
) )
(func $~lib/math/NativeMathf.mod (; 5 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (func $~lib/builtins/isNaN<f32> (; 6 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $~lib/math/NativeMathf.mod (; 7 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -304,8 +313,7 @@
i32.const 1 i32.const 1
else else
local.get $1 local.get $1
local.get $1 call $~lib/builtins/isNaN<f32>
f32.ne
end end
if if
local.get $0 local.get $0
@ -381,7 +389,7 @@
local.get $2 local.get $2
local.get $3 local.get $3
i32.ge_u i32.ge_u
if if (result i32)
local.get $2 local.get $2
local.get $3 local.get $3
i32.eq i32.eq
@ -389,9 +397,9 @@
local.get $2 local.get $2
local.get $3 local.get $3
i32.sub i32.sub
local.set $2 else
end
local.get $2 local.get $2
end
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $2 local.set $2
@ -426,21 +434,21 @@
local.get $4 local.get $4
local.get $3 local.get $3
i32.sub i32.sub
local.tee $3 local.tee $4
i32.const 0 i32.const 0
i32.gt_s i32.gt_s
if (result i32) if (result i32)
local.get $2 local.get $2
i32.const 8388608 i32.const 8388608
i32.sub i32.sub
local.get $3 local.get $4
i32.const 23 i32.const 23
i32.shl i32.shl
i32.or i32.or
else else
local.get $2 local.get $2
i32.const 1 i32.const 1
local.get $3 local.get $4
i32.sub i32.sub
i32.shr_u i32.shr_u
end end
@ -453,14 +461,12 @@
local.get $0 local.get $0
f32.mul f32.mul
) )
(func $std/mod/check<f32> (; 6 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (func $std/mod/check<f32> (; 8 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32)
local.get $1 local.get $1
local.get $1 call $~lib/builtins/isNaN<f32>
f32.ne
if if
local.get $0 local.get $0
local.get $0 call $~lib/builtins/isNaN<f32>
f32.ne
return return
end end
local.get $1 local.get $1
@ -480,14 +486,14 @@
local.get $1 local.get $1
f32.eq f32.eq
) )
(func $std/mod/test_fmodf (; 7 ;) (type $FUNCSIG$ifff) (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (func $std/mod/test_fmodf (; 9 ;) (type $FUNCSIG$ifff) (param $0 f32) (param $1 f32) (param $2 f32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/math/NativeMathf.mod call $~lib/math/NativeMathf.mod
local.get $2 local.get $2
call $std/mod/check<f32> call $std/mod/check<f32>
) )
(func $start:std/mod (; 8 ;) (type $FUNCSIG$v) (func $start:std/mod (; 10 ;) (type $FUNCSIG$v)
f64.const 3 f64.const 3
f64.const 2 f64.const 2
f64.const 1 f64.const 1
@ -2244,10 +2250,10 @@
unreachable unreachable
end end
) )
(func $start (; 9 ;) (type $FUNCSIG$v) (func $start (; 11 ;) (type $FUNCSIG$v)
call $start:std/mod call $start:std/mod
) )
(func $null (; 10 ;) (type $FUNCSIG$v) (func $null (; 12 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,9 +1,9 @@
(module (module
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d")
@ -86,7 +86,15 @@
i32.store offset=12 i32.store offset=12
local.get $3 local.get $3
) )
(func $~lib/util/string/compareImpl (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#get:length (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
)
(func $~lib/util/string/compareImpl (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
i32.const 24 i32.const 24
@ -122,7 +130,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/string/String.__eq (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String.__eq (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 24 i32.const 24
@ -138,16 +146,10 @@
select select
br_if $folding-inner0 br_if $folding-inner0
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
local.tee $1 local.tee $1
i32.const 20 i32.const 24
i32.load call $~lib/string/String#get:length
i32.const 1
i32.shr_u
i32.ne i32.ne
br_if $folding-inner0 br_if $folding-inner0
local.get $0 local.get $0
@ -158,7 +160,7 @@
end end
i32.const 0 i32.const 0
) )
(func $std/object-literal/bar (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $std/object-literal/bar (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
i32.load i32.load
i32.const 1 i32.const 1
@ -184,7 +186,7 @@
unreachable unreachable
end end
) )
(func $start:std/object-literal (; 5 ;) (type $FUNCSIG$v) (func $start:std/object-literal (; 6 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 112 i32.const 112
global.set $~lib/rt/stub/startOffset global.set $~lib/rt/stub/startOffset
@ -238,10 +240,10 @@
unreachable unreachable
end end
) )
(func $start (; 6 ;) (type $FUNCSIG$v) (func $start (; 7 ;) (type $FUNCSIG$v)
call $start:std/object-literal call $start:std/object-literal
) )
(func $null (; 7 ;) (type $FUNCSIG$v) (func $null (; 8 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -282,28 +282,6 @@
return return
end end
i32.const 1 i32.const 1
local.get $8
i32.const 2146435072
i32.gt_s
local.get $4
i32.const 2146435072
i32.gt_s
if (result i32)
i32.const 1
else
local.get $19
i32.const 0
i32.ne
i32.const 0
local.get $4
i32.const 2146435072
i32.eq
select
end
select
if (result i32)
i32.const 1
else
local.get $6 local.get $6
i32.const 0 i32.const 0
i32.ne i32.ne
@ -312,7 +290,25 @@
i32.const 2146435072 i32.const 2146435072
i32.eq i32.eq
select select
end i32.const 1
local.get $8
i32.const 2146435072
i32.gt_s
i32.const 1
local.get $19
i32.const 0
i32.ne
i32.const 0
local.get $4
i32.const 2146435072
i32.eq
select
local.get $4
i32.const 2146435072
i32.gt_s
select
select
select
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -576,44 +572,40 @@
i32.const 1072693247 i32.const 1072693247
i32.lt_s i32.lt_s
if if
local.get $7
f64.const 1.e+300
f64.mul
f64.const 1.e+300
f64.mul
local.get $7
f64.const 1e-300
f64.mul
f64.const 1e-300
f64.mul
local.get $9 local.get $9
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
if (result f64) select
local.get $7
f64.const 1.e+300
f64.mul
f64.const 1.e+300
f64.mul
else
local.get $7
f64.const 1e-300
f64.mul
f64.const 1e-300
f64.mul
end
return return
end end
local.get $4 local.get $4
i32.const 1072693248 i32.const 1072693248
i32.gt_s i32.gt_s
if if
local.get $7
f64.const 1.e+300
f64.mul
f64.const 1.e+300
f64.mul
local.get $7
f64.const 1e-300
f64.mul
f64.const 1e-300
f64.mul
local.get $9 local.get $9
i32.const 0 i32.const 0
i32.gt_s i32.gt_s
if (result f64) select
local.get $7
f64.const 1.e+300
f64.mul
f64.const 1.e+300
f64.mul
else
local.get $7
f64.const 1e-300
f64.mul
f64.const 1e-300
f64.mul
end
return return
end end
local.get $3 local.get $3
@ -934,7 +926,6 @@
i32.sub i32.sub
local.get $5 local.get $5
i32.or i32.or
br_if $folding-inner0
local.get $1 local.get $1
f64.const 8.008566259537294e-17 f64.const 8.008566259537294e-17
f64.add f64.add
@ -942,6 +933,7 @@
local.get $2 local.get $2
f64.sub f64.sub
f64.gt f64.gt
i32.or
br_if $folding-inner0 br_if $folding-inner0
else else
local.get $12 local.get $12
@ -955,12 +947,12 @@
i32.sub i32.sub
local.get $5 local.get $5
i32.or i32.or
br_if $folding-inner1
local.get $1 local.get $1
local.get $0 local.get $0
local.get $2 local.get $2
f64.sub f64.sub
f64.le f64.le
i32.or
br_if $folding-inner1 br_if $folding-inner1
end end
end end
@ -1167,7 +1159,39 @@
i32.trunc_f64_s i32.trunc_f64_s
call $std/operator-overloading/Tester#constructor call $std/operator-overloading/Tester#constructor
) )
(func $std/operator-overloading/TesterInlineStatic#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $std/operator-overloading/Tester.equals (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
i32.load
local.get $1
i32.load
i32.eq
if (result i32)
local.get $0
i32.load offset=4
local.get $1
i32.load offset=4
i32.eq
else
i32.const 0
end
)
(func $std/operator-overloading/Tester.notEquals (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
i32.load
local.get $1
i32.load
i32.ne
if (result i32)
local.get $0
i32.load offset=4
local.get $1
i32.load offset=4
i32.ne
else
i32.const 0
end
)
(func $std/operator-overloading/TesterInlineStatic#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
i32.const 4 i32.const 4
call $~lib/rt/stub/__alloc call $~lib/rt/stub/__alloc
@ -1179,7 +1203,7 @@
i32.store offset=4 i32.store offset=4
local.get $2 local.get $2
) )
(func $std/operator-overloading/TesterInlineInstance#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $std/operator-overloading/TesterInlineInstance#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
i32.const 5 i32.const 5
call $~lib/rt/stub/__alloc call $~lib/rt/stub/__alloc
@ -1191,7 +1215,7 @@
i32.store offset=4 i32.store offset=4
local.get $2 local.get $2
) )
(func $start:std/operator-overloading (; 8 ;) (type $FUNCSIG$v) (func $start:std/operator-overloading (; 10 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
i32.const 80 i32.const 80
@ -1581,21 +1605,8 @@
call $std/operator-overloading/Tester#constructor call $std/operator-overloading/Tester#constructor
global.set $std/operator-overloading/eq2 global.set $std/operator-overloading/eq2
global.get $std/operator-overloading/eq1 global.get $std/operator-overloading/eq1
local.tee $0
i32.load
global.get $std/operator-overloading/eq2 global.get $std/operator-overloading/eq2
local.tee $1 call $std/operator-overloading/Tester.equals
i32.load
i32.eq
if (result i32)
local.get $0
i32.load offset=4
local.get $1
i32.load offset=4
i32.eq
else
i32.const 0
end
global.set $std/operator-overloading/eq global.set $std/operator-overloading/eq
global.get $std/operator-overloading/eq global.get $std/operator-overloading/eq
i32.const 1 i32.const 1
@ -1617,21 +1628,8 @@
call $std/operator-overloading/Tester#constructor call $std/operator-overloading/Tester#constructor
global.set $std/operator-overloading/eq4 global.set $std/operator-overloading/eq4
global.get $std/operator-overloading/eq3 global.get $std/operator-overloading/eq3
local.tee $0
i32.load
global.get $std/operator-overloading/eq4 global.get $std/operator-overloading/eq4
local.tee $1 call $std/operator-overloading/Tester.equals
i32.load
i32.eq
if (result i32)
local.get $0
i32.load offset=4
local.get $1
i32.load offset=4
i32.eq
else
i32.const 0
end
global.set $std/operator-overloading/eqf global.set $std/operator-overloading/eqf
global.get $std/operator-overloading/eqf global.get $std/operator-overloading/eqf
if if
@ -1643,21 +1641,8 @@
unreachable unreachable
end end
global.get $std/operator-overloading/eq1 global.get $std/operator-overloading/eq1
local.tee $0
i32.load
global.get $std/operator-overloading/eq2 global.get $std/operator-overloading/eq2
local.tee $1 call $std/operator-overloading/Tester.notEquals
i32.load
i32.ne
if (result i32)
local.get $0
i32.load offset=4
local.get $1
i32.load offset=4
i32.ne
else
i32.const 0
end
global.set $std/operator-overloading/eq global.set $std/operator-overloading/eq
global.get $std/operator-overloading/eq global.get $std/operator-overloading/eq
if if
@ -1669,21 +1654,8 @@
unreachable unreachable
end end
global.get $std/operator-overloading/eq3 global.get $std/operator-overloading/eq3
local.tee $0
i32.load
global.get $std/operator-overloading/eq4 global.get $std/operator-overloading/eq4
local.tee $1 call $std/operator-overloading/Tester.notEquals
i32.load
i32.ne
if (result i32)
local.get $0
i32.load offset=4
local.get $1
i32.load offset=4
i32.ne
else
i32.const 0
end
global.set $std/operator-overloading/eqf global.set $std/operator-overloading/eqf
global.get $std/operator-overloading/eqf global.get $std/operator-overloading/eqf
i32.const 1 i32.const 1
@ -2404,10 +2376,10 @@
unreachable unreachable
end end
) )
(func $start (; 9 ;) (type $FUNCSIG$v) (func $start (; 11 ;) (type $FUNCSIG$v)
call $start:std/operator-overloading call $start:std/operator-overloading
) )
(func $null (; 10 ;) (type $FUNCSIG$v) (func $null (; 12 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,5 +1,7 @@
(module (module
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$viif (func (param i32 i32 f32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vii (func (param i32 i32)))
@ -14,7 +16,12 @@
(global $std/pointer/buf (mut i32) (i32.const 0)) (global $std/pointer/buf (mut i32) (i32.const 0))
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $~lib/memory/memory.fill (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) (func $std/pointer/Pointer<std/pointer/Entry>#dec (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 8
i32.sub
)
(func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
@ -58,7 +65,7 @@
i32.const 0 i32.const 0
i32.store8 i32.store8
) )
(func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -232,7 +239,16 @@
end end
end end
) )
(func $start:std/pointer (; 3 ;) (type $FUNCSIG$v) (func $std/pointer/Pointer<f32>#set (; 4 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32)
local.get $1
i32.const 2
i32.shl
local.get $0
i32.add
local.get $2
f32.store
)
(func $start:std/pointer (; 5 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
i32.const 8 i32.const 8
@ -262,13 +278,12 @@
unreachable unreachable
end end
global.get $std/pointer/one global.get $std/pointer/one
local.tee $0
i32.const 1 i32.const 1
i32.store i32.store
local.get $0 global.get $std/pointer/one
i32.const 2 i32.const 2
i32.store offset=4 i32.store offset=4
local.get $0 global.get $std/pointer/one
i32.load i32.load
i32.const 1 i32.const 1
i32.ne i32.ne
@ -338,10 +353,9 @@
i32.add i32.add
global.set $std/pointer/one global.set $std/pointer/one
global.get $std/pointer/one global.get $std/pointer/one
local.tee $0
global.set $std/pointer/nextOne global.set $std/pointer/nextOne
global.get $std/pointer/nextOne global.get $std/pointer/nextOne
local.get $0 global.get $std/pointer/one
i32.ne i32.ne
if if
i32.const 0 i32.const 0
@ -374,12 +388,10 @@
unreachable unreachable
end end
global.get $std/pointer/two global.get $std/pointer/two
i32.const 8 call $std/pointer/Pointer<std/pointer/Entry>#dec
i32.sub
global.set $std/pointer/two global.set $std/pointer/two
global.get $std/pointer/two global.get $std/pointer/two
i32.const 8 call $std/pointer/Pointer<std/pointer/Entry>#dec
i32.sub
global.set $std/pointer/two global.set $std/pointer/two
global.get $std/pointer/two global.get $std/pointer/two
i32.const 8 i32.const 8
@ -466,15 +478,14 @@
i32.const 0 i32.const 0
global.set $std/pointer/buf global.set $std/pointer/buf
global.get $std/pointer/buf global.get $std/pointer/buf
local.tee $0 i32.const 0
f32.const 1.100000023841858 f32.const 1.100000023841858
f32.store call $std/pointer/Pointer<f32>#set
local.get $0 global.get $std/pointer/buf
i32.const 4 i32.const 1
i32.add
f32.const 1.2000000476837158 f32.const 1.2000000476837158
f32.store call $std/pointer/Pointer<f32>#set
local.get $0 global.get $std/pointer/buf
f32.load f32.load
f32.const 1.100000023841858 f32.const 1.100000023841858
f32.ne f32.ne
@ -553,10 +564,11 @@
global.get $std/pointer/buf global.get $std/pointer/buf
i32.const 8 i32.const 8
i32.add i32.add
local.tee $0
f32.const 1.2999999523162842 f32.const 1.2999999523162842
f32.store f32.store
local.get $0 global.get $std/pointer/buf
i32.const 8
i32.add
f32.load f32.load
f32.const 1.2999999523162842 f32.const 1.2999999523162842
f32.ne f32.ne
@ -595,10 +607,9 @@
unreachable unreachable
end end
global.get $std/pointer/buf global.get $std/pointer/buf
local.tee $0
f32.const 1.399999976158142 f32.const 1.399999976158142
f32.store f32.store
local.get $0 global.get $std/pointer/buf
f32.load f32.load
f32.const 1.399999976158142 f32.const 1.399999976158142
f32.ne f32.ne
@ -623,10 +634,10 @@
unreachable unreachable
end end
) )
(func $start (; 4 ;) (type $FUNCSIG$v) (func $start (; 6 ;) (type $FUNCSIG$v)
call $start:std/pointer call $start:std/pointer
) )
(func $null (; 5 ;) (type $FUNCSIG$v) (func $null (; 7 ;) (type $FUNCSIG$v)
nop nop
) )
) )

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,15 @@
(global $std/string-utf8/ptr (mut i32) (i32.const 0)) (global $std/string-utf8/ptr (mut i32) (i32.const 0))
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $~lib/string/String#get:lengthUTF8 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
)
(func $~lib/string/String#get:lengthUTF8 (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -30,11 +38,7 @@
i32.const 1 i32.const 1
local.set $1 local.set $1
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
local.set $3 local.set $3
loop $continue|0 loop $continue|0
local.get $2 local.get $2
@ -124,7 +128,7 @@
end end
local.get $1 local.get $1
) )
(func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -198,7 +202,7 @@
i32.store offset=12 i32.store offset=12
local.get $3 local.get $3
) )
(func $~lib/string/String#toUTF8 (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#toUTF8 (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -212,18 +216,14 @@
call $~lib/rt/stub/__alloc call $~lib/rt/stub/__alloc
local.set $5 local.set $5
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
local.set $6 local.set $6
loop $continue|0 loop $continue|0
local.get $4 local.get $3
local.get $6 local.get $6
i32.lt_u i32.lt_u
if if
local.get $4 local.get $3
i32.const 1 i32.const 1
i32.shl i32.shl
local.get $0 local.get $0
@ -232,7 +232,7 @@
local.tee $1 local.tee $1
i32.const 128 i32.const 128
i32.lt_u i32.lt_u
if (result i32) if
local.get $2 local.get $2
local.get $5 local.get $5
i32.add i32.add
@ -241,22 +241,23 @@
local.get $2 local.get $2
i32.const 1 i32.const 1
i32.add i32.add
local.set $2
else else
local.get $1 local.get $1
i32.const 2048 i32.const 2048
i32.lt_u i32.lt_u
if (result i32) if
local.get $2 local.get $2
local.get $5 local.get $5
i32.add i32.add
local.tee $3 local.tee $4
local.get $1 local.get $1
i32.const 6 i32.const 6
i32.shr_u i32.shr_u
i32.const 192 i32.const 192
i32.or i32.or
i32.store8 i32.store8
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 63 i32.const 63
i32.and i32.and
@ -266,12 +267,13 @@
local.get $2 local.get $2
i32.const 2 i32.const 2
i32.add i32.add
local.set $2
else else
local.get $2 local.get $2
local.get $5 local.get $5
i32.add i32.add
local.set $3 local.set $4
local.get $4 local.get $3
i32.const 1 i32.const 1
i32.add i32.add
local.get $6 local.get $6
@ -284,7 +286,7 @@
i32.eq i32.eq
select select
if if
local.get $4 local.get $3
i32.const 1 i32.const 1
i32.add i32.add
i32.const 1 i32.const 1
@ -298,7 +300,7 @@
i32.const 56320 i32.const 56320
i32.eq i32.eq
if if
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 1023 i32.const 1023
i32.and i32.and
@ -316,7 +318,7 @@
i32.const 240 i32.const 240
i32.or i32.or
i32.store8 i32.store8
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 12 i32.const 12
i32.shr_u i32.shr_u
@ -325,7 +327,7 @@
i32.const 128 i32.const 128
i32.or i32.or
i32.store8 offset=1 i32.store8 offset=1
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 6 i32.const 6
i32.shr_u i32.shr_u
@ -334,7 +336,7 @@
i32.const 128 i32.const 128
i32.or i32.or
i32.store8 offset=2 i32.store8 offset=2
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 63 i32.const 63
i32.and i32.and
@ -345,21 +347,21 @@
i32.const 4 i32.const 4
i32.add i32.add
local.set $2 local.set $2
local.get $4 local.get $3
i32.const 2 i32.const 2
i32.add i32.add
local.set $4 local.set $3
br $continue|0 br $continue|0
end end
end end
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 12 i32.const 12
i32.shr_u i32.shr_u
i32.const 224 i32.const 224
i32.or i32.or
i32.store8 i32.store8
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 6 i32.const 6
i32.shr_u i32.shr_u
@ -368,7 +370,7 @@
i32.const 128 i32.const 128
i32.or i32.or
i32.store8 offset=1 i32.store8 offset=1
local.get $3 local.get $4
local.get $1 local.get $1
i32.const 63 i32.const 63
i32.and i32.and
@ -378,13 +380,13 @@
local.get $2 local.get $2
i32.const 3 i32.const 3
i32.add i32.add
end
end
local.set $2 local.set $2
local.get $4 end
end
local.get $3
i32.const 1 i32.const 1
i32.add i32.add
local.set $4 local.set $3
br $continue|0 br $continue|0
end end
end end
@ -395,7 +397,7 @@
i32.store8 i32.store8
local.get $5 local.get $5
) )
(func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
block $~lib/util/memory/memmove|inlined.0 block $~lib/util/memory/memmove|inlined.0
@ -568,7 +570,7 @@
end end
end end
) )
(func $~lib/string/String.fromUTF8 (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.fromUTF8 (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -820,7 +822,7 @@
call $~lib/memory/memory.copy call $~lib/memory/memory.copy
local.get $0 local.get $0
) )
(func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
loop $continue|0 loop $continue|0
local.get $2 local.get $2
@ -853,7 +855,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__eq (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -870,18 +872,10 @@
select select
br_if $folding-inner0 br_if $folding-inner0
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
local.tee $2 local.tee $2
local.get $1 local.get $1
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.ne i32.ne
br_if $folding-inner0 br_if $folding-inner0
local.get $0 local.get $0
@ -893,7 +887,7 @@
end end
i32.const 0 i32.const 0
) )
(func $start:std/string-utf8 (; 8 ;) (type $FUNCSIG$v) (func $start:std/string-utf8 (; 9 ;) (type $FUNCSIG$v)
global.get $std/string-utf8/str global.get $std/string-utf8/str
call $~lib/string/String#get:lengthUTF8 call $~lib/string/String#get:lengthUTF8
global.set $std/string-utf8/len global.set $std/string-utf8/len
@ -1138,10 +1132,10 @@
unreachable unreachable
end end
) )
(func $start (; 9 ;) (type $FUNCSIG$v) (func $start (; 10 ;) (type $FUNCSIG$v)
call $start:std/string-utf8 call $start:std/string-utf8
) )
(func $null (; 10 ;) (type $FUNCSIG$v) (func $null (; 11 ;) (type $FUNCSIG$v)
nop nop
) )
) )

File diff suppressed because it is too large Load Diff

View File

@ -305,3 +305,5 @@ export function getString(): string {
// Unleak globals // Unleak globals
__release(changetype<usize>(str)); __release(changetype<usize>(str));
@start export function main(): void {}

View File

@ -204,11 +204,12 @@
(global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0))
(global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16))
(global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284))
(global $~lib/started (mut i32) (i32.const 0))
(global $~lib/rt/RTTI_BASE i32 (i32.const 6944)) (global $~lib/rt/RTTI_BASE i32 (i32.const 6944))
(global $~lib/heap/HEAP_BASE i32 (i32.const 7012)) (global $~lib/heap/HEAP_BASE i32 (i32.const 7012))
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "getString" (func $std/string/getString)) (export "getString" (func $std/string/getString))
(start $start) (export "main" (func $std/string/main))
(func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 16 i32.const 16
@ -10746,10 +10747,19 @@
global.get $std/string/str global.get $std/string/str
call $~lib/rt/pure/__retain call $~lib/rt/pure/__retain
) )
(func $start (; 82 ;) (type $FUNCSIG$v) (func $std/string/main (; 82 ;) (type $FUNCSIG$v)
global.get $~lib/started
i32.eqz
if
call $start
i32.const 1
global.set $~lib/started
end
)
(func $start (; 83 ;) (type $FUNCSIG$v)
call $start:std/string call $start:std/string
) )
(func $~lib/rt/pure/markGray (; 83 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/markGray (; 84 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -10776,7 +10786,7 @@
call $~lib/rt/__visit_members call $~lib/rt/__visit_members
end end
) )
(func $~lib/rt/pure/scanBlack (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/scanBlack (; 85 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -10793,7 +10803,7 @@
i32.const 4 i32.const 4
call $~lib/rt/__visit_members call $~lib/rt/__visit_members
) )
(func $~lib/rt/pure/scan (; 85 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/scan (; 86 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -10830,7 +10840,7 @@
end end
end end
) )
(func $~lib/rt/pure/collectWhite (; 86 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/rt/pure/collectWhite (; 87 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -10859,7 +10869,7 @@
local.get $0 local.get $0
call $~lib/rt/tlsf/freeBlock call $~lib/rt/tlsf/freeBlock
) )
(func $~lib/rt/pure/__visit (; 87 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/rt/pure/__visit (; 88 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -11013,7 +11023,7 @@
end end
end end
) )
(func $~lib/array/Array<~lib/string/String>#__visit_impl (; 88 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -11049,19 +11059,19 @@
end end
end end
) )
(func $~lib/array/Array<i32>#__visit_impl (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<i32>#__visit_impl (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/array/Array<u32>#__visit_impl (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<u32>#__visit_impl (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/array/Array<u64>#__visit_impl (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<u64>#__visit_impl (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/array/Array<i16>#__visit_impl (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<i16>#__visit_impl (; 93 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/rt/__visit_members (; 93 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/rt/__visit_members (; 94 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $block$4$break block $block$4$break
block block
@ -11211,6 +11221,6 @@
end end
unreachable unreachable
) )
(func $null (; 94 ;) (type $FUNCSIG$v) (func $null (; 95 ;) (type $FUNCSIG$v)
) )
) )

View File

@ -50,7 +50,20 @@
(global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0))
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/symbol/Symbol (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
global.get $~lib/symbol/nextId
local.tee $0
i32.const 1
i32.add
global.set $~lib/symbol/nextId
local.get $0
i32.eqz
if
unreachable
end
local.get $0
)
(func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -124,7 +137,7 @@
i32.store offset=12 i32.store offset=12
local.get $3 local.get $3
) )
(func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -335,7 +348,7 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 1073741808 i32.const 1073741808
@ -356,7 +369,7 @@
call $~lib/memory/memory.fill call $~lib/memory/memory.fill
local.get $1 local.get $1
) )
(func $~lib/map/Map<~lib/string/String,usize>#clear (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/map/Map<~lib/string/String,usize>#clear (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
i32.load i32.load
drop drop
@ -384,7 +397,7 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/map/Map<~lib/string/String,usize>#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 6 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
i32.const 3 i32.const 3
@ -411,7 +424,7 @@
call $~lib/map/Map<~lib/string/String,usize>#clear call $~lib/map/Map<~lib/string/String,usize>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<usize,~lib/string/String>#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<usize,~lib/string/String>#constructor (; 7 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
i32.const 4 i32.const 4
@ -438,7 +451,15 @@
call $~lib/map/Map<~lib/string/String,usize>#clear call $~lib/map/Map<~lib/string/String,usize>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hashStr (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
)
(func $~lib/util/hash/hashStr (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -448,11 +469,7 @@
if if
block $break|0 block $break|0
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $3 local.set $3
@ -482,7 +499,7 @@
end end
local.get $1 local.get $1
) )
(func $~lib/util/string/compareImpl (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
loop $continue|0 loop $continue|0
local.get $2 local.get $2
@ -515,7 +532,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/string/String.__eq (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -532,18 +549,10 @@
select select
br_if $folding-inner0 br_if $folding-inner0
local.get $0 local.get $0
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
local.tee $2 local.tee $2
local.get $1 local.get $1
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.ne i32.ne
br_if $folding-inner0 br_if $folding-inner0
local.get $0 local.get $0
@ -555,7 +564,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<~lib/string/String,usize>#find (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<~lib/string/String,usize>#find (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -596,7 +605,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<~lib/string/String,usize>#rehash (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -703,7 +712,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<~lib/string/String,usize>#set (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<~lib/string/String,usize>#set (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -792,7 +801,7 @@
i32.store i32.store
end end
) )
(func $~lib/util/hash/hash32 (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/hash/hash32 (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 255 i32.const 255
i32.and i32.and
@ -823,7 +832,7 @@
i32.const 16777619 i32.const 16777619
i32.mul i32.mul
) )
(func $~lib/map/Map<usize,~lib/string/String>#find (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/map/Map<usize,~lib/string/String>#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -864,7 +873,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<usize,~lib/string/String>#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<usize,~lib/string/String>#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -971,7 +980,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<usize,~lib/string/String>#set (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<usize,~lib/string/String>#set (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -1064,7 +1073,7 @@
i32.store i32.store
end end
) )
(func $~lib/symbol/_Symbol.for (; 17 ;) (type $FUNCSIG$i) (result i32) (func $~lib/symbol/_Symbol.for (; 19 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
global.get $~lib/symbol/stringToId global.get $~lib/symbol/stringToId
if if
@ -1110,7 +1119,7 @@
call $~lib/map/Map<usize,~lib/string/String>#set call $~lib/map/Map<usize,~lib/string/String>#set
local.get $0 local.get $0
) )
(func $~lib/map/Map<usize,~lib/string/String>#has (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<usize,~lib/string/String>#has (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1119,7 +1128,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<usize,~lib/string/String>#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<usize,~lib/string/String>#get (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1133,7 +1142,7 @@
unreachable unreachable
end end
) )
(func $~lib/symbol/_Symbol.keyFor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/symbol/_Symbol.keyFor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
global.get $~lib/symbol/idToString global.get $~lib/symbol/idToString
if (result i32) if (result i32)
global.get $~lib/symbol/idToString global.get $~lib/symbol/idToString
@ -1150,7 +1159,7 @@
i32.const 0 i32.const 0
end end
) )
(func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
block $~lib/util/memory/memmove|inlined.0 block $~lib/util/memory/memmove|inlined.0
@ -1323,32 +1332,24 @@
end end
end end
) )
(func $~lib/string/String#concat (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#concat (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $0
call $~lib/string/String#get:length
i32.const 1
i32.shl
local.tee $3
local.get $1 local.get $1
i32.const 656 i32.const 656
local.get $1 local.get $1
select select
local.tee $1 local.tee $1
i32.const 16 call $~lib/string/String#get:length
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.const 1 i32.const 1
i32.shl i32.shl
local.tee $4 local.tee $4
local.get $0
i32.const 16
i32.sub
i32.load offset=12
i32.const 1
i32.shr_u
i32.const 1
i32.shl
local.tee $3
i32.add i32.add
local.tee $2 local.tee $2
i32.eqz i32.eqz
@ -1371,7 +1372,7 @@
call $~lib/memory/memory.copy call $~lib/memory/memory.copy
local.get $2 local.get $2
) )
(func $~lib/string/String.__concat (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.const 656 i32.const 656
local.get $0 local.get $0
@ -1379,7 +1380,7 @@
local.get $1 local.get $1
call $~lib/string/String#concat call $~lib/string/String#concat
) )
(func $~lib/symbol/_Symbol#toString (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/symbol/_Symbol#toString (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 624 i32.const 624
block $break|0 (result i32) block $break|0 (result i32)
block $case11|0 block $case11|0
@ -1462,31 +1463,12 @@
i32.const 680 i32.const 680
call $~lib/string/String.__concat call $~lib/string/String.__concat
) )
(func $start:std/symbol (; 25 ;) (type $FUNCSIG$v) (func $start:std/symbol (; 27 ;) (type $FUNCSIG$v)
(local $0 i32) i32.const 24
global.get $~lib/symbol/nextId call $~lib/symbol/Symbol
local.tee $0
i32.const 1
i32.add
global.set $~lib/symbol/nextId
local.get $0
i32.eqz
if
unreachable
end
local.get $0
global.set $std/symbol/sym1 global.set $std/symbol/sym1
global.get $~lib/symbol/nextId i32.const 24
local.tee $0 call $~lib/symbol/Symbol
i32.const 1
i32.add
global.set $~lib/symbol/nextId
local.get $0
i32.eqz
if
unreachable
end
local.get $0
global.set $std/symbol/sym2 global.set $std/symbol/sym2
global.get $std/symbol/sym1 global.get $std/symbol/sym1
global.get $std/symbol/sym2 global.get $std/symbol/sym2
@ -1572,17 +1554,8 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
global.get $~lib/symbol/nextId i32.const 0
local.tee $0 call $~lib/symbol/Symbol
i32.const 1
i32.add
global.set $~lib/symbol/nextId
local.get $0
i32.eqz
if
unreachable
end
local.get $0
call $~lib/symbol/_Symbol#toString call $~lib/symbol/_Symbol#toString
i32.const 704 i32.const 704
call $~lib/string/String.__eq call $~lib/string/String.__eq
@ -1639,10 +1612,10 @@
unreachable unreachable
end end
) )
(func $start (; 26 ;) (type $FUNCSIG$v) (func $start (; 28 ;) (type $FUNCSIG$v)
call $start:std/symbol call $start:std/symbol
) )
(func $null (; 27 ;) (type $FUNCSIG$v) (func $null (; 29 ;) (type $FUNCSIG$v)
nop nop
) )
) )

File diff suppressed because it is too large Load Diff

View File

@ -20,10 +20,10 @@
local.get $0 local.get $0
i32.const 2 i32.const 2
i32.eq i32.eq
br_if $case4|0
local.get $0 local.get $0
i32.const 3 i32.const 3
i32.eq i32.eq
i32.or
br_if $case4|0 br_if $case4|0
br $case2|0 br $case2|0
end end
@ -45,10 +45,10 @@
local.get $0 local.get $0
i32.const 2 i32.const 2
i32.eq i32.eq
br_if $case2|0
local.get $0 local.get $0
i32.const 3 i32.const 3
i32.eq i32.eq
i32.or
br_if $case2|0 br_if $case2|0
br $break|0 br $break|0
end end
@ -60,7 +60,27 @@
end end
i32.const 0 i32.const 0
) )
(func $start:switch (; 3 ;) (type $FUNCSIG$v) (func $switch/doSwitchBreakCase (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 1
i32.ne
if
i32.const 2
return
end
i32.const 1
)
(func $switch/doSwitchBreakDefault (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 1
i32.eq
if
i32.const 1
return
end
i32.const 2
)
(func $start:switch (; 5 ;) (type $FUNCSIG$v)
i32.const 0 i32.const 0
call $switch/doSwitch call $switch/doSwitch
if if
@ -229,11 +249,155 @@
call $~lib/builtins/abort call $~lib/builtins/abort
unreachable unreachable
end end
i32.const 0
call $switch/doSwitchBreakCase
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 51
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchBreakCase
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 52
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchBreakCase
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 53
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchBreakDefault
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 62
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchBreakDefault
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 63
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchBreakDefault
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 64
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchBreakCase
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 73
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchBreakCase
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 74
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchBreakCase
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 75
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchBreakDefault
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 84
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchBreakDefault
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 85
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchBreakDefault
i32.const 2
i32.ne
if
i32.const 0
i32.const 24
i32.const 86
i32.const 0
call $~lib/builtins/abort
unreachable
end
) )
(func $start (; 4 ;) (type $FUNCSIG$v) (func $start (; 6 ;) (type $FUNCSIG$v)
call $start:switch call $start:switch
) )
(func $null (; 5 ;) (type $FUNCSIG$v) (func $null (; 7 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -8,10 +8,10 @@
(export "memory" (memory $0)) (export "memory" (memory $0))
(start $start) (start $start)
(func $start:unary (; 0 ;) (type $FUNCSIG$v) (func $start:unary (; 0 ;) (type $FUNCSIG$v)
(local $0 f32) (local $0 i32)
(local $1 f64) (local $1 i64)
(local $2 i32) (local $2 f32)
(local $3 i64) (local $3 f64)
global.get $unary/i global.get $unary/i
i32.const 1 i32.const 1
i32.add i32.add
@ -56,18 +56,18 @@
i32.sub i32.sub
global.set $unary/i global.set $unary/i
global.get $unary/i global.get $unary/i
local.tee $2 local.tee $0
i32.const 1 i32.const 1
i32.add i32.add
global.set $unary/i global.set $unary/i
local.get $2 local.get $0
global.set $unary/i global.set $unary/i
global.get $unary/i global.get $unary/i
local.tee $2 local.tee $0
i32.const 1 i32.const 1
i32.sub i32.sub
global.set $unary/i global.set $unary/i
local.get $2 local.get $0
global.set $unary/i global.set $unary/i
global.get $unary/I global.get $unary/I
i64.const 1 i64.const 1
@ -114,18 +114,18 @@
i64.sub i64.sub
global.set $unary/I global.set $unary/I
global.get $unary/I global.get $unary/I
local.tee $3 local.tee $1
i64.const 1 i64.const 1
i64.add i64.add
global.set $unary/I global.set $unary/I
local.get $3 local.get $1
global.set $unary/I global.set $unary/I
global.get $unary/I global.get $unary/I
local.tee $3 local.tee $1
i64.const 1 i64.const 1
i64.sub i64.sub
global.set $unary/I global.set $unary/I
local.get $3 local.get $1
global.set $unary/I global.set $unary/I
global.get $unary/f global.get $unary/f
f32.const 1 f32.const 1
@ -153,11 +153,10 @@
f32.neg f32.neg
global.set $unary/f global.set $unary/f
global.get $unary/f global.get $unary/f
local.tee $0
f32.const 0 f32.const 0
f32.eq f32.eq
global.set $unary/i global.set $unary/i
local.get $0 global.get $unary/f
f32.const 1 f32.const 1
f32.add f32.add
global.set $unary/f global.set $unary/f
@ -166,18 +165,18 @@
f32.sub f32.sub
global.set $unary/f global.set $unary/f
global.get $unary/f global.get $unary/f
local.tee $0 local.tee $2
f32.const 1 f32.const 1
f32.add f32.add
global.set $unary/f global.set $unary/f
local.get $0 local.get $2
global.set $unary/f global.set $unary/f
global.get $unary/f global.get $unary/f
local.tee $0 local.tee $2
f32.const 1 f32.const 1
f32.sub f32.sub
global.set $unary/f global.set $unary/f
local.get $0 local.get $2
global.set $unary/f global.set $unary/f
global.get $unary/F global.get $unary/F
f64.const 1 f64.const 1
@ -205,12 +204,11 @@
f64.neg f64.neg
global.set $unary/F global.set $unary/F
global.get $unary/F global.get $unary/F
local.tee $1
f64.const 0 f64.const 0
f64.eq f64.eq
i64.extend_i32_u i64.extend_i32_u
global.set $unary/I global.set $unary/I
local.get $1 global.get $unary/F
f64.const 1 f64.const 1
f64.add f64.add
global.set $unary/F global.set $unary/F
@ -219,18 +217,18 @@
f64.sub f64.sub
global.set $unary/F global.set $unary/F
global.get $unary/F global.get $unary/F
local.tee $1 local.tee $3
f64.const 1 f64.const 1
f64.add f64.add
global.set $unary/F global.set $unary/F
local.get $1 local.get $3
global.set $unary/F global.set $unary/F
global.get $unary/F global.get $unary/F
local.tee $1 local.tee $3
f64.const 1 f64.const 1
f64.sub f64.sub
global.set $unary/F global.set $unary/F
local.get $1 local.get $3
global.set $unary/F global.set $unary/F
) )
(func $start (; 1 ;) (type $FUNCSIG$v) (func $start (; 1 ;) (type $FUNCSIG$v)